[英]Run macro when linked cell changes value (Excel VBA)
我目前正在嘗試獲取有關積壓如何發展的歷史信息。
我的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)
我希望你能幫幫我
根據Worksheet_Change
的MSDN條目:
在重新計算期間更改單元格時不會發生此事件。 使用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
的值並檢查立即窗口中的輸出。
您可以調整此代碼以調用我的Debug.Print...
語句所在的KPIupdate
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.