Seitenumbruch über VBA variable halten

Dieses Thema Seitenumbruch über VBA variable halten im Forum "Microsoft Office Suite" wurde erstellt von Splizz, 31. März 2005.

Thema: Seitenumbruch über VBA variable halten Hallo Leute ;D Ich habe ein Problem. Schaut euch mal meine Beispieldatei an. Ist es irgendwie möglich das der...

  1. Hallo Leute ;D

    Ich habe ein Problem. Schaut euch mal meine Beispieldatei an. Ist es irgendwie möglich das der Seitenumbruch nach dem letzten ganzen Datensatz vollzogen wird? Es geht vor allem daraum das zu automatisieren. In meiner richtigen Datei sind es immer unterschiedlich viele Zeilen pro Datensatz, von daher müsste man das dann immer händlisch machen. Ist es also möglich den Seitenumbruch nach dem letzten Datensatz durchzuführen den er richtig darstellen kann?

    Beispieldatei: http://www.herber.de/bbs/user/20428.xls

    Mein Dank ist euch Gewiss
    Gruss
    Splizz
     
  2. Hallo

    Ein machbar oder nicht machbar würde mir schon wesentlich weiterhelfen...
    Versteht ihr wie ich das meine?

    gruss
    Splizz
     
  3. Hallo Splizz,

    ist machbar  ;D

    Gruß Matjes  ;)

    z.B. so:
    Code:
    Sub SeitenumbruchVollstaendigeDatensaetz()
     ->Datensatzanfang ist gekennzeichnet durch
     ->Datum in Spalte A, sonnst ist Spalte A leer
     ->Aufgabe des Makros ist festzustellen,
     ->ob bei eingestelltem Drucker ein Datensatz
     ->gesplittet ausgedruckt wird
     ->In diesem Fall wird oberhalb diese Datensatzes
     ->ein Seitenumbruch eingefügt
     ->(wenn man das immer wieder machen will und sich
     -> die Zeilenanzahl der Datensätze verändert,
     -> müssen vorher eventuell vorhandene
     -> Seitenumbrüche gelöscht werden.)
      
      Const c_SPDatensatzAnfang = 1-> Spalte A
      Const c_ZMinZeile = 5->
      
      Dim ws As Worksheet
      Dim x As Long, z As Long, l_aktH As Long
      Dim l_Zeile As Long, l_Spalte As Long, l_Zeile_DAnf
      
      Set ws = ActiveSheet
      
     ->prüfen, ob noch manuelle Zeilenumbrüche vorhanden sind
      For x = ActiveSheet.HPageBreaks.Count To 1 Step -1
        If ActiveSheet.HPageBreaks(x).Type = xlPageBreakManual Then
          MsgBox ( _
          Es existieren manuell gesetzte Zeilenumbrüche auf dem Tabellenblatt _
          & vbLf & Bitte entfernen Sie diese.)
          GoTo Aufraeumen
        End If
      Next
      
      Do While 0 < ws.HPageBreaks.Count
        For x = 1 To ws.HPageBreaks.Count
          l_Zeile = ws.HPageBreaks(x).Location.Row
         ->Nachschauen, ob bei dieser Zeile gerade ein
         ->neuer Datensatz anfängt
          If ws.Cells(l_Zeile, c_SPDatensatzAnfang).Value =  Then
           ->Zeile ist nicht Datensatzanfang
            
           ->Datensatzanfang suchen
            For z = l_Zeile - 1 To c_ZMinZeile Step -1
              If ws.Cells(z, c_SPDatensatzAnfang).Value <>  Then
               ->DatensatzAnfang gefunden
                l_Zeile_DAnf = z: Exit For
              End If
            Next
            
           ->Seitenumbruch setzen
            ws.Cells(l_Zeile_DAnf, 1).Select
            ActiveWindow.SelectedSheets.HPageBreaks.Add _
                                      Before:=ActiveCell
            Exit For-> Seitenumbruch hat sich verändert
          End If
          
         ->Ende erreicht ?
          If x = ActiveSheet.HPageBreaks.Count Then
            MsgBox (Ist vollbracht :-))
            GoTo Aufraeumen
          End If
        Next
      Loop
    Aufraeumen:
      Set ws = Nothing
    End Sub
    Sub AlleManuellenSeitenumbruecheLoeschen()
      Dim x As Long
      For x = ActiveSheet.HPageBreaks.Count To 1 Step -1
        If ActiveSheet.HPageBreaks(x).Type = xlPageBreakManual Then
          ActiveSheet.HPageBreaks(x).Delete
        End If
      Next
    End Sub
     
  4. Hi, Danke für den Code...

    Steig da leider nicht komplett durch!

    Beim ausführen bleibt er bei :

    Code:
    If ActiveSheet.HPageBreaks(x).Type = xlPageBreakManual Then
    hängen.

    INHALT AUSSERHALB DES GÜLTIGEN BEREICHS...

    Ne, Idee was falsch ist?

    ciao Splizz
     
  5. Also in der Testdatei klappt es... Hmm, nur warum nicht in der normalen? :'(
     
  6. ist das Makro für 1800 Zeilen vorgesehen?^^
     
  7. Hi Splizz,

    kannst Du mir die Datei schicken. Dann könnte ich sehen, was ich nicht berücksichtigt habe. So hab ich erstmal keine Idee.  :'(

    ggf. Inhalte durch Dummys ersetzen, falls geheim

    Die Zeilenanzahl sollte dem Makro eigentlich egal sein.

    Gruß Matjes :)
     
  8. Ok, ich schicke es dir gleich mal zu, nachdem ich die Datei entschärft habe...
     
  9. Weiß zwar nicht warum, aber ist ein ganz schöner Brocken!

    2,5 M!!! ???
     
  10. Hi Fire-X,

    so ich hab den Makro noch ein klein wenig modifiziert.

    Die Zeilenumbrüche werden jetzt zwanghaft gelöscht, d.h. es ist jetzt nicht mehr notwendig das Einzel-Makro zum löschen der manuellen Seitenumbrüche zu verwenden.

    In deiner Datei waren einige Seitenumbrüche, zu denen kein Type vorhanden war.
    Ist schon merkwürdig  :-\

    Die Konsanten-Definition der ersten Wertezeile hab ich auf 9 geändert- das entspricht deiner Datei.

    Gruß Matjes :)

    Code:
    Sub SeitenumbruchVollstaendigeDatensaetz()
     ->Datensatzanfang ist gekennzeichnet durch
     ->Datum in Spalte A, sonnst ist Spalte A leer
     ->Aufgabe des Makros ist festzustellen,
     ->ob bei eingestelltem Drucker ein Datensatz
     ->gesplittet ausgedruckt wird
     ->In diesem Fall wird oberhalb diese Datensatzes
     ->ein Seitenumbruch eingefügt
     ->
     -> Seitenumbrüche werden am Anfang des
     -> Makros gelöscht !!!
      
      Const c_SPDatensatzAnfang = 1-> Spalte A
      Const c_ZMinZeile = 9->
      
      Dim ws As Worksheet
      Dim x As Long, z As Long, l_aktH As Long
      Dim l_Zeile As Long, l_Spalte As Long, l_Zeile_DAnf
      
      Set ws = ActiveSheet
      
     ->
      On Error Resume Next
      For x = 1 To ActiveSheet.HPageBreaks.Count
        ActiveSheet.HPageBreaks(x).Delete
      Next
      
      
      Do While 0 < ws.HPageBreaks.Count
        For x = 1 To ws.HPageBreaks.Count
          l_Zeile = ws.HPageBreaks(x).Location.Row
         ->Nachschauen, ob bei dieser Zeile gerade ein
         ->neuer Datensatz anfängt
          If ws.Cells(l_Zeile, c_SPDatensatzAnfang).Value =  Then
           ->Zeile ist nicht Datensatzanfang
            
           ->Datensatzanfang suchen
            For z = l_Zeile - 1 To c_ZMinZeile Step -1
              If ws.Cells(z, c_SPDatensatzAnfang).Value <>  Then
               ->DatensatzAnfang gefunden
                l_Zeile_DAnf = z: Exit For
              End If
            Next
            
           ->Seitenumbruch setzen
            ws.Cells(l_Zeile_DAnf, 1).Select
            ActiveWindow.SelectedSheets.HPageBreaks.Add _
                                      Before:=ActiveCell
            Exit For-> Seitenumbruch hat sich verändert
          End If
          
         ->Ende erreicht ?
          If x = ws.HPageBreaks.Count Then
            MsgBox (Ist vollbracht :-))
            GoTo Aufraeumen
          End If
        Next
      Loop
    Aufraeumen:
      Set ws = Nothing
    End Sub
     
Die Seite wird geladen...

Seitenumbruch über VBA variable halten - Ähnliche Themen

Forum Datum
WORD 2003 - Unerwünschter Seitenumbruch bei Serienbrief/Verzeichnis Windows XP Forum 27. Sep. 2006
Seitenumbruch bei Access Bericht? Windows XP Forum 13. März 2006
Word2003: Problem mit Grafiken bei Seitenumbruch Microsoft Office Suite 17. Mai 2005
Calc - Seitenumbruch verschieben StarOffice, OpenOffice und LibreOffice 14. Aug. 2004
Windowsanmeldung über Aufgabenplanung Windows Server-Systeme 21. Okt. 2016