AW: Zwischenablage merken bei Sheetwechsel
25.11.2022 11:58:08
Daniel
Hi
die Ursache ist, beim Ändern eines PageSetups-Wertes wird der Zwischenspeicher von Excel gelöscht.
wie die Kollegen schon schrieben, das Beste wäre, die Fußzeile im BeforePrint-Event einzurichten.
Da macht das am meisten Sinn und hier wäre auch eine kurze Wartezeit vertretbar.
wenn du immer nur ein Tabellenblatt druckst, dann machst du das Ganze mit:
With ActiveSheet.PageSetup
kann es vorkommen, dass du mehrere Blätter markierst und gemeinsam drucken willst, dann besser so:
dim sh as Worksheet
for each sh in ActiveWindow.SelectedSheets
with sh.pagesetup
die andere Alternative wäre, dass du die Fusszeile dann einrichtest, wenn du die entsprechende Zelle im Tabellenblatt änderst, dh der Code käme dann in Change-Event und du müsstest abfragen, ob die Zelle J1 geändert wurde.
Wobei das nur funktioniert, wenn du die Zelle J1 von Hand befüllst und hier keine Formel steht.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Sh.Cells(1, 10)) Is Nothing Then
With Sh.PageSetup
.LeftFooter = ""
.RightFooter = "&""Tahoma,Standard""&8" & "Version " & Worksheets(1).Cells(1, 10).Value
End With
End If
End Sub
wenn du aus welchen Gründen auch immer, unbedingt bei SheetChange-Event bleiben willst (was ich aber für nicht gut halte, weil dann dein Footer nicht geändert wird, wenn du die Zelle J1 änderst und dann direkt dieses Blatt druckst, du hättest dann immer noch den alten Wert im Footer), dann kannst du auch abfragen, ob was kopiert wurde und dann das Pagesetup nicht ausführen.
Private Sub Workbook_SheetActivate(ByVal shtTMP As Object)
Dim bPrintCommunicationTMP As Boolean
If Application.CutCopyMode = 0 Then
bPrintCommunicationTMP = Application.PrintCommunication
Application.PrintCommunication = False
With shtTMP.PageSetup
.LeftFooter = ""
.RightFooter = "&""Tahoma,Standard""&8" & "Version " & Worksheets(1).Cells(1, 10).Value
End With
Application.PrintCommunication = bPrintCommunicationTMP
End If
End Sub
gruß Daniel