2017-05-30 1 views
1

Ich finde, dass Workbook.Activate diese Arbeitsmappe nicht immer an die Vorderseite des Fensters bringt. Ich frage mich, was der richtige Weg ist, um eine Arbeitsmappe als den oberen Teil des Fensters festzulegen, also wenn das Makro fertig ist, ist dies die Arbeitsmappe, die Sie betrachten.Wie Sie ActiveWorkbook mit Excel VBA an die Vorderseite des Fensters bringen?

Sollte ich einen Windows() basierten Code verwenden oder steht dieser in Beziehung zu .setfocus? Ich rate nur.

Antwort

1

Workbook allein kann nicht ausreichend genug sein, abhängig davon, was Sie tatsächlich auf Ihrem Bildschirm zur Laufzeit sehen. Wenn der VBA in derselben Arbeitsmappe ausgeführt wird, versuchen Sie

ThisWorkbook.Activate.

Wenn sich Ihr Code in der Arbeitsmappe WB2 befindet, aber eine andere Arbeitsmappe WB1 verarbeitet, sollten Sie Ihren VBA mit dieser Arbeitsmappe als Parameter aufrufen und am Ende des Codes aktivieren. So ist

das Beispiel VBA-Code in 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 

Situation vor Beginn der VBA ... WB2 aktiv und Ausführen von Code step 1

nach 2 Zeilen Code WB2 noch aktiv ist, Herstellung von Unterprogramm mit dem Parameter step 2

verarbeitet WB1, WB2, aber immer noch aktiv step 3

jetzt WB1 aktiv step 4

+0

Meine Situation zu machen ist mein Code in einer Arbeitsmappe namens Workbook1 eine andere Arbeitsmappe zu öffnen versucht, sagen wir, workbook2, danach aber es ist Workbook1 noch auf der Oberseite. – Nicholas

+0

beantwortet von Teil 2 meiner ersten Antwort ... mit komplettem Beispiel aktualisiert – MikeD

Verwandte Themen