我需要一个非常基本的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 我忘记了一个非常重要的事情......价值" 1"使用VLOOKUP,因此不会被用户手动插入,对此我很抱歉。我尝试了人们回答的代码,当我手动输入vlue时它正常工作,正如我在编辑开始时说的那样,值是用VLOOKUP设置的。还有其他任何提示吗?
答案 0 :(得分:2)
您需要检查更改是否是由于单元格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
答案 1 :(得分:2)
您可以使用此代码而不是之前的代码
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")。
答案 2 :(得分:2)
与声明有关:我只需提示一次,您需要保存旧值。因此,当您将值设置为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
答案 3 :(得分:1)
您需要检查Worksheet_Change
事件内部,仅当Cell&#34; A6&#34;按下,然后继续。然后,检查单元格的值是否等于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
答案 4 :(得分:1)
试试这个:
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
答案 5 :(得分:0)
我忘记了一个非常重要的事情......价值&#34; 1&#34;使用VLOOKUP,因此不会被用户手动插入,对此我很抱歉。我尝试了人们回答的代码,当我手动输入vlue时它正常工作,正如我在编辑开始时说的那样,值是用VLOOKUP设置的。还有其他任何提示吗?