Clever-Excel-Forum

Normale Version: Seitenumbruch per VBA einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Gemeinschaft,

ich habe eine ziemlich lange Liste, bei der über ein Makro manuelle Seitenumbrüche eingefügt werden sollen.
Der Umbruch soll immer dann erfolgen, wenn in Spalte "B" z.B. "WAHR" steht.

Ich habe im Netz bereits folgendes Makro gefunden, das aber nicht immer funktioniert.

Sub Seitenumbruch_einfuegen()
Dim lngRow As Long

For lngRow = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
If Cells(lngRow, 2) = "WAHR" Then _
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(lngRow + 1, 1)
Next
End Sub

Kann mir bitte jemand weiterhelfen und mir Tipps geben, wie ich das Problem lösen kann?

Vielen Dank schon mal im Voraus

Gruß

Thomas
Hallo,

If Cells(lngRow, 2) = "WAHR"  Or Cells(lngRow, 2) = True Then
Was Funktioniert denn an dem Makro nicht, oder nur manchmal??

Nachtrag:
@Flotter Feger das hätte ich jetzt auch getippt...
Vielen Dank schon mal für die schnellen Reaktionen.

Ich habe das Makro in zwei verschiedenen Dateien getestet.

In der einen scheint es jetzt problemlos zu funktionieren.

In der anderen verhält es sich merkwürdig.
Wenn in einer Zelle in Spalten B "WAHR" steht, macht es gar nichts. Wenn in allen Zellen der kleinen Test-Tabelle "WAHR" steht, wird in allen Zeilen ein Seitenumbruch eingefügt.

Wenn ich dann wieder nach und nach die "WAHR" raus lösche, macht es ab einer nicht nachvollziehbaren Anzahl an "WAHR" gar keine Umbrüche mehr. Zwischendurch setze ich die Seitenumbrüche immer wieder zum Testen zurück.

Leider kann ich dabei keine Systematik erkennen.
Hallöchen,

die Zeilenumbrüche werden übrigens in Abhängigkeit der letzten Eintragung in Spalte D gesetzt - ist da was im Argen?
(17.11.2018, 18:11)schauan schrieb: [ -> ]Hallöchen,

die Zeilenumbrüche werden übrigens in Abhängigkeit der letzten Eintragung in Spalte D gesetzt - ist da was im Argen?

Hallo schauan,

Vielen Dank für deinen Hinweis.

Was bedeutet dein Aussage genau?
Heißt dass, ich muss jedes mal noch einen neuen Eintrag in Spalte D machen, um das Makro ausführen zu können?
Hallöchen,

in Deiner Schleife steht

… ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row


Die 4 steht für Spalte D. Wenn Du die Wahrheitswerte in Spalte B hast, würde ich eventuell eine 2 nehmen. Wenn nämlich z.B. Deine Spalte D leer ist, passiert nix.
Hallo schauan,

Dein Tipp war super. Nachdem ich die 4 auf 2 geändert habe, hat alles wie gewünscht funktioniert.

Wenn man noch keine Ahnung von VBA hat und plötzlich für eine Prüfung mit großen Excel Tabellen arbeiten muss, ist es klasse, dass es so Leute wie Dich gibt.

Wie kann ich denn Module, die ich nicht mehr benötige wieder löschen?

Vielen Dank für die Hilfe

Gruß Thomas
Hallo,

ich habe noch ein Makro (siehe unten) um Zeilen auszublenden.
Das funktioniert soweit auch ganz gut.
Kann man das noch etwas optimieren damit es etwas schneller geht?
Die Anzahl der Zeilen habe ich bereits auf den kleinsten Wert (2180) eingestellt.

Aber vielleicht dauert es auch einfach seine Zeit, bis so viele Zeilen überprüft und ausgeblendet sind.

Was ist denn der Unterschied zwischen einem Sub und einem Public Sub?

Gruß
Thomas

Public Sub Zeilen_ausblenden()
Application.ScreenUpdating = False
For i = 1 To 2180
If Cells(i, 1).Value = "0" Then
    Rows(i).Hidden = True
End If
Next i
Application.ScreenUpdating = True
Range("A1").Select
End Sub
Hallo Thomas,

Zitat:Wie kann ich denn Module, die ich nicht mehr benötige wieder löschen?

geht mit dem Kontextmenü / rechte Maustaste - "Entfernen von … " Da kommt dann noch eine Meldung, ob Du das Modul noch sichern willst, die kannst Du wegdrücken oder tust es eben sichern Smile