Chào thầy
Em bị gặp vấn đề với lệnh IF
Nếu em k sử dụng Else thì text box e sẽ trả về đúng kết quả.
Khi thêm lệnh else thì trả về kết quả của else hết "nhap ten hang"
Mong thầy hỗ trợ ạ.
Ở đây bạn cần xét lại logic kiểm tra tên hàng.
Nếu tên hàng có trong danh mục hàng hóa, vùng A3:A8 thì sẽ có đơn vị tính, còn không thì đưa ra cảnh báo.
=> bạn kiểm tra theo hàm COUNTIF dạng:
IF Application.WorksheetFunction.COUNTIF(Sheet1.Range("A3:A8"), cbb_TenHang) = 0 Then
Txt_dvt = "nhap ten hang"
Else
On Error Resume Next
Txt_dvt = Application.WorksheetFunction.VLOOKUP(cbb_TenHang, Sheet1.Range("A3:C8"), 2, 0)
On Error Goto 0
End If
Ở đây không nên dùng vòng lặp. Nếu dùng vòng lặp thì phải dùng dạng Do While chứ không phải For Each. Bởi dạng vòng lặp For sẽ chạy hết toàn bộ vòng lặp mới thoát ra, còn Do While khi đúng rồi sẽ thoát ra ngay, không chạy tiếp.
Với cách sử dụng hàm VLOOKUP thì giống excel thôi, sẽ không liên quan gì tới vòng lặp.
Lệnh On Error để tránh các lỗi có thể xảy ra với hàm VLOOKUP (như không có dữ liệu) => bỏ qua các lỗi này để tránh gián đoạn code (lỗi này không nghiêm trọng, không ảnh hưởng tới kết quả).