Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zwischenablage merken bei Sheetwechsel

Zwischenablage merken bei Sheetwechsel
25.11.2022 08:53:22
Joni
Hallo zusammen,
ich schreibe mit nachfolgendem Code in "DieseArbeitsmappe" bei jedem Tabellenblatt welches die Fußzeile neu. Jetzt habe ich festgestellt, dass es dadurch scheinbar nicht mehr möglich ist einen Wert von einem Tabellenblatt auf ein anderes zu kopieren. Kennt jemand hierfür eine Lösung?
Danke für eure Hilfe.
Gruß Joni

Private Sub Workbook_SheetActivate(ByVal shtTMP As Object)
Dim bPrintCommunicationTMP As Boolean
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 Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage merken bei Sheetwechsel
25.11.2022 09:14:17
Nepumuk
Hallo Joni,
es ist ziemlicher Unsinn bei jeden Sheetwechsel die Seite einzurichten. Mach das vor dem Drucken (Workbook_BeforePrint).
Gruß
Nepumuk
AW: Zwischenablage merken bei Sheetwechsel
25.11.2022 09:30:51
Joni
Hallo Nepumuk,
ich habe das geändert da es bei vielen Tabellenblättern zu lange gedauert hat. Ich möchte nur das betroffene Tabellenblatt bearbeiten aber auch vermeiden, dass ich den Code in jedem Tabellenblatt speichern muss. BeforePrint kennt kein Tabellenblatt. Gibt es einen Weg das zu kombinieren (BeforePrint mit dem Code zentral der nur für das zu druckende Tabellenblatt ausgeführt wird)?
Danke für deine Hilfe.
Gruß Joni
Anzeige
BeforePrint kennt kein Tabellenblatt
25.11.2022 09:38:33
Rudi
Hallo,
es gibt immer noch ActiveSheet.
Gruß
Rudi
zu einfach ;-) danke oT
25.11.2022 16:11:51
Joni
danke oT
25.11.2022 16:12:24
Joni
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
Anzeige
Danke für die ausführliche Hilfe, hat funktioniert
25.11.2022 16:11:02
Joni
SG Joni

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige