2017-05-30 37 views
1

我發現Workbook.Activate並不一定帶來的是工作簿窗口的前面。我想知道將工作簿設置爲窗口頂部的正確方法是什麼,因此當宏完成時,這是您正在查看的工作簿。如何使用Excel VBA將ActiveWorkbook放到窗口的前面?

我應該使用任何基於Windows()代碼,或者這是關係到.setfocus?我只是猜測。

回答

1

Workbook自身可能沒有足夠的資格,取決於你在屏幕上看到實際運行時。如果VBA同一工作簿中運行,嘗試

ThisWorkbook.Activate

如果你的代碼是在工作簿WB2但處理其他工作簿WB1,你可能想打電話給你的VBA與工作簿作爲參數,並激活它在你的代碼的末尾。

所以例如VBA代碼是WB2 ...

Sub CallStuff() 
    Debug.Print "Hey, I am " & ThisWorkbook.Name 
    Debug.Print "starting to work on " & Application.Workbooks("Book1").Name 

    DoStuff Application.Workbooks("Book1") 

End Sub 

Sub DoStuff(WB As Workbook) 

    WB.Worksheets("Sheet1").[A1] = "Co-cooo!" 
    'do other stuff on WB 
    WB.Activate 
End Sub 

情況VBA的開始...... WB2活躍和執行代碼 step 1

後兩行代碼WB2的仍然活躍之前,製備子程序與參數 step 2

處理WB1,WB2但仍然活躍 step 3

現在正在積極WB1 step 4

+0

我的情況是我在一個名爲工作簿workbook1試圖打開另一個工作簿的代碼,比如,workbook2,但在此之後,它仍然workbook1頂部。 – Nicholas

+0

通過我的初始回覆的第2部分回答...用完整示例更新 – MikeD

相關問題