簡體   English   中英

鏈接單元格更改值時運行宏(Excel VBA)

[英]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_ChangeMSDN條目:

在重新計算期間更改單元格時不會發生此事件。 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM