Registriert seit: 06.04.2018
Version(en): 16.11.1
Code: Sub Makro7() Dim lngV As Long Dim oHP As HPageBreak Dim rngA As Range, rngB As Range, rngC As Range Application.ScreenUpdating = False With Worksheets("Besuch - Visite - Visita") .Activate Set rngC = ActiveCell .Cells(.Rows.Count, 1).Select 'Zeilen ausblenden wenn Zelle leer' Range("18:19").EntireRow.Hidden = WorksheetFunction.CountA(Range("B19")) = 0 Range("27:28").EntireRow.Hidden = WorksheetFunction.CountA(Range("B28")) = 0 Range("36:37").EntireRow.Hidden = WorksheetFunction.CountA(Range("B37")) = 0 Range("44:45").EntireRow.Hidden = WorksheetFunction.CountA(Range("B45")) = 0 Range("53:54").EntireRow.Hidden = WorksheetFunction.CountA(Range("B54")) = 0 Range("63:64").EntireRow.Hidden = WorksheetFunction.CountA(Range("B64")) = 0 Range("72:73").EntireRow.Hidden = WorksheetFunction.CountA(Range("B73")) = 0 Range("79:80").EntireRow.Hidden = WorksheetFunction.CountA(Range("B80")) = 0 Range("89:90").EntireRow.Hidden = WorksheetFunction.CountA(Range("B90")) = 0 Range("99:100").EntireRow.Hidden = WorksheetFunction.CountA(Range("B100")) = 0 Range("104:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B107")) = 0 Range("109:112").EntireRow.Hidden = WorksheetFunction.CountA(Range("B109")) = 0 Range("111:112").EntireRow.Hidden = WorksheetFunction.CountA(Range("B111")) = 0 Range("113:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B115")) = 0 Range("117:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B117")) = 0 Range("119:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B119")) = 0 Range("126:127").EntireRow.Hidden = WorksheetFunction.CountA(Range("B127")) = 0 Range("133:134").EntireRow.Hidden = WorksheetFunction.CountA(Range("B134")) = 0 Range("B139").EntireRow.Hidden = WorksheetFunction.CountA(Range("B139")) = 0 Range("141:142").EntireRow.Hidden = WorksheetFunction.CountA(Range("B142")) = 0 Range("147:148").EntireRow.Hidden = WorksheetFunction.CountA(Range("B148")) = 0 Range("160:161").EntireRow.Hidden = WorksheetFunction.CountA(Range("B161")) = 0 lngV = ActiveWindow.View ActiveWindow.View = xlPageBreakPreview .ResetAllPageBreaks 'Zeilen, die bei einem allfälligen Seitenumbruch zusammengehalten werden sollen' Set rngB = Range("A11:A22,A23:A31,A32:A40,A41:A48,A49:A57,A58:A67,A68:A76,A77:A83,A84:A93,A94:A103,A104:A120,A121:A135,A136:A155,A156:A166") For Each rngA In rngB.Areas For Each oHP In .HPageBreaks If Not Intersect(rngA.Offset(1).Resize(rngA.Rows.Count - 1), oHP.Location) Is Nothing Then .HPageBreaks.Add rngA End If Next oHP Next rngA ActiveWindow.View = xlNormalView End With rngC.Select Application.ScreenUpdating = True ActiveWindow.SelectedSheets.PrintPreview End Sub
Liebe Leute Ich habe obigen Code, welcher soweit auch tiptop funktioniert. Kurz zusammengefasst: - er blendet Zeilen aus, wenn in entsprechenden Zellen nichts steht - funktioniert - er hält Zeilen zusammen, wenn sie aufgrund eines Seitenumbruches auseinandergerissen würden - funktioniert - vor der Druckvorschau blendet er Zeilen aus, die nicht beschrieben sind - funktioniert aaaaber Bei der anschliessenden Druckvorschau werden 9 Seiten angezeigt, obwohl nur auf deren 5 Inhalt vorhanden ist. Habe den Code schon mehrmals durch eine KI checken lassen, kriege allerdings keine gescheite Antwort. Hat jemand von euch eine Idee? Herzlichen Dank und Gruss mauritius5
Registriert seit: 10.04.2014
Version(en): 2016 + 365
02.02.2023, 12:35
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2023, 12:36 von Rabe.)
Hi,
werden die 9 Seiten nur angezeigt oder werden sie auch ausgedruckt?
Gruß Ralf
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• mauritius5
Registriert seit: 06.04.2018
Version(en): 16.11.1
Dies weiss ich nicht, da ich gerade nicht im Geschäft bin und dies checken kann. Jedenfalls wird das Dokument fast nur digital verwendet und wenn ich ein PDF erstelle, sind es auch 9 Seiten.
Registriert seit: 28.08.2022
Version(en): 365
02.02.2023, 15:01
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2023, 15:10 von HKindler.)
Hi, kann ich bei mir nicht nachvollziehen. Wenn in Spalte B gar nichts steht, dann bleiben nach deiner Routine noch Zeilen für zwei Seiten übrig (bei Zeilenhöhe 12,75) und genau so viele zeigt er mir auch in der Druckvorschau an. Wenn das bei dir anders ist, dann solltest du einmal eine Datei hier hoch laden, bei der das Problem auftritt. Aber einige Fragen zu deinem Code solltest du dir selbst mal beantworten: - wieso verwendest du einen With-Block ohne ihn wirklich zu verwenden? Wenn du ihn verwenden würdest, also vor alle Range etc. einen Punkt setzen würdest, könntest du auf .Activate und .Select komplett verzichten.
- wieso verwendest du Range("18:19").EntireRow.Hidden = WorksheetFunction.CountA(Range("B19")) = 0 statt .Range("18:19").EntireRow.Hidden = .Range("B19") = "" oder noch besser .Rows("18:19").Hidden = .Range("B19") = ""
- wieso merkst du dir ActiveWindow.View in einer Variablen um diese dann nie zu verwenden aber dafür stur am Ende deiner Routine auf xlNormalView zu setzen?
- wieso schaltest du den View überhaupt um?
- wieso verwendest du ActiveWindow.SelectSheets.PrintPreview anstatt einfach .PrintPreview innerhalb des With-Blocks?
- wieso verwendest du .Select und .Activate?
- wieso verwendest du .ScreenUpdating?
- wofür brauchst du rngC?
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 06.04.2018
Version(en): 16.11.1
(02.02.2023, 15:01)HKindler schrieb: Hi,
kann ich bei mir nicht nachvollziehen. Wenn in Spalte B gar nichts steht, dann bleiben nach deiner Routine noch Zeilen für zwei Seiten übrig (bei Zeilenhöhe 12,75) und genau so viele zeigt er mir auch in der Druckvorschau an. Wenn das bei dir anders ist, dann solltest du einmal eine Datei hier hoch laden, bei der das Problem auftritt.
Aber einige Fragen zu deinem Code solltest du dir selbst mal beantworten:- wieso verwendest du einen With-Block ohne ihn wirklich zu verwenden? Wenn du ihn verwenden würdest, also vor alle Range etc. einen Punkt setzen würdest, könntest du auf .Activate und .Select komplett verzichten.
- wieso verwendest du Range("18:19").EntireRow.Hidden = WorksheetFunction.CountA(Range("B19")) = 0 statt .Range("18:19").EntireRow.Hidden = .Range("B19") = "" oder noch besser .Rows("18:19").Hidden = .Range("B19") = ""
- wieso merkst du dir ActiveWindow.View in einer Variablen um diese dann nie zu verwenden aber dafür stur am Ende deiner Routine auf xlNormalView zu setzen?
- wieso schaltest du den View überhaupt um?
- wieso verwendest du ActiveWindow.SelectSheets.PrintPreview anstatt einfach .PrintPreview innerhalb des With-Blocks?
- wieso verwendest du .Select und .Activate?
- wieso verwendest du .ScreenUpdating?
- wofür brauchst du rngC?
Vielen lieben Dank für deine Antwort. Deine Fragen sind sehr gut und leider kann ich sie dir nicht beantworten. Ich bin kein Crack und habe den Code mit eurer Hilfe und der eines KI-Chats zusammen gekriegt. Wie würdest du den Code den anpassen?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
wenn ungefähr doppelt so viele Zeilen vorgeschaut wird als man erwartet könnte es daran liegen, dass da was zu breit geworden ist... Schaue mal in die Ansicht mit dem Seitenlayout, ob da der zweite Block aktiv ist.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 06.04.2018
Version(en): 16.11.1
(02.02.2023, 16:25)schauan schrieb: Hallöchen,
wenn ungefähr doppelt so viele Zeilen vorgeschaut wird als man erwartet könnte es daran liegen, dass da was zu breit geworden ist... Schaue mal in die Ansicht mit dem Seitenlayout, ob da der zweite Block aktiv ist. Nein, alle anderen Seiten sind "grau". Es sind nur die Seiten "aktiviert", die auch Text enthalten. An was könnte es sonst noch liegen?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
also, wenn es im Seitenlayout nur 5 aktive Seiten sind und auf dem Drucker 9, stimmt eventuell was mit dem Treiber nicht? Nur zur Sicherheit die Frage - der Drucker wird Dir, wenn Du auf Drucken gehst, auch gleich als aktiver angezeigt?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• mauritius5
Registriert seit: 06.04.2018
Version(en): 16.11.1
(02.02.2023, 18:48)schauan schrieb: Hallöchen,
also, wenn es im Seitenlayout nur 5 aktive Seiten sind und auf dem Drucker 9, stimmt eventuell was mit dem Treiber nicht? Nur zur Sicherheit die Frage - der Drucker wird Dir, wenn Du auf Drucken gehst, auch gleich als aktiver angezeigt? Keine Ahnung, ob was mit dem Treiber nicht stimmt. Jedenfalls habe ich mit anderen Sheets das Problem nicht. Ja, der Drucker ist aktiv. Aus der Seitenansicht, die sich durch den Code automatisch öffnet, möchte ich allerdings eh nicht drucken sondern jeweils lediglich ein PDF erstellen. Auch wenn ich das PDF erstelle, besteht dieses aus 9 Seiten.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Helmut, wieso schaltest du den View überhaupt um? : siehe hier. Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mauritius5
|