Dear thầy.
- Chỉ giúp em code : làm thế nào khi ta chọn danh sách Tên hàng (trong Combobox) thì Ô textbox sẽ tự động nhảy đơn vị tương ứng ạ. (Bài tập thực hành Chương 13)
- Em cảm ơn thầy ạ.
Bạn có thể lập trình trong sự kiện cb_TenHang_Change(), trong đó:
- Để tìm đơn vị tính theo tên hàng được chọn thì bạn dùng 1 trong 2 cách:
Cách 1: Dùng hàm vlookup trong VBA
tb_DVT.Value = Application.WorksheetFunction.VLOOKUP(cb_TenHang, bảng danh mục, thứ tự cột đvt, 0)
cách viết theo dạng Range trong VBA: ví dụ bảng danh mục ở Sheet DanhMuc, vùng B2:D20 thì viết Sheets("DanhMuc").Range("B2:D20")
Cách 2: bạn xác định vị trí dòng của tên hàng được chọn với hàm MATCH trong VBA
Dim SoDong as Long
SoDong = Application.WorksheetFunction.MATCH(cb_TenHang, Sheets("DanhMuc").Range("B1:B200"), 0)
Sau khi xác định được số dòng rồi thì bạn dùng OFFSET trong VBA để lấy giá trị tương ứng trên cùng dòng, khác cột:
tb_DVT.Value = Sheets("DanhMuc").Range("B" & SoDong).Offset(0, 1).Value
trong đó chú ý là có thể có lỗi với hàm vlookup, match => cần thêm lệnh bẫy lỗi để bỏ qua các lỗi có thể phát sinh (như lỗi giá trị combobox tenhang là ô trống, hoặc không tìm thấy tên hàng trong bảng). Cách bẫy lỗi bạn xem trong chương 12 nhé.