我有一个电子表格,它使用外部插件来更新单元格中的值。请注意,单元格不会更改,只会更新值。
我希望每次更新单元格时都运行一个宏。
要模拟问题:
> < li>
创建空的excel表格
在单元格A1中添加公式“=rand()”
在VBA中,为sheet1添加宏,此处为简化版本:
私有子工作表_Change(ByVal Target As Range) If目标。Address = "$A$1 "然后单元格(1,3)。Value = "函数已更新"结束If
末端接头
但是,当我随后按 F9(更新随机数)时,工作表无法将其识别为工作表更改,因此不会运行宏。例如,当我更新的工作表中的随机数时,如何使宏运行?
我解决这个问题的方法是设置一个指向有问题的单元格的全局变量(双精度),如下所示:
Global clvalue As Double
然后有一个工作簿打开事件,它将变量设置为单元格值,如下所示:
Private Sub Workbook_Open()
clvalue = Round(Sheet1.Range("C5").Value, 2)
End Sub
工作表计算事件用于将全局变量与新单元格值进行比较和重置,如下所示:
Private Sub Worksheet_Calculate()
If Sheet1.Range("C5").Value <> clvalue Then
Debug.Print clvalue
clvalue = Sheet1.Range("C5").Value
Debug.Print "New Global Variable is now " & clvalue
End If
End Sub