AW: Formatierung
15.09.2005 14:04:29
Volker
Hallo Klaus,
freut mich, wenns funzt.
Ich hab mal unter jede Zeile einen 'Kommentar geschrieben
Sub zeilen_faerben()
Dim last_col, i, j, farbe As Integer
'4 Ganzzahlvariablen, die benötigt werden
last_col = ActiveSheet.UsedRange.Columns.Count
'=Index der letzten benutzen Spalte im Tabellenblatt (z.B Spalte O hat Index 20)
'weiß nicht mehr, wie breit deine Tabelle war
farbe = 35
'der Var für die Hintergrungfarbe wird ein Wert zugeordnet
j = 1
'i und j werden als Zähler für den Zeilenindex benutzt
i = IIf(Cells(1, 1) <> "", 1, Cells(1, 1).End(xlDown).Row)
'wenn A1 nicht leer, dann i=1, sonst i=Index der 1. nichtleeren Zeile von oben
While Cells(i, 1) <> ""
'solange Zelle Ai (=Range("A"&i) nicht leer
j = Columns("A").Find("Ergebnis", after:=Cells(j, 1)).Row
,j=Zeilenindex der 1. Zelle mit "Ergebnis" unterhalb Zeile i
Range(Cells(i, 1), Cells(j, last_col)).Interior.ColorIndex = farbe
'Bereich Range("A"&i) bis Range("O"&j) wird mit Farbe 35 eingefärbt
farbe = IIf(farbe = 35, 36, 35)
'wenn farbe=35, dann farbe=36, sonst farbe=35. Nach jeder Färbeaktion wechselt die Farbe
i = j + 1
'i=zeilenindex der Zelle mit "Ergebnis" + 1 ==> Beginn nächster Block
'Sollte Zelle(Ai) leer sein, also letzter Block gefärbt, ist Abbruchbedingung
'für Schleife erreicht (s.o.)
Wend
'zurück zu while......
End Sub
Mal ein Tip für Anfänger: wenn du dich im VBA Editor befindest, kannst du mit F8 den Code schrittweise abarbeiten. Ma kann also verfolgen, welche Zeile was in der Tabelle bewirkt. Wenn du mit dem Cursor über eine Variable gehst, wird dir deren Wert angezeigt.
Beides ist zum Debuggen sehr nützlich.
Noch was: Der Makrorekorder ist nicht nur für Anfänger. Die meisten hier sind zwar in VBA fortgeschritten, aber deswegen keine wandelnden VBA-Handbücher. Man muß eben wissen, wo man suchen muß. Die wenigsten kennen die ganze Syntax auswendig, sondern benutzen häufig auch den Rekorder und passen das Ergebnis an. Das gilt auf jeden Fall für mich.
Viele Grüße und immer schön am Ball bleiben
Volker