繁体   English   中英

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语句的方式有关,但我已经尝试了各种不同的方式和命令,我放置elseend 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM