我希望在特定单元格中包含特定值时显示消息框。我用以下代码完成了这个;
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
,但无济于事。
答案 0 :(得分:6)
使用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
答案 1 :(得分:4)
试试这段代码,首先检查哪个单元格被更改,如果它不是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所指出的,有一个更优化,更有效的选择。