Mike thường xuyên sử dụng hàm VLOOKUP trong các trang tính của mình, nhưng tự hỏi liệu có cách nào để làm cho hàm chạy macro nếu nó không trả về giá trị.

Có một số cách bạn có thể tiếp cận vấn đề này. Trước tiên, bạn có thể sử dụng công thức có điều kiện để xác định xem hàm VLOOKUP sẽ trả về giá trị hay lỗi. Nếu nó sẽ trả về lỗi, thì bạn có thể để công thức chạy một hàm do người dùng định nghĩa (MyUDF), như được hiển thị ở đây:

=IF(ISERROR(VLOOKUP(B2,CODES,1,FALSE)),MyUDF(), VLOOKUP(B2,CODES,1,FALSE))

Tất cả những gì bạn cần làm là đảm bảo rằng bạn đặt mã VLOOKUP thực của mình vào công thức (hai lần) và thay thế MyUDF bằng tên của hàm do người dùng xác định mà bạn muốn kích hoạt.

Một cách tiếp cận khác là thiết lập một trình xử lý sự kiện cho sự kiện Tính toán.

Điều này có thể khá đơn giản, như sau:

Private Sub Worksheet_Calculate()

If IsError(Range("A1")) Then Call Macro1 End Sub

Ví dụ này giả định rằng công thức VLOOKUP nằm trong ô A1 và bạn muốn chạy macro có tên Macro1 nếu hàm VLOOKUP trả về lỗi. Macro của bạn sau đó có thể làm bất cứ điều gì bạn cần. Cũng nên nhớ rằng trình xử lý sự kiện Tính toán phải được đặt trong đối tượng ThisWorksheet.

Bạn cũng có thể làm cho trình xử lý sự kiện Tính mạnh mẽ hơn một chút, như được hiển thị ở đây:

Private Sub Worksheet_Calculate()

On Error GoTo myMac     Worksheets(1).Select     If Range("A1").Value Then         Exit Sub     End If myMac:

Macro1   'macro to run if VLOOKUP fails End Sub

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (10107) áp dụng cho Microsoft Excel 2007 và 2010. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: