链接单元格更改值时运行宏(Excel VBA)

时间:2016-11-22 12:32:57

标签: excel vba excel-vba macros

我目前正在尝试获取有关积压如何发展的历史信息。

我的Excel文件基于来自Access数据库的查询,可以让我查看当前情况。

我希望每次周数更改时自动运行宏。我目前正在使用以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("D3")) Is Nothing Then
        Call KPIupdate
    End If
End Sub

应该触发的宏称为KPIupdate

我的问题是,如果单击该单元格,宏仅会触发。我希望它只是在数字改变时触发。单元格“D3”链接到另一个单元格,其中公式= Weeknum(Today(); 21)

我希望你能帮助我

1 个答案:

答案 0 :(得分:2)

根据Worksheet_Change的{​​{3}}条目:

  

在重新计算过程中更改单元格时不会发生此事件。使用Calculate事件来捕获工作表重新计算。

要使用Worksheet_Calculate来捕获由查看另一个单元格的公式设置的单元格中的更改,您需要设置一个变量来保存'目标'然后在Calculate事件触发后检查它是否已更改。

这是一个简单的例子:

Option Explicit

Private strCurrentWeek As String

Private Sub Worksheet_Calculate()
    If Me.Range("A1").Value <> strCurrentWeek Then
        'the linked cell changed
        Debug.Print "Sheet1!A1 was changed"
        'call another macro
    End If
    'update the new current week
    strCurrentWeek = Me.Range("A1").Value
End Sub

要对此进行测试,只需将A1中的公式设置为=B1,然后更改B1的值并检查立即窗口中的输出。

您可以调整此代码以调用KPIupdate语句所在的Debug.Print...