Frage von LukasWWW, 303

Wie kann man ein Makro in mehreren Zeilen wiederholen?

Ich soll für einen Bekannten in der Feuerwehr ein Makro zu einer Excel Liste schreiben. Konkret: - Wenn in Spalte B ein "A" für Atemschutz steht, soll die Zeile rot hinterlegt werden. Das Makro dazu habe ich auch schon geschrieben. Das Problem: Ich müsste dieses Makro jetzt für jede Zeile neu kopieren und abändern. Gibt es eine Möglichkeit das Makro für jede Zeile zu wiederholen?

Tabelle und Makro anbei.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 243

Du klammerst deinen Code am besten mit einer Schleife.

Sub Flo
  Dim i as Integer
For i=2 to Range("B2").End(xlDown).Row If Range("B"&i).Value = "A" Then Range("B"&i&":J"&i).Select '... Next End Sub

(ungetestet)

Kommentar von maximilianus7 ,

... wobei ich die schreibweise cells(i, "B") statt range("B"&i) etwas eleganter halte.

nicht ganz so elegant ist die alternative für den spaltenbereich:

Range(Cells(i, "B"), Cells(3, "J")).Select 
aber auch hier wird die string-verkettung vermieden.

Kommentar von Suboptimierer ,

Ich wusste gar nicht, dass das so geht.

Ich habe Range immer für die A1-Schreibweise (Range("B1")) verwendet und Cells für die ZS-Schreibweise (Cells(1,2)).

Ich nutze am liebsten, wenn es mir die Finger nicht bricht, die A1-Schreibweise, weil man sich damit sofort im Sheet wiederfindet und nicht erst die Spalten abzählen muss.

Bei vorgegebener Tabellenbreite ist das auch kein Problem.

Früher habe ich viel mit i, j iteriert, heute finde ich For Each bequemer, auch wenn langsamer.

Antwort
von quinoman, 203

Dafür brauch man kein Makro, das macht die Bedingte Formatierung besser.

Einfach mal googeln, das WIE ist versionsabhängig. Wenn Du nicht klar kommst, schreibe mir mal die Version von xl. Ich schau in 2, 3 Std.  vorbei, dann kann ich es bei Bedarf erklären.

 

Kommentar von LukasWWW ,

Mit bedingter Formatierung schaff ich immer nur eine Zelle zu markieren und nicht die ganze Zeile...

Also z.B. Zelle B2:J2

Wäre super wenn du mir helfen könntest.

Kommentar von DeeDee07 ,

Du musst zunächst den gesamten Bereich, also B2 bis J.... markieren, und erstellst dann eine neue Regel für die Bedingte Formatierung, mit der Formel

=$B2="a"

und das gewünschte Format wählen. Dann wird die gesamte Zeile (von B bis J) markiert. Die Zeilennummer passt sich für jede Zeile an.

Im übrigen solltest du nur anonymisierte Screenshots posten.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten