我在此链接后找到了很多关于我的问题的答案: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
再次抱歉打开另一个问题,但正如我所说,我无法评论另一个问题。
答案 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