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

时间:2017-03-10 19:37:57

标签: excel vba excel-vba msgbox

我需要一个非常基本的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设置的。还有其他任何提示吗?

6 个答案:

答案 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设置的。还有其他任何提示吗?