ich bin hier neu und konnte trotz vieler Suche keinen geeigneten Hinweis finden, der mich in meinem Thema weiterbringt. Ich hoffe, es gibt jemanden, der mir helfen kann oder mir einen Tipp geben kann, dann komme ich auch wieder weiter.
Es geht um folgendes:
Ich wähle allgemein einen Bereich in einer Excel Tabelle aus. Dieser kann aus mehreren Zellen innerhalb einer Spalte, oder mehrere Zellen innerhalb einer Zeile, oder auch die gesamte Zeile oder mehrere Zeilen oder eine beliebige Kombination aus diesen sein. Mit und ohne Mehrfachauswahl mittels STRG-Taste usw.
In allen Fällen werden dann die kompletten Zeilen der sich in der Auswahl befindlichen Zellen eingefärbt.
Wird z.B. die Zelle E20 ausgewählt, wird die gesamte Zeile 20 eingefärbt. Werden die Zellen A15 und C24 ausgewählt, erfolgt das Einfärben der Zeilen 15 und 24.
Das funktioniert auch richtig gut, bis auf die Situation, wenn ich eine oder mehrere Zeilen komplett anwähle. Dann läuft mein aktueller Mechanismus durch alle Zellen einer Zeile und färbt die selbe Zeile immer wieder neu ein.
Nun suche ich eine Möglichkeit, wie ich die nächste Zeile im ausgewählten Bereich ansprechen kann, sobald eine Zeile über die entsprechende Zelle (Bestandteil des Bereiches) eingefärbt wurde.
Als Beispiel: Ich markiere Zelle B20, D20, C30, D30 und B40. Nun wird als erstes die Zeile 20 auf Grund Auswahl B20 eingefärbt. D20 soll nicht beachtet werden, da in der selben Zeile, dann wird Zeile 30 eingefärbt wegen Zelle C30 in Auswahl usw.
Ich hoffe, ich konnte mein Thema beschreiben.
Aktuell verwende ich folgenden VBA code:
For Each rCell In Selection 'Jede Zelle in der Auswahl wird bearbeitet
If ActiveSheet.Rows(rCell.Row).Hidden = False Then 'Wenn die Zeile sichtbar ist
ActiveSheet.Rows(rCell.Row).Font.Color = 5287936 'Setze Schriftfarbe auf grün
Selection.Row = Selection.Row + 1 'Hier neuer Code um zur nächsten Zeile zu Wechseln, aktuell nur ein Gedankenbeispiel zur Verdeutlichung
End If
Next
Vollständig markierte Zeilen kann ich erkennen (der Code ist bekannt), wenn nur eine markiert ist. Reicht aber nicht, da Mehrfachauswahl benötigt wird.
Der oben angegeben Code funktioniert ohne das angegebene Gedankenbeispiel in Zeile 4, es werden immer alle Zellen bearbeitet - wenn allerdings die kompletten Zeilen angewählt werden, dauert es sehr lange, bis das System durch alle Zellen einer Zeile gelaufen ist. Deswegen wird der Zeilensprung innerhalb der Selection benötigt umd ie Geschwindigkeit zu erhöhen.
Vielen Dank schon jetzt für Eure Ideen und Hilfen.
Gruß Kunzl