Disclaimer: Es ist ein paar Jahre her, dass ich (viel) mit VBA gearbeitet habe, also könnte das ein Problem sein, das dadurch verursacht wird, dass ich mich mit einer grundlegend anderen Sprache verwechselt habe als mit der, mit der ich normalerweise umgehe.
Also; Ich habe eine Arbeitsmappe (Excel 2010) mit mehreren Blättern (20+), von denen die meisten mehrseitig sind. Um die Dinge beim Drucken zu vereinfachen, möchte ich einige blattspezifische Kopfzeilen hinzufügen, unter anderem den Namen des Blattes, die Anzahl der Seiten und so weiter.
Ich habe eine kleine Funktion geschrieben, die (theoretisch) dies für mich tun sollte, indem ich über alle Blätter, die den Header setzen, iteriere. Aus irgendeinem Grund funktioniert es jedoch nur, wenn der Header leer ist. Wenn es bereits einen Wert hat, weigert es sich aus einem unbekannten Grund zu überschreiben.
%Vor%Ich habe eine Lösung gefunden, die scheinbar den Text ersetzt. Aus irgendeinem Grund müssen Sie im Makro den Header einfügen / footer formatieren Zeichencodes , damit es richtig funktioniert.
Dieser Code funktionierte, um vorhandenen Header-Text durch neue Informationen zu ersetzen:
%Vor% Ohne die Codes &L
, &C
und &R
vor dem Text konnte ich es nicht zum Laufen bringen.
Ein interessantes Verhalten, das ich gefunden habe, ist, dass wenn Sie den folgenden Code verwenden:
%Vor% wird das some text
in die LeftHeader
-Position setzen. Dies führte mich zu der Annahme, dass die Formatierungscodes sehr wichtig waren.
Die Zeile Application.PrintCommunication = False
(die vom Makrorecorder hinzugefügt wird), bevor PageSetup die Formatierung über VBA maskiert.
Wenn Ihr Code diese Zeile enthält, versuchen Sie, ihn zu entfernen. Das löste mein Problem mit der Einstellung der Kopf- und Fußzeile über VBA.
Ich habe StackOverflow seit Jahren gelesen und dies ist das erste Mal, dass ich eine Lösung veröffentlichen konnte ... hoffe, es hilft jemandem !! Außerdem musst du dich erinnern, ich bin ein CPA, kein Programmierer ;-)
Ich lese einige Werte aus dem ActiveSheet, um den Header zu füllen. Der Antrag ist eine Steuerwahl, die mit einer Steuererklärung gesendet wird, so dass der Name des Steuerpflichtigen und Sozialversicherungsnummer an der Spitze muss.
%Vor%Es prüft, ob das Mark-to-Market-Wahljahr das selbe ist wie das Wahlformular und formatiert dann die Wahlseite.
Ich teile die Druckeinstellungen in zwei Loops auf. Erste Schleife mit Application.PrintCommunication = False Ich führe das Non-Header / Footer Setup aus. Ich setze dann Application.PrintCommunication = True und führe das Kopf- / Fußzeilen-Setup in einer zweiten Schleife aus. Scheint schneller zu laufen als in XL2003 und wendet die Kopf- / Fußzeile korrekt an. Bis MS diesen Fehler behebt, funktioniert das gut für mich.
Tags und Links vba excel excel-vba excel-2010