VBA – 单元格值= 1时打开一个msgbox

我需要一个非常基本的vbamacros的帮助。 当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得到的,所以它不能被用户手动插入,对此我感到抱歉。 我尝试了你们人们回答的代码,它在我手动inputvlue的时候就起作用了,正如我在编辑开始所说的那样,这个值是用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中更改的单元格。 所以对于每一个变化事件,我检查目标是否是范围(“A6”)。

关于陈述: 我需要它提示一次 ,你需要保存旧值。 因此,当您将该值设置为1时,只会显示一次提示。如果A6已经是1,然后再次input1,则不提示。


 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事件内部,只有按下单元格“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 

我忘记了一件非常重要的事情,值“1”是用VLOOKUP得到的,所以用户不能手动插入,我很抱歉。 我尝试了你们人们回答的代码,它在我手动inputvlue的时候就起作用了,正如我在编辑开始所说的那样,这个值是用VLOOKUP设置的。 还有其他的提示吗?