Dialog verliert während Makro den Fokus
02.03.2004 11:56:09
Alfred
ich habe mal wieder ein nicht so ganz trivial scheinendes Prob, das ich auch nach längerer Recherche im Forum nicht lösen kann.
Ich las Fragen der Art "wie kann ich während der Anzeige einer UserForm in ein Sheet zur Bearbeitung wechseln?" mit mehr oder weniger verqueren Workarounds.
Nun habe ich eine Variante unfreiwillig gefunden, die mich zudem stört.
Mein Code arbeitet in einem Workbook mit 2 Tabellen.
Tab A bietet dem Nutzer die Möglichkeit, Varianten für den Ausdruck von Tab B zu bestimmen. Er gibt also dort irgendwas in Zellen ein.
Tab B ist veryHidden und gibt nur das Format für den Ausdruck der in Tab A gemachten Angaben vor.
Über eine UserForm wird nun der Ausdruck von Tab B ausgelöst.
Dazu habe ich im Click-Ereignis eines Buttons folgenden Code:
(1) sheetB.Visible = xlSheetVisible
' die einzelnen Varianten abturnen
(2) For Each variante In variantenListe
' ... ein paar Zellen in Tab B gemäß Werten in Tab A ändern
' die Änderungen übernehmen
(3) sheetB.Calculate
' ausdrucken
(4) sheetTabelle.PrintOut
Next variante
' die geheime Tabelle wieder verstecken
(5) sheetTabelle.Visible = xlSheetVeryHidden
(6) ' Dialog hat hier leider den Focus verloren
Intention:
(1) macht Tab B sichtbar, ohne das scheitert PrintOut weiter unten
(2) turnt die in Tab A vorgegebenen Varianten ab
Für jede Variante werden nun in Tab B ein paar Zellen geändert
(3) ist offenbar nötig, die Änderungen zu übernehmen
(4) druckt die aktuelle Variante der Tab B
(5) verbirgt die Tab B wieder
und nun kommt der Moment, wo der Elefant das Wasser läßt:
bei (6) hat die UserForm den Fokus verloren, man findet sich plötzlich in Tab A wieder, obwohl UserForm noch geöffnet ist (aber gegraut eben) und kann fleißig in Tab A hin und her wandern.
Alt-Tab belebt die UserForm wieder (die Titelzeile wird wieder wie "aktiv" gefärbt). Wenn ich aber im Makro an Pos (6)
SendKeys "%{TAB}", [TRUE | FALSE]
schreibe, passiert nix.
UserForm.Hide - UserForm.Show kommt erst einmal nicht infrage, weil der Dialog dann die vom Nutzer gemachten Änderungen verliert.
Wie mache ich die UserForm im Makro wieder aktiv?
Danke für die Aufmerksamkeit.
Alfred