2016-11-14 255 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