更改事件而不是调用宏Excel Vba

时间:2018-05-16 20:49:35

标签: excel-vba vba excel

我在目标栏中有一系列值。
一旦该范围中的任何值发生变化,就应该调用一个宏。 我调用的宏工作但我的更改事件没有被识别。我的代码有问题吗?

我的更改偶数宏位于发生更改事件的工作表上:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$H$5:$H$32" Then
        Call SetAxes
    End If
End Sub

我是否需要更具体的范围地址?

3 个答案:

答案 0 :(得分:1)

If Not Application.Intersect(Target, Range("$H$5:$H$32")) Is Nothing Then 只有在整个范围一次变化时才会为True。

要捕获对该范围内的一个或多个单元格的更改,请使用Application.Intersect,如下所示:

{{1}}

答案 1 :(得分:0)

我只是使用worksheet_calculate并在工作表上发生任何变化时调用该函数 它调用的所有宏都设置了轴,所以我不介意它是否重复运行。

Private Sub Worksheet_Calculate()

        Call SetAxes

End Sub

答案 2 :(得分:0)

作为解决方法,您可以添加一个函数:

Function FakeChange() As Integer
SetAxes
FakeChange = 0
End Function

并在“$ H $ 5:$ H $ 32”+ Fakechange()中添加公式 喜欢:='你的公式'+ FakeChange()

当公式的结果发生变化时,将触发此功能