Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
620to624
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
620to624
620to624
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Block vor umbruch schuetzen!!

Block vor umbruch schuetzen!!
08.06.2005 09:54:14
Max
Hallo!
Ist es irgendwie möglich in Excel eine "Range" beim ausdrucken vor einen Seitenumbruch zu schützen (so das es als gesammter Block in die nächste Seite geschoben wird) ?
Ich will aber nicht manuell einen Seitenumbruch einfuegen, der dann bei einer Veränderung in den zeilen oben drueber wieder falsch liegen wuerde und sich durch den zu sichernden block ziehen wuerde.
Grüsse

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Block vor umbruch schuetzen!!
08.06.2005 10:41:10
MichaV
Hi,
alles ist möglich. Man müsste ein Makro dazu entwerfen bzw. ein vorhandenes (verhindert Zeilenumbrüche unter Bildern) umbauen. Woran soll Excel denn erkennen, daß es sich um einen "schützenswerten" Block handelt? (best. Formatierungen, Schriftgröße, Zeilenanzahl o.ä.)
Gruss- Micha
AW: Block vor umbruch schuetzen!!
08.06.2005 11:33:45
Max
kann excel das daran erkennen dass ich einen dicken rahmen um den schuetzenswerten bereich gezogen hab?
ich kann den auch per hand markieren, das ist auch kein problem...
AW: Block vor umbruch schuetzen!!
08.06.2005 13:27:46
MichaV
Hi,
versuch diesen Code mal. Er sollte mit Rahmen und per- Hand- Markierungen funzen.


      
Option Explicit
Sub BrücheSetzen()
'Ursprungs- Code:hatetepe://wewewe.herber.de/forum/messages/614856.html
'Bruch=horizontaler Zeilenumbruch

Dim hpbBruch As HPageBreak
Dim rngZelle As Range
Dim blnKeinUmbruch() As Boolean 'True: Zeile hat irghendwo einen Rahmen
                               'oder liegt unter einem markierten Bereich
Dim blnVerschoben As Boolean 'True: Es wurde ein Bruch verschoben
Dim i As Long
Dim Erbsen As Long 'Damit es keine unendliche Geschichte wird

'In Zeilenumbruch- Vorschau wechseln, um ständige Neuberechnung der
'Zeilenumbrüche zu erzwingen
ActiveWindow.View = xlPageBreakPreview
On Error GoTo Fehler
Application.ScreenUpdating = 
False
With ActiveSheet
  
ReDim blnKeinUmbruch(1 To .UsedRange.Rows(.UsedRange.Rows.Count).Row)
'******************************
'ggf. zuerst die vorhandenen Brüche löschen
  .ResetAllPageBreaks
'******************************

'----------------------------
'Zellen mit Rahmen suchen
'Im Array blnKeinUmbruch bekommt die entsprechende Zeilennummer den Wert True

  
For Each rngZelle In .UsedRange
    
If rngZelle.Row > 1 And _
    (rngZelle.Borders(xlEdgeTop).LineStyle = xlContinuous 
Or _
    rngZelle.Borders(xlEdgeLeft).LineStyle = xlContinuous 
Or _
    rngZelle.Borders(xlEdgeRight).LineStyle = xlContinuous 
Or _
    rngZelle.Borders(xlEdgeBottom).LineStyle = xlContinuous) 
Then
      
If rngZelle.Row > UBound(blnKeinUmbruch) Then
        
ReDim Preserve blnKeinUmbruch(UBound(blnKeinUmbruch) + 1)
      
End If
      blnKeinUmbruch(rngZelle.Row) = 
True
    
End If
  
Next
'----------------------------
'Alle markierten Zeilen durchlaufen
'Im Array blnKeinUmbruch bekommt die entsprechende Zeilennummer den Wert True

      
  
For Each rngZelle In Selection.Rows
    
If rngZelle.Row > UBound(blnKeinUmbruch) Then
      
ReDim Preserve blnKeinUmbruch(UBound(blnKeinUmbruch) + 1)
    
End If
    blnKeinUmbruch(rngZelle.Row) = 
True
  
Next
      
  
'----------------------------
'Alle Brüche prüfen, ob sie verschoben werden müssen
'Wenn ja:   neuen Bruch über dem verbotenen Bereich einfügen
'           alten Bruch löschen
'           Schleife abbrechen und neu starten
'           weil HPageBreaks- Collection neue Struktur hat
'           und weil automatische Brüche sich ggf. in einen
'           verbotenen Bereich geschoben haben
'Schleife wird so oft durchlaufen, bis keine Verschiebungen
'mehr getätigt wurden --> bis kein Bruch mehr in einem verbotenen Bereich liegt
  Do
  Erbsen = Erbsen + 1
  blnVerschoben = 
False
  
For Each hpbBruch In .HPageBreaks
    
If blnKeinUmbruch(hpbBruch.Location.Row) Then
      
'Bruch muß da weg
      For i = hpbBruch.Location.Row To 1 Step -1
        
'nächsthöhere freie Zelle suchen
        If Not blnKeinUmbruch(i) Then Exit For
      
Next i
      
      
'Bruch löschen, wenn manueller Bruch
      'und neuen Bruch einfügen
      If hpbBruch.Type = xlPageBreakManual Then hpbBruch.Delete
      .HPageBreaks.Add .Cells(i, 1): DoEvents
      blnVerschoben = 
True
      
Exit For 'hpbbruch, weil Collection durch neuen hbp andere Struktur

    
End If
  
Next hpbBruch
  
Loop While blnVerschoben And Erbsen < 42
End With
Application.ScreenUpdating = 
True
If Not Erbsen = 42 Then
  MsgBox "Fertig.", vbInformation + vbOKOnly, "(c) MichaV"
Else
  MsgBox "Abgebrochen, geschützter Bereich ist größer als eine Seite.", vbCritical + vbOKOnly, "(c) MichaV"
End If
End
Fehler:
Application.ScreenUpdating = 
True
MsgBox "Fehler " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbCritical, "Ooops"
End Sub 
Gruss- Micha
PS: Rückmeldung wäre nett
Anzeige
AW: Block vor umbruch schuetzen!!
08.06.2005 14:45:37
Max
vielen dank erstma fuer deine muehen,
leider weiss ich damit nichts anzufangen :(
AW: Block vor umbruch schuetzen!!
08.06.2005 14:53:34
MichaV
Hi,
das ist das Problem, wenn man seinen Level nicht angibt.
Diesen Code als Makro in die persönliche Arbeitsmappe einfügen.
http://www.online-excel.de/excel/singsel_vba.php?f=44
Mit Alt+F8 starten und in der derzeit geöffneten Excel- Mappe gibts keine Zeilenumbrüche mehr in den Zeilen, die Zellen mit Rahmen haben oder die markiert sind.
Gruss- Micha

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige