Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Druckvorschau nicht korrekt
#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
Antworten Top
#2
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:
  • mauritius5
Antworten Top
#3
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.
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • mauritius5
Antworten Top
#5
(02.02.2023, 14: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?
Antworten Top
#6
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)
Antworten Top
#7
(02.02.2023, 15: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?
Antworten Top
#8
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:
  • mauritius5
Antworten Top
#9
(02.02.2023, 17: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.
Antworten Top
#10
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:
  • mauritius5
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste