Excel-Kopf- / Fußzeilen werden nicht über VBA geändert, es sei denn, sie sind leer

8

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%     
bjelleklang 03.09.2013, 21:24
quelle

4 Antworten

8

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.

    
Stewbob 03.09.2013, 22:04
quelle
6

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.

    
user3293236 10.02.2014 14:30
quelle
2

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.

    
glbcpa 31.05.2014 12:36
quelle
1

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.

    
Greg L 02.10.2015 22:03
quelle

Tags und Links