Suche nach erster Zelle in bestimmter Farbe

Hallo,

wie kann ich mit .find nach einer Zelle in einer bestimmten Füllfarbe suchen? Eigentlich klappts so:

Application.FindFormat.Clear
Application.FindFormat.Interior.Color = 65535
Set Suchung = Range(Cells(1, 1), Cells(1, 230)).Find(what:="\*", \_
 after:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, \_
 searchdirection:=xlNext, searchformat:=True)

Aber:

Die von mir zuvor eingefärbte Zelle wurde nicht gefunden. Erst als ich die Zelle noch einmal in derselben Farbe eingefärbt hatte, hat’s geklappt. Warum? Ist die Suche vom Alter der Färbung abhängig? Wie kann ich zuverlässig die erste (und auch mit einem anderen .find die letzte) Zelle in einer bestimmten Füllfarbe finden?

Wie kann ich auch die erste Zelle einer Zeile finden, wenn sie gefärbt ist? Leider sucht .find ja immer erst eine Zelle später, und Cells(1, 0) darf man ja nicht eingeben.

Die oben geschriebene .find-Sache funktioniert nur mit dem after:= … Warum? Sollte es nicht wenigstens standardmäßig ab der ersten notierten Zelle suchen? Wenn ich mit what:=„Hallo“ suche, klappts ja auch ohne after:=. Warum ist es ausgerechnet bei der Wildcard+Format-Suche nötig?

Dieses after ist überhaupt seltsam. In manchen Hilfetexten steht, daß man mit after:=LastCell den Interpreter dazu veranlassen könnte, von hinten beginnend zu suchen und dann mit (searcdirection:=xlNext) dem Anfang des definierten Bereichs weiterzumachen, was Problem 2) abhelfen würde. Wenn ich aber LastCell als Parameter eingebe, erhalte ich eine Fehlermeldung. Ist der Parameter in den aktuellen Versionen entfernt worden? (Ich habe Office 2010)

Vielen Dank schon mal für Eure Hilfe
Hanno

zu 2/4
Hallo Hanno,

Wie kann ich auch die erste Zelle einer Zeile finden, wenn sie
gefärbt ist? Leider sucht .find ja immer erst eine Zelle
später, und Cells(1, 0) darf man ja nicht eingeben.

probier anstatt
Set S = ActiveSheet.Range(„A1:A10000“).Find(100)
dieses:
Set S = ActiveSheet.Range(„A1,A1:A10000“).Find(100)

Ist der Parameter in den aktuellen Versionen
entfernt worden? (Ich habe Office 2010)

Ich habe kein XL 2010

Gruß
Reinhard

Hallo, Hanno.

Wie kann ich zuverlässig die erste (und auch
mit einem anderen .find die letzte) Zelle in einer bestimmten
Füllfarbe finden?

Zuverlässig mit einer Schleife, aber ob Dir das gefällt?

Private Sub FarbeFinden()
 For s = 1 To 230
 If Cells(1, s).Interior.ColorIndex xlNone Then
 MsgBox Cells(1, s).Address
 Next
End Sub

Wie kann ich auch die erste Zelle einer Zeile finden, wenn sie
gefärbt ist? Leider sucht .find ja immer erst eine Zelle
später, und Cells(1, 0) darf man ja nicht eingeben.

Würde durch die Schleife erledigt.

Wenn ich aber LastCell als Parameter eingebe, erhalte ich eine
Fehlermeldung. Ist der Parameter in den aktuellen Versionen
entfernt worden? (Ich habe Office 2010)

Ist mit LastCell das hier gemeint?

Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell)

Falls nicht, ist LastCell möglicherweise eine Variable, die nur sinnbildlich hier so genannt wurde. Weiterhelfen könnte Dir da vielleicht

Tabelle1.Range(Cells(1, 230).Address).End(xlToLeft).Address

Das würde Dir die Adresse der letzten Zelle in Zeile 1 zurückgeben, die einen Wert beinhaltet.

Möglich wäre auch das Folgende Schema, allerdings ist UsedRange mit erheblicher Vorsicht zu genießen:

Cells(1, Tabelle1.UsedRange.Column + Tabelle1.UsedRange.Columns.Count - 1).Address

Beispiel: Nehmen wir an, Du willst aus dem Bereich A1:J1 mit der obigen Formel die letze eingefärbte Zelle in Zeile 1 finden. Das funktioniert nur, wenn Du wirklich nur in diesem Bereich jemals etwas gemacht hast. Hast Du z.B in Zelle M17 irgendwann einmal einen Rahmen gesetzt, dann ist UsedRange A1:M17 und der bleibt gespeichert, es sei denn, es werden alle jemals veränderten Zellen gelöscht.

VG
Carsten