使用vba在Excel中更新页眉不会覆盖现有值

时间:2018-06-20 14:25:39

标签: excel vba header

我有这个vba脚本,可以在excel文件的标题中写入一些信息。遗憾的是,它不会更新左右标头中已经写入的内容,尽管我在再次写入标头之前将标头设置为空。 (请参见下面的代码和图片)

有人知道出什么事了吗? 预先感谢!

ActiveSheet.PageSetup.LeftHeader = ""
ActiveSheet.PageSetup.CenterHeader = ""
ActiveSheet.PageSetup.RightHeader = ""


ActiveSheet.PageSetup.LeftHeader = Zeichnung '.Value
ActiveSheet.PageSetup.CenterHeader = Bezeichnung '.Value
ActiveSheet.PageSetup.RightHeader = index_kpl '.Value

编辑: 同样,似乎已删除了较旧字符串的最后两个字符。如果我提前删除了最后两个,它将删除另外两个角色。

EDIT2: 如果我逐步运行脚本,它将起作用。

如果启用/禁用ScreenUpdate,则无效。

EDIT3 在清除和写入标头之间等待(Application.wait())也无济于事。

EDIT4 整个代码如下(george86要求):

Sub ausdrucken()

Sheets("alle_Zuweisungen").Select

Bezeichnung = ActiveWorkbook.Sheets("Steuerung").Range("J3").Value
Bezeichnung = CStr(Bezeichnung & "")
Zeichnung = ActiveWorkbook.Sheets("Steuerung").Range("J4").Value
Zeichnung = CStr(Zeichnung) ' & "")
aktueller_Index = ActiveWorkbook.Sheets("Steuerung").Range("J5").Value
index_kpl = "Änderungsindex " & aktueller_Index
index_kpl = CStr(index_kpl & "")
benutze_Zeilen = ActiveSheet.UsedRange.Rows.Count
PrintArea = "A4" & ":" & "J" & benutze_Zeilen


ActiveSheet.PageSetup.PrintArea = PrintArea '"PrintArea:PrintArea"
'Application.PrintCommunication = False


ActiveSheet.PageSetup.LeftHeader = ""
ActiveSheet.PageSetup.CenterHeader = ""
ActiveSheet.PageSetup.RightHeader = ""

Application.Wait (2)

ActiveSheet.PageSetup.LeftHeader = ""
ActiveSheet.PageSetup.CenterHeader = ""
ActiveSheet.PageSetup.RightHeader = ""

'Application.Wait (1)
'newHour = Hour(Now())
'newMinute = Minute(Now())
'newSecond = Second(Now()) + 2
'waitTime = TimeSerial(newHour, newMinute, newSecond)
'Application.Wait waitTime


ActiveSheet.PageSetup.LeftHeader = Zeichnung 'CStr("&L" & Zeichnung) '.Value
ActiveSheet.PageSetup.CenterHeader = Bezeichnung ' CStr("&C" & Bezeichnung) '.Value
ActiveSheet.PageSetup.RightHeader = index_kpl 'CStr("&R" & index_kpl) '.Value

Debug.Print (Zeichnung)
Debug.Print (Bezeichnung)
Debug.Print (index_kpl)

Application.ScreenUpdating = True

first

second

third

1 个答案:

答案 0 :(得分:1)

非常感谢您的建议!

我找到了解决方案。 在我之前录制的宏中,有一行      Application.PrintCommunication = False

...在代码内。 删除后,它会按您的预期工作。