Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen / Zeilen per VBA formatieren?

Zellen / Zeilen per VBA formatieren?
10.02.2007 19:07:51
Selma
Hallo Excel-Freunde,
ich möchte wie folgt die Zellen / Zeilen formatieren:
a) Wenn in Spalte A in Zelle der Text "$TYP:" vorkommt bzw. steht, dann diese Zelle und die Zelle rechts daneben in orange Farbe mit dünnen Rahmen darstellen.
b) Die Zeile unter dem Text "$TYP:" bis zum letzten Eintrag (bezogen auf Spalte dieser Zeile) in graue Farbe mit dünnen Rahmen darstellen.
c) alle andere Zeilen (bis erste leere Zelle kommt / bezogen auf Spalte A) in grüne Farbe mit dünnen Rahmen darstellen.
Die letzte Spalte die farbig dargestellt werden soll ist die aus b)
Ich füge eine Beispieldatei mit Arbeitsblätter VORHER / NACHHER.
https://www.herber.de/bbs/user/40318.xls
Wie mache ich das per VBA, da ich an ca. 50 Dateien diese Formatierung durchführen möchte?
Vielen Dank im Voraus...
Liebe Grüße
SELMA
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen / Zeilen per VBA formatieren?
11.02.2007 10:03:45
stormy_weathers
Hallo SELMA
mir scheint Du möchtest die Formatierungen der Daten einmalig durchführen.
Dazu kannst Du einen Bereich (den mit den meisten Zeilen; am besten legst Du Dir ein Muster an) kopieren. Dann markierst Du den Zielbereich und mit der rechten Maustaste das Kontext-Menü aktivieren. Mit "Inhalte einfügen" kannst Du dann nur die Formate übertragen.
Wenn ich heute mal noch ein paar minuten Zeit finde, versuche ich Dir das ganze mal per VBA zu lösen.
Kannst Dir in der Zwischenzeit auch mal versuchen das ganze mit dem Makrorekorder aufzuzeichnen und dann zusammenkopieren.
Gruß
stormy
Anzeige
AW: Zellen / Zeilen per VBA formatieren?
11.02.2007 10:17:52
fcs
Hallo Selma,
nachfolgend Makros, die sytematisch die Formarierung durchführen.
Lege eine neue Exceldatei an und öffne den VBA-Editor.
Im VBA-Editor fügst du ein Modul ein und kopierst den Code der Makros in das Editor-Fenster des Moduls.
Datei speichern und Makro-Starten.
Im angezeigten Datei-Auswahlkatalog kannst du eine oder mehrere Dateien auswählen.
Beim Speichern der formatierten Dateien werden die Original-Dateien überschrieben. Falls das nicht gewünscht ist, dann vor der Aktion die zu formatierenden Dateien in ein separates Verzeichnis kopieren.
Gruss
Franz

Sub Formatierung()
'Systematische Formatierung von Zellen in gewählten Dateien
Dim wb As Workbook, wks As Worksheet, Zeile As Long, ZeileL As Long, Spalte As Integer
Dim strWb, j As Integer, i As Integer
Do
'Arbeitsmappe(n) auswählen, die formatiert werden sollen, _
Mehrfachauswahl im Dialog ist möglich
strWb = Application.GetOpenFilename(Filefilter:="Excel (*.xls), *.xls", _
Title:="Bitte Datei(en) für Formatierung auswählen, Abbrechen beendet das Makro", _
MultiSelect:=True)
If Not IsArray(strWb) Then Exit Sub 'Abbrechen wurde im Dialog gewählt
'Gewälte Dateien abarbeiten
For j = LBound(strWb) To UBound(strWb)
Set wb = Workbooks.Open(Filename:=strWb(j))
Application.ScreenUpdating = False
'Alle Blätter der Arbeitsmappe formatieren
For i = 1 To wb.Worksheets.Count 'to auf 1 setzen wenn immer nur das 1. Blatt formatiert werden soll
Set wks = wb.Worksheets(i)
With wks
Zeile = 1
ZeileL = .Cells(.Rows.Count, 1).End(xlUp).Row 'Letzte Zeile mit Daten
Do
'Zeile mit "$TYP:" suchen
Do Until .Cells(Zeile, 1).Value = "$TYP:"
If Zeile > ZeileL Then GoTo NextBlatt
Zeile = Zeile + 1
Loop
'Typ-Zellen formatieren
.Range(.Cells(Zeile, 1), .Cells(Zeile, 2)).Font.Bold = True
Call RahmenFarbe(.Range(.Cells(Zeile, 1), .Cells(Zeile, 2)), 45, xlContinuous, xlHairline)
'Überschrift-Zeile formatieren
Zeile = Zeile + 1
Spalte = .Cells(Zeile, .Columns.Count).End(xlToLeft).Column 'Letzte Spalte in Überschriftzeile
.Range(.Cells(Zeile, 1), .Cells(Zeile, Spalte)).Font.Bold = True
Call RahmenFarbe(.Range(.Cells(Zeile, 1), .Cells(Zeile, Spalte)), 15, xlContinuous, xlHairline)
'Daten-Zeilen formatieren
Do Until IsEmpty(.Cells(Zeile + 1, 1))
If Zeile > ZeileL Then GoTo NextBlatt
Zeile = Zeile + 1
.Cells(Zeile, 1).Font.Bold = True
Call RahmenFarbe(.Range(.Cells(Zeile, 1), .Cells(Zeile, Spalte)), 35, xlContinuous, xlHairline)
Loop
Loop
End With
NextBlatt:
Next i
Application.ScreenUpdating = True
'Datei speichern und schließen
wb.Save
wb.Close
Next j
Loop
End Sub
Sub RahmenFarbe(Bereich As Range, Farbe, LinieStil, LinieBreite)
'Farbe und Linien des Zellbereichs formatieren
With Bereich
.Interior.colorindex = Farbe
.BorderAround LineStyle:=LinieStil, Weight:=LinieBreite
With .Borders(xlInsideVertical)
.LineStyle = LinieStil
.Weight = LinieBreite
End With
End With
End Sub

Anzeige
AW: Zellen / Zeilen per VBA formatieren?
11.02.2007 16:24:47
Selma
LG
Selma
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zellen und Zeilen per VBA formatieren


Schritt-für-Schritt-Anleitung

Um Zellen und Zeilen in Excel per VBA zu formatieren, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Ein neues Modul anlegen:

    • Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)" und wähle Einfügen > Modul.
  3. Code einfügen:

    • Kopiere den folgenden VBA-Code in das Modul:
    Sub Formatierung()
       Dim wb As Workbook, wks As Worksheet, Zeile As Long, ZeileL As Long, Spalte As Integer
       Dim strWb, j As Integer, i As Integer
       Do
           strWb = Application.GetOpenFilename(Filefilter:="Excel (*.xls), *.xls", _
           Title:="Bitte Datei(en) für Formatierung auswählen, Abbrechen beendet das Makro", _
           MultiSelect:=True)
           If Not IsArray(strWb) Then Exit Sub
           For j = LBound(strWb) To UBound(strWb)
               Set wb = Workbooks.Open(Filename:=strWb(j))
               Application.ScreenUpdating = False
               For i = 1 To wb.Worksheets.Count
                   Set wks = wb.Worksheets(i)
                   With wks
                       Zeile = 1
                       ZeileL = .Cells(.Rows.Count, 1).End(xlUp).Row
                       Do
                           Do Until .Cells(Zeile, 1).Value = "$TYP:"
                           If Zeile > ZeileL Then GoTo NextBlatt
                           Zeile = Zeile + 1
                           Loop
                       End With
                       ' Formatierungen hier hinzufügen...
                   NextBlatt:
               Next i
               Application.ScreenUpdating = True
               wb.Save
               wb.Close
           Next j
       Loop
    End Sub
  4. Makro ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle das Makro "Formatierung" aus und klicke auf Ausführen.

Dieser Code sucht nach dem Text "$TYP:" in Spalte A und formatiert die Zellen entsprechend.


Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht durch
    Lösung: Stelle sicher, dass in Spalte A tatsächlich der Text "$TYP:" vorhanden ist. Wenn nicht, wird das Makro nicht richtig ausgeführt.

  • Fehler: Zellen werden nicht wie gewünscht formatiert
    Lösung: Überprüfe den Code und stelle sicher, dass die Farben und Rahmenstile korrekt eingestellt sind. Du kannst die ColorIndex-Werte im RahmenFarbe-Sub anpassen.


Alternative Methoden

Eine einfache Methode, um Zellen in Excel zu formatieren, ist die Verwendung des Makrorekorders. Du kannst die Schritte zur Formatierung aufzeichnen und das resultierende VBA-Skript anpassen.

  1. Gehe zu Entwicklertools > Makro aufzeichnen.
  2. Führe die gewünschten Formatierungen manuell durch.
  3. Stoppe die Aufnahme und bearbeite den generierten Code.

Praktische Beispiele

Hier ist ein kurzes Beispiel, wie du die Formatierung für eine Zeile mit dem Text "$TYP:" umsetzen kannst:

Sub RahmenFarbe(Bereich As Range, Farbe, LinieStil, LinieBreite)
    With Bereich
        .Interior.ColorIndex = Farbe
        .BorderAround LineStyle:=LinieStil, Weight:=LinieBreite
        With .Borders(xlInsideVertical)
            .LineStyle = LinieStil
            .Weight = LinieBreite
        End With
    End With
End Sub

In diesem Beispiel wird die Zelle mit der gewünschten Farbe und dem gewünschten Rahmen formatiert.


Tipps für Profis

  • Code optimieren: Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass dein Makro auch bei unerwarteten Eingaben robust bleibt. Zum Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Wie kann ich die Farbe der Zellen ändern?
Du kannst die ColorIndex-Werte im RahmenFarbe-Sub anpassen, um die gewünschte Farbe für die Zellen festzulegen.

2. Kann ich das Makro für mehrere Dateien gleichzeitig ausführen?
Ja, der bereitgestellte Code ermöglicht die Auswahl mehrerer Dateien im Dialogfeld. Wähle einfach die gewünschten Dateien aus und das Makro wird sie nacheinander formatieren.

3. Welche Excel-Version benötige ich?
Der VBA-Code ist mit Excel 2010 und höheren Versionen kompatibel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige