![](/img/trans.png)
[英]Is there a vba code which opens a msgbox when cell value is not equal to “X”?
[英]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.