Microsoft Excel

Herbers Excel/VBA-Archiv

Automatische Formatierung

Betrifft: Automatische Formatierung
von: Marwas
Geschrieben am: 21.04.2003 - 19:41:37

Kann mir jemand Helfen
Ich habe ein Tabellenblatt. Nun sollte ich Daten eingeben, und dieses Blatt mit einem Rahmen versehen. Das Tabellenblatt hat mehrere Seiten. Wenn ich nun den Bereich mit einem Rahmen versehe, und danach Daten eingebe, werden beim Drucken auch die leere Seiten ausgegeben. Das heisst auch diejenigen Seiten die nur mit dem Rahmen gefüllt sind. Meine Frage Gibt es eine möglichkeit diesen Rahmen zu automatisieren.Meine Vorstellung wäre Sobald ich in Spalte A einen Wert eingebe, soll die ganze Linie z.B A1:L1 mit einem Rahmen Formatiert werden usw. Danke

  

Re: Automatische Formatierung
von: PeterW
Geschrieben am: 21.04.2003 - 20:02:39

Hallo Marwas,

das geht mit Worksheet_Change. Gib hier https://www.herber.de/forum/archiv/search/searchlist.htm als Suchbegriff Worksheet_Change ein.

Gruß
Peter

  

Re: Automatische Formatierung
von: th.heinrich
Geschrieben am: 21.04.2003 - 22:13:46

hi Marwas ?, PeterW,

wuerde eher nach DRUCKBEREICH danach RAHMEN suchen. oder umgekehrt.

A1:L1 ist jedoch bei der grundeinstellung von excel sowohl im hoch- alsauch querformat fuer 2 seiten gut.

es gibt noch die moeglichkeit den rahmen nur auf zellen mit inhalt zu beziehen,

od. SEITE-ANPASSEN.

gruss thomas


  

Re: Automatische Formatierung
von: Marwas
Geschrieben am: 23.04.2003 - 20:46:52

Hallo Peter
Kannst Du mir sagen welchen Code ich mit der Funktion Wordsheet_Change eingeben muss um diesen Effekt zu erhalten.
Ich habe im Forum keine Hinweise gefunden. Danke

  

Re: Automatische Formatierung
von: PeterW
Geschrieben am: 24.04.2003 - 19:02:46

Hallo Marwas,

sorry, ich hatte Deine Frage falsch verstanden; Du willst ja einen Rahmen um jedes Blatt.
Das geht nur, wenn alle Druckseiten die gleiche Zeilenzahl haben. Versuch mal folgendes (ist mit Hilfe der Recherche zusammen gebastelt und funktioniert)


Option Explicit

Sub SeitenRahmen()
   Dim pgeBreak As HPageBreak
   Dim iCount As Integer
   Dim iAnzSeiten As Integer
   
   iAnzSeiten = ExecuteExcel4Macro("Get.Document(50)")

      For Each pgeBreak In ActiveSheet.HPageBreaks
      
         'letzte Zeile der Seite mit Rahmen unten
         With Range(Cells(pgeBreak.Location.Row - 1, 1), Cells(pgeBreak.Location.Row - 1, 5)).Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
         End With
         
         'erste Zeile der Seite mit Rahmen oben
         With Range(Cells(pgeBreak.Location.Row, 1), Cells(pgeBreak.Location.Row, 5)).Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
         End With
         
         'Anzahl der Zeilen der ersten Druckseite
         If iCount = 0 Then
            iCount = pgeBreak.Location.Row - 1
         End If
      Next pgeBreak
   
         'Rahmen links
         With Range(Cells(iCount * iAnzSeiten, 1), Cells(1, 1)).Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
         End With
         
         'Rahmen rechts
         With Range(Cells(iCount * iAnzSeiten, 5), Cells(1, 5)).Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
         End With
         
         'Rahmen unten
         With Range(Cells(iCount * iAnzSeiten, 1), Cells(iCount * iAnzSeiten, 5)).Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
         End With

End Sub


Gruß
Peter

  

Re: Automatische Formatierung
von: marwas
Geschrieben am: 25.04.2003 - 15:53:15

Danke Peter
Leider funktioniert das bei mir nicht. Ich formuliere nochmals mein Problem.
Also ich möchte dass ein Rahmen um eine Zeile automatisch erstellt wird. Dies soll aber erst geschehen wenn ich in der Spalte A einen Text oder Wert eingegeben habe. Die Zeile geht von Spalte A bis Spalte G.
Angenommen ich gebe in A1 einen Wert ein, dann möchte ich den Rahmen von A1 bis G1. Das gleiche für A2 bis G2 usw. Mit dieser Variante hätte ich dann mein Problem gelöst. Wenn auf das Drucksymbol geklickt wird würe Excel nur die Bereiche mit Inhalt Drucken, Sonst wenn ich den Rahmen auf 2 Seiten vordefiniere, habe aber nur 2-3 Datensätze Druckt Excel 2 Seiten. Eine davon ist dann natürlich nur mit dem Rahmen unbrauchbar.
Danke nochmals für Deine intensive Mühe.

  

Re: Automatische Formatierung
von: PeterW
Geschrieben am: 25.04.2003 - 22:30:23

Hallo Marwas,

dann sollte folgender Code im Modul der Tabelle Dein Problem lösen:


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Target.Column <> 1 Then Exit Sub
Set rng = Range(Cells(Target.Row, 1), Cells(Target.Row, 7))

    With rng.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With rng.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With rng.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With rng.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

End Sub


Gruß
Peter

 

Beiträge aus den Excel-Beispielen zum Thema "Automatische Formatierung"