Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Da falle ich in die Fritöse.

Kennst du Anrufe, die beginnen mit einem „hast du mal einen Moment Zeit?“ oder: „störe ich gerade?“

Richtig: Angelika rief am Wochenende an. Meine Kollegin Angelika. Sie bereitet gerade einen Excel-Makro-Kurs vor und suchte einige gute Gedanken für Befehle, die man mit dem Makrorekorder aufzeichnen könne. Dabei stieß sie auf die benutzerdefinierte Kopfzeile.

„Sag mal“, fragte sie, „wenn ich in der Kopfzeile aufzeichne: Seitennummerierung, Datum, Dateiname und Tabellenblattname passiert etwas ganz Komisches.“

Zuerst glaubte ich es nicht. Also – auch aufgezeichnet:

Ich lasse das Makro laufen:

Das Ergebnis verblüfft:

Und noch einmal:

Und wieder:

Und wieder. Und wieder. Und wieder ….

Ich schaue im Code nach:

[...]
    With ActiveSheet.PageSetup
        .LeftHeader = "&P / &N"
        .CenterHeader = "&D / &T"
        .RightHeader = "&Z&F / &A"

Eigentlich alles okay. Ich habe keine Ahnung, was hier passiert!

Ich rate Angelika, im Makrokurs nur den Firmennamen als Text aufzuzeichnen. Das klappt!

Okay – für Datum und Uhrzeit stehen die VBA-Befehle Date und Time zur Verfügung; für den Dateiname ActiveWorkbook.Name (oder Fullname), für den Blattnamen ActiveSheet.Name, aber für die Seitennummer? Ich weiß keine Lösung.

Danke an Angelika Meyer für diesen Hinweis!

Und nur wenig nach der Veröffentlichung des Artikels erreicht mich ein Kommentar von Ernst. Großartig – DAS ist des Rätsels Lösung! Hier sein Kommentar:

Hallo Rene,

dieses eigenartige Verhalten tritt bei mir (Excel 2019) nur dann auf, wenn vor dem Festlegen der PageSetup-Eigenschaften die Application.PrintCommunication-Eigenschaft auf False gesetzt wird. Wenn die Kommunikation mit dem Drucker nicht abgeschaltet wird, tritt dieses Verhalten nicht auf.

Bei der Makroaufzeichnung werden die Befehle
Application.PrintCommunication = False und Application.PrintCommunication = True
verwendet.

Bei Microsoft steht wohl folgender Hinweis:

Legen Sie die PrintCommunication-Eigenschaft auf False fest, um die Ausführung von Code zu beschleunigen, mit dem PageSetup-Eigenschaften festgelegt werden.

Legen Sie die PrintCommunication-Eigenschaft nach dem Festlegen der Eigenschaften auf True fest, um alle im Cache vorhandenen PageSetup-Befehle auszuführen.

Scheinbar klappt dies nicht richtig.

Salü

Ernst

Wenn auf der Packung steht: „schmeckt wie selbstgemacht“ und du dir denkst: „Bitte nicht!“

WORD – Bug in Inhaltsverzeichnis ?

Hallo Rene,

bei MS Word kannst Du sicher auch helfen?

Ich habe in angehängter Datei im Inhaltsverzeichnis den Fall, dass die Seitenzahlen in einigen Überschriften (Brote, Pizza, Gebäck, …) nicht rechtsbündig stehen.

Hast Du eine Idee, woran das liegt?

Danke, Gunnar

klar, Gunnar,

Word: davon lebe ich auch. Normalerweise.

Die Antwort ist denkbar einfach: „Brote“ und „Gebäck“ basieren auf der Formatvorlage „Verzeichnis 2“ und „Verzeichnis 3“. Dort ist ein hängender Einzug von 1,25 cm eingestellt. 1,25 cm heißt um 1,25 cm, nicht auf die Position 1,25 cm. Da diese Wörter kürzer als 1,25 cm springt der Tab auf den gesetzten Einzug.

Die Lösung: Einzug auf 0,5 cm oder 0 setzen. Dann klappt es.

Liebe Grüße

Rene

Fazit: Nicht alles, was nach Bug aussieht, ist auch einer. Manchmal sind auch die Menschen, die vor dem Computer sitzen, die Ursache für Fehler.

i am not weird i am a limited edition

Es ist so schrecklich! Eigentlich ist das Problem einfach: eine Mitarbeiterin möchte wissen, ob beim Anwender Excel die deutsche oder englische Oberfläche eingeschaltet hat. Per VBA wäre dies kein Problem; allerdings wollen wir eine Lösung entwickeln, die auf Formeln basiert.

Wir beginnen:

=WENN(TEXT(DATUM(2018;1;1);“MMMM“)=“Januar“;“de“;“en“)

Wenn der erste Monat des Jahres „Januar“ heißt, bin ich Deutsch. Test: Excel wird auf englisch umgestellt:

Klar. die Ländereinstellung der Systemsteuerung ist noch immer „deutsch“ – deshalb ist der erste Monat Januar. Blöd zum Testen!

Zweiter Versuch:

=IF(ISERROR(TEXT(TODAY();“dddd“));“de“;“en“)

zeigt „en“ an. Bei der deutschen Oberfläche ebenso. Der Grund:

TEXT(HEUTE();“dddd“)

liefert „dddd“?!? Und eben keinen Fehler.

Noch ein Versuch:

=IF(ISERROR(INFO(„DIRECTORY“));“de“;“en“)

Auch hier weigert sich Excel hartnäckig „deutsch“ zu werden. Der Grund:

INFO(„DIRECTORY“)

funktioniert auch im Deutschen korrekt. Erst

=WENN(ISTFEHLER(INFO(„VERZEICHNIS“));“en“;“de“)

klappt. Das englische Excel kennt „VERZEICHNIS“ nicht. Zum Glück ist diese Funktion volatil, das heißt: wird beim Start von Excel neu berechnet.

Mehrsprachige Umgebungen sind die Hölle! Nicht nur in Excel … Und: das oben genannte Beispiel ist nur Spitze des Eisberges.