更改单元格时,excel VBA会自动运行宏

时间:2016-06-28 17:49:49

标签: excel vba excel-vba

我在此链接后找到了很多关于我的问题的答案:automatically execute an Excel macro on a cell change

我打开一个新问题的原因是因为我没有足够的声誉来评论该主题,而且我很难将我的链接单元格连接到我想要运行的宏。

因此,链接的单元格包含一个公式,只有在我更改其他单元格时才会更改值。我遇到的问题是,只有在我更改单元格的值而不是公式的值时,我的宏才会运行。我正在寻找一种方法来在公式返回的值发生变化时激活宏。

到目前为止,这是我的代码:

我的细胞范围命名为"值"我想隐藏标签"刷新"

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Me.Range("Values")) Is Nothing Then Exit Sub
        Application.EnableEvents = False 'to prevent endless loop

        Sheet1.Refresh.Visible = False

        Application.EnableEvents = True
End Sub

再次抱歉打开另一个问题,但正如我所说,我无法评论另一个问题。

1 个答案:

答案 0 :(得分:2)

使用此代码。它将值存储在工作表上作为最后一行\列的单元格中。您需要手动将值存储一次,但之后它会在每次更改时为您存储它,以便下次计算工作表时检查(并且公式结果可能会更改)。

Private Sub Worksheet_Calculate()

Dim bOld as Byte
bOld = Me.Cells(Me.Rows.Count,Me.Columns.Count)

If Me.Range("Values") <> bOld Then 

    Application.EnableEvents = False 'to prevent endless loop
    Me.Cells(Me.Rows.Count,Me.Columns.Count).Value = Me.Range("Values").Value 'store new value
    Sheet1.Refresh.Visible = False
    Application.EnableEvents = True

End If

End Sub