مایک به طور منظم از VLOOKUP در کاربرگ های خود استفاده می کند، اما به این فکر می کند که آیا راهی برای اجرای ماکرو تابع در صورت عدم بازگشت مقدار وجود دارد یا خیر.
چند راه وجود دارد که می توانید با این مشکل برخورد کنید. ابتدا، می توانید از یک فرمول شرطی برای تعیین اینکه آیا VLOOKUP یک مقدار یا یک خطا را برمی گرداند استفاده کنید. اگر خطایی را برگرداند، می توانید فرمول را یک تابع تعریف شده توسط کاربر (MyUDF) اجرا کنید، همانطور که در اینجا نشان داده شده است:
=IF(ISERROR(VLOOKUP(B2,CODES,1,FALSE)),MyUDF(),VLOOKUP(B2,CODES,1,FALSE))
تنها کاری که باید انجام دهید این است که مطمئن شوید کد VLOOKUP واقعی خود را در فرمول قرار داده اید (دو بار) و نام تابع تعریف شده توسط کاربر را که می خواهید راه اندازی کنید جایگزین MyUDF کنید.
روش دیگر این است که یک رویداد کنترل کننده برای رویداد Calculate راه اندازی کنید. این می تواند بسیار ساده باشد، مانند موارد زیر:
Private Sub Worksheet_Calculate()
If IsError(Range("A1")) Then Call Macro1
End Sub
این مثال فرض می کند که فرمول VLOOKUP در سلول A1 است و اگر VLOOKUP خطایی را برگرداند، می خواهید یک ماکرو به نام Macro1 اجرا کنید. پس از آن ماکرو شما می تواند هر کاری را که شما نیاز دارید انجام دهد. همچنین به یاد داشته باشید که کنترل کننده رویداد Calculate باید در شی ThisWorksheet قرار گیرد.
همانطور که در اینجا نشان داده شده است، می توانید کنترل کننده رویداد Calculate را کمی قوی تر کنید:
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