VBA:未定义变量

时间:2016-05-26 14:53:40

标签: vba excel-vba excel

我正在尝试在下面的代码中使用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定义为变量,但也没有解决它。

这里会出现什么问题?

1 个答案:

答案 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