簡體   English   中英

VBA - 當單元格值= 1時打開一個msgbox

[英]VBA - Open a msgbox when cell value = 1

我需要一個非常基本的vba宏的幫助。 當A6中的值等於1時,msgbox需要出現在工作站中。 我開發了下面的代碼,但問題是,當我在電子表格中添加任何其他信息時(例如,如果我在B6中寫“我愛披薩”)msgbox將再次提示我需要它只提示一次,只是當我設定A6 = 1的值時,你能幫幫我嗎?

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("A6").Value = 1 Then
    MsgBox "THIS IS A MSGBOX."
End If

End Sub

@edit我忘記了一個非常重要的事情......使用VLOOKUP獲取值“1”因此不會被用戶手動插入,對此我很抱歉。 我嘗試了人們回答的代碼,當我手動輸入vlue時它正常工作,正如我在編輯開始時說的那樣,值是用VLOOKUP設置的。 還有其他提示嗎?

您需要檢查更改是否是由於單元格A6被更改而不是更改的單元格。 嘗試這個:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 And Target.Row = 6 Then
    If Target.Value = 1 Then
      MsgBox "THIS IS A MSGBOX."
    End If
  End If
End Sub

您可以使用此代碼而不是上一代碼

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Me.Range("A6").Address And Me.Range("A6").Value = 1 Then
        MsgBox "THIS IS A MSGBOX."
    End If
End Sub

目標是Excel中已更改的單元格。 因此,對於每個更改事件,我檢查目標是否為Range(“A6”)。

與陳述有關: 我需要它只提示一次 ,你需要保存舊值。 因此,當您將值設置為1時,提示僅顯示一次。如果A6已經為1,然后再次鍵入1,則不顯示提示。


Option Explicit

Dim oldVal
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Address = "$A$6") Then
        If Target.Value = 1 And Target.Value <> oldVal Then
            oldVal = Target.Value
            MsgBox "Test"
        End If
    End If
End Sub

您需要檢查Worksheet_Change事件內部,只有按下Cell“A6”,然后繼續。 然后,檢查單元格的值是否等於1。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A6")) Is Nothing Then
    If Target.Value = 1 Then MsgBox "THIS IS A MSGBOX."
End If

End Sub

嘗試這個:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$6" Then
        If Target.Value = 1 Then
            MsgBox "THIS IS A MSGBOX."
        End If
    End If    
End Sub

我忘記了一個非常重要的事情......使用VLOOKUP獲取值“1”因此不會被用戶手動插入,我很抱歉。 我嘗試了人們回答的代碼,當我手動輸入vlue時它正常工作,正如我在編輯開始時說的那樣,值是用VLOOKUP設置的。 還有其他提示嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM