VBA 嵌套 IF 语句
VBA Nested IF statement
我想在特定单元格中有特定值时显示消息框。我使用以下代码完成了此操作;
If Range("P8") = "Y" Then
MsgBox "Message here"
End If
这是在 Worksheet_Change
子中,因此每次另一个单元格值更改时都会显示消息框。我试图通过添加一个布尔变量来解决这个问题,当第一次显示消息框时将其设置为 true;
If Range("P8") = "Y" Then
If messageshown = False Then
messageshown = True
MsgBox "Message here"
Else
End If
Else
End If
但是,每次我更改工作表中的单元格时,消息框仍然显示。我有一种感觉,这与我编写嵌套 if 语句的方式有关,但尝试了各种不同的方式和顺序来放置 else
和 end if
但无济于事。
试试这个代码,它首先检查哪个单元格被更改,如果不是 P8,它不会弹出消息框。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P" Then
If Range("P8") = "Y" Then
MsgBox "This works"
End If
End If
End Sub
正如 Macro Man 所指出的,有一个更优化、更有效的选择。
改为使用 Target
参数 - 这是指正在更改的实际单元格,这是您感兴趣的内容。测试 Target
的地址以查看它是否是您需要的单元格然后采取相应行动。这将在更改另一个单元格时停止显示消息。
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$P" And .Value = "Y" Then MsgBox "Message here"
End With
End Sub
我想在特定单元格中有特定值时显示消息框。我使用以下代码完成了此操作;
If Range("P8") = "Y" Then
MsgBox "Message here"
End If
这是在 Worksheet_Change
子中,因此每次另一个单元格值更改时都会显示消息框。我试图通过添加一个布尔变量来解决这个问题,当第一次显示消息框时将其设置为 true;
If Range("P8") = "Y" Then
If messageshown = False Then
messageshown = True
MsgBox "Message here"
Else
End If
Else
End If
但是,每次我更改工作表中的单元格时,消息框仍然显示。我有一种感觉,这与我编写嵌套 if 语句的方式有关,但尝试了各种不同的方式和顺序来放置 else
和 end if
但无济于事。
试试这个代码,它首先检查哪个单元格被更改,如果不是 P8,它不会弹出消息框。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P" Then
If Range("P8") = "Y" Then
MsgBox "This works"
End If
End If
End Sub
正如 Macro Man 所指出的,有一个更优化、更有效的选择。
改为使用 Target
参数 - 这是指正在更改的实际单元格,这是您感兴趣的内容。测试 Target
的地址以查看它是否是您需要的单元格然后采取相应行动。这将在更改另一个单元格时停止显示消息。
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$P" And .Value = "Y" Then MsgBox "Message here"
End With
End Sub