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

Haftungsausschluss: Es ist ein paar Jahre her, dass ich (viel) mit VBA gearbeitet habe. Dies kann ein Problem sein, das dadurch entstanden ist, dass ich mich mit einer Sprache verwechselt habe, die sich grundlegend von der Sprache unterscheidet, mit der ich normalerweise arbeite.

So; Ich habe eine Arbeitsmappe (Excel 2010) mit mehreren Blättern (20+), von denen die meisten mehrseitig sind. Um das Drucken zu vereinfachen, möchte ich einige blattspezifische Überschriften hinzufügen, unter anderem den Namen des Blatts, die Anzahl der Seiten usw.

Ich habe eine winzige Funktion geschrieben, die dies (theoretisch) für mich tun sollte, indem sie alle Blätter durchläuft, die den Header setzen. Aus irgendeinem Grund funktioniert es jedoch nur, wenn der Header leer ist. Wenn es bereits einen Wert hat, wird das Überschreiben aus einem unbekannten Grund verweigert.

Dim sheetIndex, numsheets As Integer
sheetIndex = 1
numsheets = Sheets.Count

' Loop through each sheet, but don't set any of them to active
While sheetIndex <= numsheets
    Dim sheetname, role, labeltext As String
    sheetname = Sheets(sheetIndex).name
    role = GetRole(mode) 
    labeltext = "Some text - " & sheetname & " - " & role

    With Sheets(sheetIndex).PageSetup
        .LeftHeader = labeltext
        .CenterHeader = ""
        .RightHeader = "Page &[Page] / &[Pages]"
        .LeftFooter = "&[Date] - &[Time]"
        .CenterFooter = ""
        .RightFooter = "Page &P / &N"
    End With

    sheetIndex = sheetIndex + 1
Wend

Antworten auf die Frage(4)

Ihre Antwort auf die Frage