Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Seitenumbruch per VBA

Seitenumbruch per VBA
tursiops
Hallo Experten!
Ich brauche mal wieder ein wenig Hilfe.
Ich möchte eine Liste nach Touren sortiert durcken.
In dem entsprechenden Sheet sind alle Kunden nach der Tournummer, die in Spalte A steht sortiert.
Spalte A |Spalte B
1I Meier
1I Müller
1II Schulze
1II Schmidt
1III Wegner usw...
Nun möchte ich per Code hinter jeden letzten Eintrag pro Tour einen Seitenumbruch einfügen.
Spalte A |Spalte B
1I Meier
1I Müller
...Seitenumbruch
1II Schulze
1II Schmidt
...Seitenumbruch
1III Wegner usw...
...Seitenumbruch usw...
Leider weiß ich momentan nicht wie ich da am Besten ran gehe. Ich bin für jeden Tipp dankbar.
Gruß Frank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Seitenumbruch per VBA
25.08.2009 12:58:38
tursiops
Hallo nochmals!
Wie ich eine Seitenumbruch einfüge ist klar..., aber wie kann ich den Code gestalten, damit bei jeder Änderung in Spalte A diese Codezeile ausgeführt wird?
Sub Seitenwechsel festlegen()
ActiveWindow.SelectSheets.HBreaks.Add _
Before:=ActiveCell
End Sub
Gruß Frank
AW: Seitenumbruch per VBA
25.08.2009 13:02:34
MichaV
Hei,
gehe jede Zelle durch und vergleiche ob der Wert der Zelle ist als der Wert der Zelle darüber
mal als Ansatz dahingeschrieben:
dim zelle as range
for each zelle in range("A1:A500")
if zellezelle.offset(1,0) then HBreaks.Add Before:=zelle
next
Gruß- Micha
Anzeige
AW: Seitenumbruch per VBA
25.08.2009 13:21:18
tursiops
Vielen Dank für die Antwort - eine gute Idee!
Bisher erhalte ich allerdings die Fehlermeldung Laufzeitfehler 424 "Objekt erforderlich"
Sub Makro8()
Sheets("KN").Select
Dim zelle As Range
For Each zelle In Range("A1:A93")
If zelle  zelle.Offset(1, 0) Then HBreaks.Add Before:=zelle
Next
End Sub
Gruß tursiops
AW: Seitenumbruch per VBA
25.08.2009 13:10:32
Jens
Hallo Frank
Versuch mal so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LoLetzte As Long
Dim LoI As Long
With ActiveSheet
.ResetAllPageBreaks
LoLetzte = .Range("A65536").End(xlUp).Row
For LoI = 1 To LoLetzte
If Cells(LoI, 1)  Cells(LoI + 1, 1) Then
.HPageBreaks.Add Before:=Cells(LoI + 1, 1)
End If
Next
End With
End Sub
Gruß aus dem Sauerland
Jens
Anzeige
AW: Seitenumbruch per VBA
25.08.2009 13:34:49
tursiops
Hallo Jens!
Das sieht mir ganz nach einem Code für "Diese Arbeitsmappe" aus oder?
Der Code sollte jedoch nur für das Sheet "KN"
Ich habs mit:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LoLetzte As Long
Dim LoI As Long
With Sheet ("KN")
.ResetAllPageBreaks
LoLetzte = .Range("A65536").End(xlUp).Row
For LoI = 1 To LoLetzte
If Cells(LoI, 1)  Cells(LoI + 1, 1) Then
.HPageBreaks.Add Before:=Cells(LoI + 1, 1)
End If
Next
End With
End Sub
...versucht, allerdings läuft der Code bei mir nicht. Beim Wechsel der Sheets passiert nichts, nicht im Modul, nicht in dieser Arbeitsmappe (mit Option explicit). Ausführbar per Editor ist der Code eh nicht... Hast Du eine Idee woran es liegen könnte?
Gruß Frank
Anzeige
AW: Seitenumbruch per VBA
25.08.2009 13:48:45
Jens
Hallo
Private Sub Worksheet_Change(ByVal Target As Range)
Der Code kommt in die Tabelle, wo es geschehen soll ("KN").
Gruß aus dem Sauerland
Jens
AW: Seitenumbruch per VBA
25.08.2009 14:07:58
tursiops
Hallo!
Ich habe den Code in den verschiedensten Versionen und Abänbderungen getestet, bekomme ihn aber nicht zum laufen. Hier die abgespeckte Beispieldatei:

Die Datei https://www.herber.de/bbs/user/64038.xls wurde aus Datenschutzgründen gelöscht


Gruß Frank
AW: Seitenumbruch per VBA
25.08.2009 14:14:58
Jens
Hi
Also bei mir funzt das. Auch in Deiner Mappe...
https://www.herber.de/bbs/user/64039.xls
Gruß aus dem Sauerland
Jens
Anzeige
AW: Seitenumbruch per VBA
25.08.2009 14:21:29
tursiops
Hallo!
Na gut ich werde noch etwas probieren. Ich werde heute abend mal unter Office 2003 schauen, ob es an der Excel Version liegt, denn hier läuft der Code nicht. Alle anderen Makros und Codes in der Mappe laufen wiederum problemlos...
Jedenfalls schon einmal vielen Dank für die Unterstützung.
Gruß Frank
AW: Seitenumbruch per VBA
26.08.2009 11:42:55
fcs
Hallo Frank,
nur zu deinem Verständnis: Das Worksheet-Change-Ereignis reagiert auf Änderungen von Zellinhalten im Tabellenblatt.
Wenn du also die Nummern in Spalte A neu festlegst, dann werden ggf. zunächst an unerwünschten Zeilen Seitenwechsel eingefügt. Erst nach dem erneuten Sortieren der Zeilen kriegst du dann ggf. die Seitenwechsel an die richtige Position.
Da das ständige Einfügen der Seitenwechsel bei der Dateneingabe einen ja auch ganz kirre macht, solltest du die Seitenwechsel unmittelbar vor dem Drucken neu setzen lassen. Auch dafür gibt es ein spezielles Makro. Das auch mit der Seitenvorschau gestartet wird.
Alternativ kannst du auch das Workbook-Sheet-Deactivate-Ereignis nutzen, um beim Verlassen des Tabellenblatts die Seitenwechsel neu setzen. Welche Variante du verwenden solltest hängt auch von der restlichen Makro-Welt in deiner Arbeitsmappe ab.
Drucks du immer direkt das aktuell angezeigte Blatt, dann ist die Before-Print-Prozedur die Methode der Wahl.
Drucks du das Blatt "KN" von einem anderen Blatt aus (z.B. per Button-Klick) dann muss du die SheetDeactivate-Methode verwenden.
Es ist aber kein Problem beide Methoden parallel einzusetzen. Excel berechnet dann die Seitenümbrüche halt öfter neu.
Noch ein Hinweis: Mit Schriftart Arial in Spalte A kann man Tippfehler (kleines L (l) statt großem I) in der Anzeige nicht unterscheiden und wundert sich warum Seitenwechsel an unerwarteter Position angezeigt werden. Verwende in Spalte A eine andere Schriftart, z.B. Times New Roman, dann ist das Schriftbild eindeutiger.
Gruß
Franz

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Prozedur wird vor dem Drucken ausgeführt
Dim LoLetzte As Long
Dim LoI As Long
Select Case ActiveSheet.Name
Case "KN", "TabelleXYZ"
'Name(n) der Blätter in denen die Seitenumbrüche bei Wert-Wechsel in Spalte A _
gesetzt werden sollen
With ActiveSheet
.ResetAllPageBreaks
LoLetzte = .Range("A65536").End(xlUp).Row
For LoI = 3 To LoLetzte
If .Cells(LoI, 1)  .Cells(LoI + 1, 1) Then
.HPageBreaks.Add Before:=.Cells(LoI + 1, 1)
End If
Next
End With
Case Else
'do nothing
End Select
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 9999
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
Cancel = True 'Druck abbrechen
End If
End With
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Prozedur wird beim Deaktivieren/Verlassen eines Blattes ausgeführt
Dim LoLetzte As Long
Dim LoI As Long
Select Case Sh.Name
Case "KN", "TabelleXYZ"
'Name(n) der Blätter in denen die Seitenumbrüche bei Wert-Wechsel in Spalte A _
gesetzt werden sollen
With Sh
.ResetAllPageBreaks
LoLetzte = .Range("A65536").End(xlUp).Row
For LoI = 3 To LoLetzte
If .Cells(LoI, 1)  .Cells(LoI + 1, 1) Then
.HPageBreaks.Add Before:=.Cells(LoI + 1, 1)
End If
Next
End With
Case Else
'do nothing
End Select
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 9999
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End If
End With
End Sub

Anzeige
AW: Seitenumbruch per VBA
25.08.2009 16:47:49
D.Saster
Hallo,
das funktioniert übrigens nur dann vernünftig, wenn du vorher auf die Seitenumbruchvorschu umschaltest.
Sub PageBreaks()
Dim lngRow As Long
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
For lngRow = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lngRow, 1)  Cells(lngRow - 1, 1) Then
ActiveSheet.HPageBreaks.Add Cells(lngRow, 1)
End If
Next
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
End Sub

Gruß
Dierk
AW: Seitenumbruch per VBA
26.08.2009 08:00:17
tursiops
Vielen Dank!
Nun funktioniert der Code auch bei mir!!! :-)
Danke Danke Danke!
Gruß Frank
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge