Mình có cái tài liệu hướng dẫn VBA tự viết, anh chị em có quan tâm có thể download về đọc để hiểu hơn về VBA. docs.google.com/document/d/1kB7-eE1njcSYRLmjWVSpYs419WVzcvpn/edit?usp=sharing&ouid=103819819166561746327&rtpof=true&sd=true
Thầy cho e hỏi, với danh sách rất nhiều mà muốn cập nhập 1 tên bất kỳ trong danh sách đó, mà giờ đi tìm thủ công thì rất lâu ạ, thầy cho e xin code tìm tên mà mình muốn chỉnh sửa , sau đó ấn cập nhập là xong ý ạ, e cảm ơn thầy
thầy cho em hỏi. Làm thế nào để nhập và hiển thị tiếng việt có dấu vào textbox được vậy ạ? em google không ra nhưng vô tình thấy bài của thầy khi nhập vào lại không bị lỗi?
mình viết 100% giống bạn khi đến đoạn listbox mouse up thì báo lỗi ở 2 combo box giới tính và lớp khi mình .text cho nó. Thậm chí mình down code của bạn về áp vào vẫn bị lỗi tương tự, bạn có thể xem giúp mình vấn đề này không?
Thầy có thể tư vấn hướng dẫn e làm 1 file quản lý hồ sơ công việc bàn giao, tiếp nhận, tim kiếm, báo cáo số liệu, số ngày trễ hẹn của từng đơn vị cơ quan xử lý được k ạ. cảm ơn thầy😃😃😃
Cái này thì nó thành 1 cái mini app rồi. Cần phân tích nghiệp vụ yêu cầu trước rồi xây dựng các mẫu biểu dữ liệu để từ đó mới code giao diện. Hiện tại bạn đã bắt đầu triển khai bước nào rồi
Vậy bạn cần kiểm tra xem đã khai báo biến vị trí vt ở trên đầu khung code chưa. Rất có thể thiếu mất nó nên luôn luôn nhận giá trị là 0 nên nó luôn xoá dòng đầu tiên
@@buitientruong1982 dạ em đã sửa được ròi nha. Anh ơi cho em hỏi thêm là VBA nó ko so sánh text box được ạ? em bị lỗi là em so sánh giá trị trong ô textbox > 100 nhưg dù e có nhập giá trị nào thì vba nó cũng báo đúng . Em chuyển qua ghi giá trị ô textbox đó lên ô của excel và so sánh ô excel đó thì hệ thống mới chạy đúng đc. Vậy đây là lỗi gì ạ?
Mình có cái list ở bên dưới rồi, làm thêm mấy nút di chuyển thì kể ra cũng hơi thừa đấy. chứ mấy nút đó thì cũng đơn giản mà. bạn cứ quan tâm đến cái biến vt để thay đổi là ok thôi.
2.5.2. Dùng Offset kết hợp COUNTA để tạo Range động Khi ta sử dụng 1 danh sách thường là danh sách tĩnh, tuy nhiên đối với 1 số trường hợp thì danh sách có thể thay đổi (tăng thêm hoặc giảm đi) thì khi đó địa chỉ vùng chọn sẽ không còn chính xác nữa. Ta thường sử dụng lệnh này khi muốn tạo các bảng dữ liệu động được tạo bằng lệnh(tab Formulas / Name Manager). Ta có thể ứng dụng để tạo các List chọn dữ liệu trong chức năng Data Validation, khi đó mục Source là Do vậy để tạo 1 range động tùy theo số dòng có dữ liệu thì ta sử dụng Offset kết hợp CountA theo cú pháp: = OFFSET (Reference, Row , Col , RowCount , ColumnCount) + Reference: được biểu diễn dưới dạng tên bảng và theo sau là dấu chấm than, và địa chỉ của ô có chứa mục đầu tiên có mặt trong trong dải (đã được đặt tên). Hãy lưu ý việc sử dụng các tham chiếu ô tuyệt đối ($), ví dụ Sheet1! $A$1. + Các tham số Row and Col đều là 0, vì không có các cột hoặc các hàng được thêm vào. nếu có dòng tiêu đề thì Row là 1. + RowCount là tổng số lượng dòng. Trường hợp này ta sử dụng hàm COUNTA để tính toán số ô có chứa dữ liệu. Ngoài ra, cần lưu ý rằng trong tham số của COUNTA, ta nên chỉ định tên bảng bên cạnh tên cột, ví dụ: COUNTA (Sheet_Name!$A: $A). + ColumnCount: là tổng số cột của bảng dữ liệu. Ví dụ: = OFFSET (Sheet_Name! $A$1, 1, 0, COUNTA (Sheet_Name! $A:$A), 10)
bạn tham khảo tài liệu tự học này thêm nhé. docs.google.com/document/d/1kB7-eE1njcSYRLmjWVSpYs419WVzcvpn/edit?usp=sharing&ouid=103819819166561746327&rtpof=true&sd=true
Private Sub timkiem_Change() Dim arr(), kq(), i As Long, a As Long, dk As String Dim colCount As Long Dim j As Long dk = UCase(timkiem.Text) 'gap dk cho text nhap vao o tim kiem arr = Sheets("ThanhToan").Range("A1:Z" & Sheets("ThanhToan").Cells(Rows.Count, "A").End(xlUp).Row).value 'gan arr = sheet chua du lieu colCount = UBound(arr, 2) ' S? lu?ng c?t trong m?ng arr ReDim kq(1 To UBound(arr, 1), 1 To colCount) '21 cot du lieu For i = 1 To UBound(arr, 1) 'so sanh ten khach hang voi tu khoa nhap vao - Ucase: de tao ky tu in hoa For j = 1 To colCount If UCase(arr(i, j)) Like "*" & dk & "*" Then a = a + 1 For k = 1 To colCount kq(a, k) = arr(i, k) Next k Exit For ' Thoát kh?i vòng l?p khi tìm th?y k?t qu? End If Next j Next i ListBox1 = "" ListBox1.Clear ListBox1.List = kq 'Gan tro lai listbox End Sub
thay đổi tên Sheets("ThanhToan") thay đổi textbox tìm kiếm: timkiem.Text Vùng dữ liệu: Sheets("ThanhToan").Range("A1:Z" & Sheets("ThanhToan").Cells(Rows.Count, "A").End(xlUp).Row).value *** có thể tìm kiếm bất cứ nội dung, ký tự trực tiếp ở bất cứ cột nào.
Cảm ơn thầy ạ!
Rất là bổ ích , cảm ơn thầy , cứ làm xong. Rồi xoá viết lại từ đầu dần dần sẽ thành cái tư duy luôn 🎉
Thích cái phong cách của anh. Mong anh ra thêm nhiều video hay ho hơn nữa
Cảm ơn Thầy Trường về chia sẻ 😃
cám ơn anh rất nhiều
Cảm ơn bác
Tuyệt vời quá. Thanks Add
Mình có cái tài liệu hướng dẫn VBA tự viết, anh chị em có quan tâm có thể download về đọc để hiểu hơn về VBA. docs.google.com/document/d/1kB7-eE1njcSYRLmjWVSpYs419WVzcvpn/edit?usp=sharing&ouid=103819819166561746327&rtpof=true&sd=true
cảm ơn nhiều nhiều
Anh cho hỏi khi mà em thêm danh sách dài quá màn hình, làm sao để khi click vào phím thêm sẽ hiện luôn dòng cuối vừa nhập được ạ
Bạn chỉ cần đưa lệnh chọn dòng cuối của danh sách là được. vd: lstDanhSach.Selected(lstDanhSach.ListCount - 1) = True
Mình đã làm video 2 hướng dẫn cách chèn hình ảnh và tìm kiếm dữ liệu rồi nhé. th-cam.com/video/onKTPPUGoPs/w-d-xo.html
Quá đẹp trai
Thầy cho e hỏi, với danh sách rất nhiều mà muốn cập nhập 1 tên bất kỳ trong danh sách đó, mà giờ đi tìm thủ công thì rất lâu ạ, thầy cho e xin code tìm tên mà mình muốn chỉnh sửa , sau đó ấn cập nhập là xong ý ạ, e cảm ơn thầy
thầy cho em hỏi. Làm thế nào để nhập và hiển thị tiếng việt có dấu vào textbox được vậy ạ? em google không ra nhưng vô tình thấy bài của thầy khi nhập vào lại không bị lỗi?
mình viết 100% giống bạn khi đến đoạn listbox mouse up thì báo lỗi ở 2 combo box giới tính và lớp khi mình .text cho nó. Thậm chí mình down code của bạn về áp vào vẫn bị lỗi tương tự, bạn có thể xem giúp mình vấn đề này không?
Thầy có thể cho em xin code copy dòng được chọn và paste sang dòng cuối sheet 3 trc khi xoá toàn bộ trong sheet1 ở nút xoá hs đc k ạ
mình muốn học VBA xin được liên hệ
Thầy có thể tư vấn hướng dẫn e làm 1 file quản lý hồ sơ công việc bàn giao, tiếp nhận, tim kiếm, báo cáo số liệu, số ngày trễ hẹn của từng đơn vị cơ quan xử lý được k ạ. cảm ơn thầy😃😃😃
Cái này thì nó thành 1 cái mini app rồi. Cần phân tích nghiệp vụ yêu cầu trước rồi xây dựng các mẫu biểu dữ liệu để từ đó mới code giao diện. Hiện tại bạn đã bắt đầu triển khai bước nào rồi
@@buitientruong1982 hiện tại e chỉ nhập file exl làm thủ công thôi à thầy
@@buitientruong1982 có cách nào trao đổi để hướng dẫn không k thầy
Anh ơi.
Lệnh cmdxoatrang á
Sao em không xoá được cbo
Combo là 1 dạng list. nếu list là các giá trị thì có thể xóa bằng phương thức clear, nhưng nếu là dữ liệu Source thì sẽ không xóa đưược.
chỗ xoá anh có thể chỉ lại được ko vì em viết code thì thành ra nó ko xoá cái dòng mình chọn mà cứ xoá từ trên xuống dưới
Vậy bạn cần kiểm tra xem đã khai báo biến vị trí vt ở trên đầu khung code chưa. Rất có thể thiếu mất nó nên luôn luôn nhận giá trị là 0 nên nó luôn xoá dòng đầu tiên
@@buitientruong1982 dạ em đã sửa được ròi nha. Anh ơi cho em hỏi thêm là VBA nó ko so sánh text box được ạ? em bị lỗi là em so sánh giá trị trong ô textbox > 100 nhưg dù e có nhập giá trị nào thì vba nó cũng báo đúng . Em chuyển qua ghi giá trị ô textbox đó lên ô của excel và so sánh ô excel đó thì hệ thống mới chạy đúng đc. Vậy đây là lỗi gì ạ?
Anh ơi còn nút di chuyển đầu trước sau cuối nữa hi
Mình có cái list ở bên dưới rồi, làm thêm mấy nút di chuyển thì kể ra cũng hơi thừa đấy. chứ mấy nút đó thì cũng đơn giản mà. bạn cứ quan tâm đến cái biến vt để thay đổi là ok thôi.
Mình chạy win 64bit thì APILOAD phải cập nhật sao ạ thầy
Cho mình hỏi VBA hiện bạn viết Win 32 giờ mình chạy Win 64 thì làm sao
về cơ bản thì các lệnh giống nhau. tuy nhiên khi khai báo API Declare thì bạn nên thêm lệnh PtrSafe khi khai báo là được thôi.
bạn ơi có thể giúp mình được ko
@@buitientruong1982
Cho cai công thức của formulas tbldanhsach, mờ quá e làm lỗi ngay từ đó, nên đến khúc sau ko làm dc
2.5.2. Dùng Offset kết hợp COUNTA để tạo Range động
Khi ta sử dụng 1 danh sách thường là danh sách tĩnh, tuy nhiên đối với 1 số trường hợp thì danh sách có thể thay đổi (tăng thêm hoặc giảm đi) thì khi đó địa chỉ vùng chọn sẽ không còn chính xác nữa.
Ta thường sử dụng lệnh này khi muốn tạo các bảng dữ liệu động được tạo bằng lệnh(tab Formulas / Name Manager). Ta có thể ứng dụng để tạo các List chọn dữ liệu trong chức năng Data Validation, khi đó mục Source là
Do vậy để tạo 1 range động tùy theo số dòng có dữ liệu thì ta sử dụng Offset kết hợp CountA theo cú pháp:
= OFFSET (Reference, Row , Col , RowCount , ColumnCount)
+ Reference: được biểu diễn dưới dạng tên bảng và theo sau là dấu chấm than, và địa chỉ của ô có chứa mục đầu tiên có mặt trong trong dải (đã được đặt tên). Hãy lưu ý việc sử dụng các tham chiếu ô tuyệt đối ($), ví dụ Sheet1! $A$1.
+ Các tham số Row and Col đều là 0, vì không có các cột hoặc các hàng được thêm vào. nếu có dòng tiêu đề thì Row là 1.
+ RowCount là tổng số lượng dòng. Trường hợp này ta sử dụng hàm COUNTA để tính toán số ô có chứa dữ liệu. Ngoài ra, cần lưu ý rằng trong tham số của COUNTA, ta nên chỉ định tên bảng bên cạnh tên cột, ví dụ: COUNTA (Sheet_Name!$A: $A).
+ ColumnCount: là tổng số cột của bảng dữ liệu.
Ví dụ:
= OFFSET (Sheet_Name! $A$1, 1, 0, COUNTA (Sheet_Name! $A:$A), 10)
bạn tham khảo tài liệu tự học này thêm nhé. docs.google.com/document/d/1kB7-eE1njcSYRLmjWVSpYs419WVzcvpn/edit?usp=sharing&ouid=103819819166561746327&rtpof=true&sd=true
@@buitientruong1982 e làm code tìm kiếm nhưng khi tìm kiếm họ và tên ví dụ như nguyễn thị thanh nhưng lại chỉ hiện nguyễn thi thanh vân
Anh cho em hỏi, em muốn thêm nút tìm kiếm theo mã sinh viên thì viết như thế nào ạ
Private Sub timkiem_Change()
Dim arr(), kq(), i As Long, a As Long, dk As String
Dim colCount As Long
Dim j As Long
dk = UCase(timkiem.Text) 'gap dk cho text nhap vao o tim kiem
arr = Sheets("ThanhToan").Range("A1:Z" & Sheets("ThanhToan").Cells(Rows.Count, "A").End(xlUp).Row).value 'gan arr = sheet chua du lieu
colCount = UBound(arr, 2) ' S? lu?ng c?t trong m?ng arr
ReDim kq(1 To UBound(arr, 1), 1 To colCount) '21 cot du lieu
For i = 1 To UBound(arr, 1)
'so sanh ten khach hang voi tu khoa nhap vao - Ucase: de tao ky tu in hoa
For j = 1 To colCount
If UCase(arr(i, j)) Like "*" & dk & "*" Then
a = a + 1
For k = 1 To colCount
kq(a, k) = arr(i, k)
Next k
Exit For ' Thoát kh?i vòng l?p khi tìm th?y k?t qu?
End If
Next j
Next i
ListBox1 = ""
ListBox1.Clear
ListBox1.List = kq 'Gan tro lai listbox
End Sub
thay đổi tên Sheets("ThanhToan")
thay đổi textbox tìm kiếm: timkiem.Text
Vùng dữ liệu: Sheets("ThanhToan").Range("A1:Z" & Sheets("ThanhToan").Cells(Rows.Count, "A").End(xlUp).Row).value
***
có thể tìm kiếm bất cứ nội dung, ký tự trực tiếp ở bất cứ cột nào.
Add cho xin file code ưược ko ạ?
Cho tôi xin file này để thực hành với dc không?
drive.google.com/file/d/1EZlUjvayuV2cIxhQ4ML7xjsCPOnsqpaT/view?usp=sharing
@@buitientruong1982 làm xong rồi nhưng nó không xóa ở sheet mình cần mà lại xóa ở sheet khác. (Phải làm thế nào nhỉ? admin)
|b|soluong.Caption= istdanhsach.listcount-1 . dòng này là sao vậy ạ
dòng này giúp hiển thị số lượng các dòng đang có trong Listbox. Hiểu nôm na là thống kê tổng số dòng (số đối tượng) đang hiển thị trên Listbox.