簡體   English   中英

從 Workbook_Open() 運行時,Workbooks.Add 不會激活新工作簿

[英]Workbooks.Add doesn't activate the new workbook when running from Workbook_Open()

我正在嘗試在打開工作簿時運行宏。 該宏應該使用Workbooks.Add創建一個新工作Workbooks.Add並以新工作簿活動結束。 但是,無論我嘗試什么,我似乎都無法做到這一點。

我嘗試過的最簡單的嘗試如下(您可以自己嘗試):

Private Sub Workbook_Open()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.Activate
End Sub

或者來自模塊本身的這個:

Sub Auto_Open()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.Activate
End Sub

我嘗試了各種方法,例如添加以下代碼行:

DoEvents

Application.Wait (Now + TimeValue("00:00:02"))

我還嘗試使用If Then語句來檢查活動工作簿的名稱,但這也不起作用。

最后,我點擊的原始文件仍然是活動工作簿。 宏完成運行后,如何使新創建的工作簿成為活動窗口? 謝謝!

編輯:順便說一句,請注意,如果您嘗試在常規子程序中運行完全相同的代碼,它會按照我想要的方式運行。 在“在工作簿打開時運行”子程序中運行時,它似乎不起作用。

Application.Wait只是使 Excel 應用程序處於空閑狀態,因此不會像您所觀察到的那樣工作。 如果所有其他方法都失敗(我目前無法進行測試),您可以使用Application.OnTime來安排一個過程,在Workbook_Open事件1 秒創建一個新工作簿並激活它:

Option Explicit

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:01"), "addNewWb"
End Sub

Private Sub addNewWb()
Dim wb As Workbook
Set wb = Workbooks.Add
wb.Activate
End Sub

我一直在嘗試各種不同的方式。 但解決方法是添加一個MsgBox

Private Sub Workbook_Open()

        Dim wb As Workbook
        Set wb = Workbooks.Add
        wb.Activate

        MsgBox "New Book Added"

End Sub

當您在 MsgBox 上單擊確定時,它將保留在新創建的工作簿上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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