提问者:小点点

当单元格更新时运行VBA宏-不是由用户或其他宏


我有一个电子表格,它使用外部插件来更新单元格中的值。请注意,单元格不会更改,只会更新值。

我希望每次更新单元格时都运行一个宏。

要模拟问题:

> < li>

创建空的excel表格

在单元格A1中添加公式“=rand()”

在VBA中,为sheet1添加宏,此处为简化版本:

私有子工作表_Change(ByVal Target As Range) If目标。Address = "$A$1 "然后单元格(1,3)。Value = "函数已更新"结束If

末端接头

但是,当我随后按 F9(更新随机数)时,工作表无法将其识别为工作表更改,因此不会运行宏。例如,当我更新的工作表中的随机数时,如何使宏运行?


共1个答案

匿名用户

我解决这个问题的方法是设置一个指向有问题的单元格的全局变量(双精度),如下所示:

    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