我正在尝试在下面的代码中使用IIF函数,但它给出了一个Compile错误,指出“Variable [is] not defined”。它突出了第五行代码中的“零”:
Option Explicit
Sub macro()
Dim ws As Worksheet
With ThisWorkbook.Worksheets("Sheet1")
MsgBox IIf(ws.Range("A1") = 0, “Zero”, “Nonzero”)
End With
End Sub
我不知道为什么它会拉这个错误,因为我认为不需要定义单元格的范围。我也尝试将Range定义为变量,但也没有解决它。
这里会出现什么问题?
答案 0 :(得分:3)
因为您缺少设置ws
所以它必须是ThisWorkbook.Worksheets("Sheet1")
本身,所以就这样:
Option Explicit
Sub macro()
With ThisWorkbook.Worksheets("Sheet1")
MsgBox IIf(.Range("A1") = 0, "Zero", "Nonzero") '<~~ '.Range("A1")' implies that the object following the 'With' keyword is assumed to be just before the dot
End With
或者它必须是不同的表格,然后像这样:
Option Explicit
Sub macro()
Dim ws As Worksheet
set ws =ThisWorkbook.Worksheets("Sheet2") '<~~ set the "new" worksheet
With ThisWorkbook.Worksheets("Sheet1")
MsgBox IIf(ws.Range("A1") = 0, "Zero", "Nonzero")
End With
End Sub