单元格更改未触发VBA宏

时间:2018-10-11 16:59:58

标签: excel vba macos

我正在尝试使用以下VBA宏在单元格中输入特定字符时更改其内容。

Sub replaceWords()
    Dim i As Long
    Dim r As Integer

        For i = 1 To 60
            For r = 1 To 60
                If Cells(i, r).Value = "`" Then
                Cells(i, r).Value = "0,0"
                End If
            Next r
        Next i
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("A1:AA100")) Is Nothing Then
        Application.EnableEvents = False
            Call replaceWords
        Application.EnableEvents = True
    End If
End Sub

我的理解是Worksheet_Change应该自动执行此操作,但似乎不起作用-我必须手动运行宏。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

代码尚不清楚,但是请通过转到项目资源管理器(Ctrl-R)并右键单击有问题的工作表并选择“查看代码”,来确保Worksheet_ChangeWorksheet对象中。将worksheet_change模块放入其中。

答案 1 :(得分:0)

确保该功能在工作表的模块中。如果仍然不起作用,请检查Application.EnableEvents是否设置为True

在代码进行更改时,将该值设置为false。如果您的代码在重置为True之前已被中断,则不会触发事件驱动的子对象。

在正常退出的地方添加一些错误处理并将EnableEvents重置为True通常是一个好主意。