Hallo liebe Wissenden!
Schon seit letzter Woche, verfolgt mich folgendes Problem:
Die Excel-Datei (Excel 2003), um die es geht, ist ein Bestellformular. Die Tabelle, in der das alles drin steht, hat einen Blattschutz mit Passwort, damit die ‚Ausfüller‘ nur etwas in bestimmte Zellen schreiben (und auch nur diese auswählen) können. Das sind die Zellen für die Mengenangabe.
Da das ganze Bestellformular 3 Seiten hat, in der Regel aber nur einige wenige Artikel davon auch tatsächlich geordert werden, sollen nun nur die entsprechenden Zeilen ausgedruckt werden. Außerdem die ‚Kopfzeilen‘ und eine Schlusszeile (Gesamtbetrag…)
Um das ganze zu realisieren, kopiere ich im Before_Print-Event den Inhalt der Tabelle einfach in eine andere rüber. In der anderen Tabelle habe ich eine ‚Steuerspalte‘, die ebenfalls in dem Event aktualisiert wird. Also wenn eine Menge angegeben wurde, dann kommt in die entsprechende Zelle der Steuerspalte ein Kennzeichen.
Wenn ich das durchlaufen habe, setze ich einen Autofilter, der mir alle Zeilen mit dem Kennzeichen anzeigen.
So weit so gut.
Nun hätte ich aber ganz gerne die Zusatztabelle wieder geleert, NACH dem Druck. Und außerdem sollte der Fokus wieder auf der Ausgangszelle der Originaltabelle stehen, damit der Ausfüller wieder da ist, wo er quasi herkommt.
Allerdings gibt es ja kein After_Print-Event.
Dass man sich das zusammentricksen kann, habe ich zwar auch schon herausgefunden, aber genau hier habe ich so meine Probleme:
-
Variante:
Der eigentliche Druckauftrag wird gecancelt (in Before_Print -> Cancel = true) und manuell noch mal angestoßen. Danach kommen dann die ‚After_Print‘-Anweisungen.
ABER: a) Es wird dann auch gedruckt, wenn ich nur auf ‚Seitenvorschau‘ gehe.
b) Es wird kein Drucker-Dialog mehr angezeigt, falls der Druck über ‚Datei -> Drucken‘ angestoßen wird. Das Verhalten soll hier aber genau sein wie vorher. Also beim klicken auf das Druckersymbol einfach ausdrucken, beim Drucken über den Menüpunkt MIT Drucker-Dialog.
Ich habe aber nichts gefunden, wie man feststellen kann, wo nun der Druck-Befehl her kommt.
-
Variante:
Am Ende von Before_Print via Application.OnTime … in einem Modul eine Funktion mit After_Print-Befehlen aufrufen.
Was aber etwas unsicher zu sein scheint - weil es eben alles auf Zeitsteuerung basiert. Zu hoch darf ich den Zeitindex also nicht einstellen, weil sonst evtl. schon jemand etwas in der plötzlich sichtbar gewordenen Tabelle gepfuscht haben könnte, die Datei vielleicht sogar geschlossen hat??
Zu niedrig aber auch auf gar keinen Fall, denn wie ich die Sache sehe, nimmt der Drucker sonst diese kurzfristigen Änderungen nicht wahr, weil sie schon wieder rückgängig gemacht sind und druckt doch alles.
Tja,… und nun bin ich ratlos und wende mich an Euch.
Weiß hier jemand Rat, was ich noch tun könnte? Besonders in Hinsicht auf Variante 1 vielleicht mit dem Erkennen des Unterschieds zwischen dem DruckButton und Menü-Druck, wäre ich wirklich froh, wenn jemand noch eine Idee hätte.
Im Voraus vielen Dank schon mal - und wenn’s allein für das Lesen des langen Textes ist. 
Lg Tally
