2016-11-14 291 views
0

當工作表打開時,在宏下面運行。問題在於,無論何時我更改單元格中的值或執行任何事件,宏都會再次啓動。如何預防它?VBA只運行宏一次

Private Sub Worksheet_Calculate() 
Application.EnableEvents = False 
Dim i As Long 

i = Application.WorksheetFunction.CountIf(Range([W2], Cells(Rows.Count, "W").End(xlUp)), "tak") 
Worksheets("Arkusz1").Range("AZ1").Value = i 
If Worksheets("Arkusz1").Range("AZ1").Value > 0 Then 
MsgBox "Sa " & i & " wózki do przeglądu" 
Else 
MsgBox "Nie ma wózków do przeglądu" 
End If 
Application.EnableEvents = True 
End Sub 

回答

6

有沒有這樣的事情,打開工作表(據我所知)。如果要在切換到工作表時執行宏,請使用Worksheet_Activate事件而不是Worksheet_Calculate

你也可能需要,如果你想在工作簿打開時,表處於活動狀態要執行的宏像

If ActiveSheet.Name = "sheetnamehere" Then yourMacroHere 

添加一些東西到Workbook_Open事件。

我建議將代碼移動到一個單獨的宏,並從事件中調用該宏。

+0

感謝將其更改爲Workbook_Open解決了它。 – eurano