如何使用Excel VBA将ActiveWorkbook带到窗口的前面?

时间:2017-05-30 16:10:22

标签: excel vba excel-vba

我发现Workbook.Activate并不总是将该工作簿带到窗口的前面。我想知道将工作簿设置为窗口顶部的正确方法是什么,所以当宏完成时,这就是您正在查看的工作簿。

我应该使用任何基于Windows()的代码,还是与.setfocus相关?我只是在猜测。

1 个答案:

答案 0 :(得分: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

在2行代码WB2仍处于活动状态后,使用参数准备子程序 step 2

已处理WB1,但WB2仍处于活动状态 step 3

现在让WB1处于活动状态 step 4