2014-09-12 114 views
0

正如標題所暗示的,我希望每當用戶更改「摘要」工作表(單元格H10)中的值時,都會運行特定宏(PopulateCalculatorWithWeekChosen)。更改單元格的值以觸發宏

我發現了下面的問題和答案並嘗試了它,但似乎沒有觸發它。難道我理解正確的話,我把下面的代碼...

Trigger event when select from dropdown

Sub PopulateCalculatorWithWeekChosen() 

If Target.Address = "$H$10" Then 
With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
    .Calculation = xlCalculationManual 
End With 

[代碼在PopulateCalculatorWithWeekChosen宏觀休息]

With Application 
    .EnableEvents = True 
    .ScreenUpdating = True 
    .Calculation = xlCalculationAutomatic 
End With 
End If 
End Sub 

...在正確的地方? 它似乎沒有做任何事情。預先感謝您的幫助。

回答

0

問題是您已經定義了一個宏,並且您參考的問題是使用Worksheet_Change事件。在你的VBA代碼中,你應該有一個包含Change事件的Worksheet對象。事件只是一個特定事情發生時觸發的函數。 在這種情況下,只要工作表被修改,觸發功能Worksheet_Change。你應該有這樣的事情:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$H$10" Then 

     With Application 
     .EnableEvents = False 
     .ScreenUpdating = False 
     .Calculation = xlCalculationManual 
     End With 

     With Application 
     .EnableEvents = True 
     .ScreenUpdating = True 
     .Calculation = xlCalculationAutomatic 
     End With 

    End If 

End Sub 

當您修改表,Excel會自動調用這個函數,並告訴你進行了修改,其細胞通過提供在Target參數信息。

+0

謝謝;你能解釋一下這是什麼嗎? (ByVal Target As Range) – james9487 2014-09-12 21:19:44

+0

括號中的所有內容都描述了傳遞給函數的參數。在這種情況下,我們有一個名爲Target的參數。它被傳遞的價​​值(而不是通過引用......如果這對你沒有意義,不要擔心它,這在事物的宏偉計劃中並不重要)。它是Range的類型。所以當你修改工作表時,Excel會在後臺調用這個函數。當它調用函數時,它提供了可以在函數內部使用的有用信息;有用的信息是被修改的單元格的範圍。 – 2014-09-12 21:26:40

+0

啊,好的。所以我需要將原始代碼從模塊移動到彙總表中?我確實嘗試過,在上面的代碼的With語句中彈出一個測試MsgBox,它工作。但是,它仍然沒有運行我的宏代碼,會玩弄它。 – james9487 2014-09-12 21:44:56

相關問題