簡體   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