我目前正在尝试获取有关积压如何发展的历史信息。
我的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)
我希望你能帮助我
答案 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...
。