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.


2 Antworten
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)
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.
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.
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.
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.
... 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.