[英]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
但是无济于事。
请使用Target
参数 - 这是指您要感兴趣的实际单元格更改。测试Target
地址以查看它是否是您需要的单元格,然后相应地执行操作。 这将停止显示另一个单元格更改时的消息。
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$P$8" And .Value = "Y" Then MsgBox "Message here"
End With
End Sub
尝试这个代码,它首先检查哪个单元格被更改,如果它不是P8,它将不会弹出消息框。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P$8" Then
If Range("P8") = "Y" Then
MsgBox "This works"
End If
End If
End Sub
正如Macro Man所指出的,有一个更优化,更有效的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.