Los encabezados / pies de página de Excel no cambiarán a través de VBA a menos que estén en blanco

Descargo de responsabilidad: han pasado algunos años desde que trabajé (mucho) con VBA, por lo que este podría ser un problema causado por confundirme con lo que es esencialmente un lenguaje muy diferente del que suelo tratar.

Asi que; Tengo un libro de trabajo (Excel 2010) con varias hojas (20+), la mayoría de los cuales son de varias páginas. Para facilitar las cosas cuando se imprime todo, quiero agregar algunos encabezados específicos para cada hoja con, entre otros, el nombre de la hoja, el número de páginas, etc.

He escrito una pequeña función que debería (en teoría) hacer esto por mí mediante la iteración de todas las hojas que configuran el encabezado. Sin embargo, por alguna razón, solo funciona si el encabezado está vacío; si ya tiene un valor, se niega a sobrescribir por alguna razón desconocida.

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta