Mike经常在工作表中使用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

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3891)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: