满足条件时,不会运行特定于表单的宏

时间:2017-01-12 00:23:27

标签: excel vba excel-vba

我有一个非常简单的工作簿宏用于测试,并且在满足条件时它没有执行。你知道为什么吗?宏已启用且模块正在运行,但是,表单代码不起作用。知道为什么吗?

Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$J$3" Then
        Call macro1
    End If
End Sub

然后我尝试了

if A1 = "correct!"
    msgbox "hey"
else <do nothing>

如果我在单元格J3中调整任何内容或放置&#34;正确!&#34;在该表中的A1中,两个代码都不会执行。 macro1的代码只是msgbox "Hey"。知道我能做什么吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我使用了Workbook_SheetChange,它对我有用:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name = "Sheet1" And Target.Address = "$J$3" Then
        Call macro1
    End If
End Sub

Sub macro1()
    MsgBox "hello world!"
End Sub

答案 1 :(得分:0)

我希望我能正确理解你的帖子,你希望一旦你在Cell J3的工作表中修改一个值,并且Cell A1(在同一个工作表中)的值是“正确!”,那就是{{弹出“嘿”的1}}。

MsgBox事件中的代码很好,只需修改Worksheet_Change中的代码(可以放在另一个代码模块中)。

macro1

选项2 :使用Like运算符

Sub macro1()

If Range("A1").Value = "correct!" Then
    MsgBox "hey"
End If

End Sub