VBA嵌套IF语句

Jon*_*ght 3 excel vba excel-vba nested-if

当特定单元格中包含特定值时,我想显示一个消息框.我用以下代码完成了这个;

If Range("P8") = "Y" Then
        MsgBox "Message here"
End If
Run Code Online (Sandbox Code Playgroud)

这是在Worksheet_Changesub中,因此每次另一个单元格值更改时都会显示消息框.我试图通过添加一个布尔变量来解决这个问题,当第一次显示消息框时设置为true;

If Range("P8") = "Y" Then
    If messageshown = False Then
        messageshown = True
        MsgBox "Message here"
    Else
    End If
Else
End If
Run Code Online (Sandbox Code Playgroud)

但是,每次更改工作表中的单元格时,仍会显示消息框.我有一种感觉它'; s到与我写的嵌套if语句,但尝试了各种不同的方式和在那里我下订单的方式做elseend if,但无济于事.

Sam*_*Sam 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
Run Code Online (Sandbox Code Playgroud)