我想在選擇特定工作表時運行宏。但訣竅是我只想在打開工作簿後第一次選擇該工作表時才運行它。如何僅在打開工作簿後第一次激活特定工作表時運行宏?
1
A
回答
2
對不起,我最初誤讀你的問題。
將這個代碼在工作表中的代碼:
Public sheetOpenned As Boolean ' should go at the top of the page
Private Sub Worksheet_Activate()
If sheetOpenned = False Then
' run your macro
sheetOpenned = True
End If
End Sub
不過要注意的是,打開工作簿和片材是默認的一個是活躍在這一分將不會運行。我懷疑你將不得不添加另一段代碼來處理Workbook_Open()
事件中的這種情況。
0
在Excel VB編輯器幫助中查找事件。有很多事件,並且你可以編寫例程來在發生興趣時調用。
下面的例程不處理用戶創建新工作表或改變現有工作表的順序,但應該爲您提供一些關於如何實現您所尋求的效果的想法。
打開工作簿,然後是VB編輯器。項目瀏覽器在左側。如有必要,點擊加號對其展開Microsoft Excel Objects
。點擊ThisWorkbook
,會顯示一個空的代碼區域。在該代碼區域複製下面的代碼。保存並關閉工作簿。重新打開工作簿並在工作表之間切換。打開VB編輯器以查看Debug.Print輸出。關閉工作簿以查看最終顯示。
希望這會有所幫助。
Option Explicit
Dim ActivateCount() As Long
Sub Workbook_Open()
Dim InxS As Long
Debug.Print "Workbook """ & ActiveWorkbook.Name & """ opened"
ReDim ActivateCount(1 To Sheets.Count)
' Entries will be initialised to zero.
' SheetActivate is not called for the initial sheet
For InxS = 1 To Sheets.Count
If Sheets(InxS).Name = ActiveSheet.Name Then
ActivateCount(InxS) = ActivateCount(InxS) + 1
Debug.Print "Worksheet """ & ActiveSheet.Name & """ activation count = " & ActivateCount(InxS)
Exit For
End If
Next
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim InxS As Long
For InxS = 1 To Sheets.Count
If Sheets(InxS).Name = Sh.Name Then
ActivateCount(InxS) = ActivateCount(InxS) + 1
Exit For
End If
Next
Debug.Print "Worksheet """ & Sh.Name & """ activation count = " & ActivateCount(InxS)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim InxS As Long
Dim Text As String
Text = "Activation counts"
For InxS = 1 To Sheets.Count
Text = Text & vbLf & " " & ActivateCount(InxS) & " " & Sheets(InxS).Name
Next
Call MsgBox(Text, vbOKOnly)
End Sub
+0
非常感謝託尼。我認爲按照@Armen的建議聲明一個公共變量就是一個竅門。變量在第一次激活表單時設置爲1,然後定義的事件代碼由於公共變量標誌爲1而不執行。 –
相關問題
- 1. 如何僅在Excel工作簿打開VBScript時才運行宏?
- 2. 工作簿打開時在一張表中自動運行宏
- 3. 打開宏工作簿時在特定的靜態文件上運行宏
- 4. 在工作簿打開後運行auto_open
- 5. 如何激活特定的工作簿和特定的表?
- 6. 關閉第二個工作簿後激活第一個工作簿?
- 7. Excel VBA宏任何工作簿上的「運行/打開」宏
- 8. 在打開每個Excel工作簿時自動運行宏
- 9. 打開另一個工作簿時打開工作簿#1
- 10. 爲什麼新的工作簿打開時宏停止運行?
- 11. 打開指定的工作簿僅
- 12. Python:使用win32com.client.dispatch打開工作簿,取消激活工作簿加載項
- 13. 宏未開啓工作簿打開
- 14. 如何導入工作表的列以激活工作簿
- 15. 保護打開的工作簿上的特定工作表
- 16. 如何在打開Excel工作簿時運行宏,然後在完成運行後重新保護?
- 17. 試圖打開工作簿並在該文件中運行宏
- 18. VB個人工作簿錯誤,其中宏運行時,我每次打開Excel
- 19. 如何在不打開工作簿的情況下運行存儲在工作簿中的VBA宏?
- 20. 如何激活非VBA Excel上的特定工作簿退出
- 21. VBA宏工作簿.open或工作簿。通過變量引用激活
- 22. 如果打開一個不同的工作簿,運行宏時出錯
- 23. Excel工作簿打開宏重新打開關閉的工作簿
- 24. 運行另一個工作簿宏,然後關閉午飯宏
- 25. 在一個工作簿中工作宏引發錯誤1004在另一個工作簿中運行時
- 26. 使宏運行在特定的工作簿
- 27. Excel工作簿打開事件宏並不總是運行
- 28. 打開新的工作簿,並運行宏,使用按鈕
- 29. jquery toggel只有第一次激活和非激活工作
- 30. 從另一個工作簿中的指定工作表中運行宏
你到目前爲止嘗試過什麼?提示:使用在模塊中聲明的公共變量將做我猜的伎倆。 – L42