PDA

Vollständige Version anzeigen : Zellfarbe per VBA suchen


BB67
09.07.2015, 09:43
Hallo,
ich bin leider ein absoluter Hobby-VBAler und benötige dringend Hilfe bitte :-)

Ich habe eine Tabelle (besteht nur aus einer Spalte A), in der gelb markierte Zellen erscheinen können. Wie kann ich bitte per VBA alle NICHT-Gelbe Zelllen löschen lassen?

Vielen Dank schon mal
Bernd

GMG-CC
09.07.2015, 10:33
Du kannst nach Zellen-Farbe sortieren! Und das sogar ohne VBA (oder aufzeichnen).

jack_D
09.07.2015, 10:43
Hallo Bernd

da du ja Hobby-VBAler bist hast du sicher interesse dir die Lösung zu erarbeiten.

Daher eine Hilfestellung. Muss noch sauber geschrieben werden, ist
- ungetestet und bei
- interior bin ich mir grad nicht ganz sicher
- delete shift bin ich mir grad nicht ganz sicher

Grüße


sub farbe()
with worksheets("Tabelle2")
for i = 2 to .cells(rows.count,1).end(xlup).row
if .cells(i,1).interior.color=vbgelb then
.rows(i).entirerow.delete shift:=xlup
end if
next i
end with

BB67
09.07.2015, 11:36
Vielen Dank!

Ja dass ich ohne VBA sortieren kann ist mir bekannt aber ich benötige es als VBA-Quelltext, da es ein kleiner Bestandteil eines Makros sein soll.
Mein erster Schritt war ich sortiere nach Farbe. Das konnte ich mit dem Rekorder aufzeichnen und das funktioniert sogar. Dann wollte ich mit einer "While"-Schleife solange suchen, biss keine gelbe Markierung mehr vorhanden ist und alle darunter liegenden Zeilen löschen.
Aber ich weiß nicht wie ich den Farbcode in eine While-Schleife einbauen muss :-(

EarlFred
09.07.2015, 12:26
@Jack,

bin ich mir grad nicht ganz sicher
ich mir auch nicht (hab den Code nicht gelesen), aber dass man Zeilen von unten nach oben löscht, um alle zu erwischen: Da bin ich mir sicher ;)

Grüße
EarlFred

jack_D
09.07.2015, 12:46
@ EarlFred

klar, das macht man dann iterativ. Also so oft das Makro durchlaufen lassen, bis alles Weg ist.. :p

Aber, du hast natürlich (leider mal wieder :cool: ) recht.

Also lieber TE Zeilen löscht man von unten nach oben.

DIe Schleife muss also so beginnen

for i = .cells(rows.Count,1).end(xlup).row to 2 step -1

Grüße

und danke an EarlFred für den Hinweis