Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Find befehl mit mehreren Ergebnissen

Find befehl mit mehreren Ergebnissen
09.02.2022 11:56:47
kwaki
Hi,
eine weitere Frage habe ich noch. Mit dem Code suche ich einen Begriff im Arbeitsblatt und markiere die entsprechende Zelle rot.
Es kommt vor, dass der Begriff mehr als einmal gefunden wird. Wie kann ich dann alle gefundenen Ergebnisse auf einmal markieren?

Dim Bereich As Range
Set Bereich = Range(Cells(4, 3), Cells(64, 8)).Find("Test", lookat:=xlPart, LookIn:=xlValues, MatchCase:=True)
If Not Bereich Is Nothing Then
MsgBox "Das Wort Test ist in Verwendung. Entsprechende Zelle ist rot gefärbt."
Range(Bereich.Address).Interior.ColorIndex = 3
Else
MsgBox "Keine Verwendung des Wortes"
End If

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:11:59
volti
Hallo Kwaki,
hier eine Idee....
Code:

[Cc][+][-]

Sub SuchenUndFaerben() Dim oFinde As Object Dim sSuch As String, sErsteAdresse As String Dim iAnz As Integer, rBer As Range sSuch = "Test" Set rBer = Range(Cells(4, 3), Cells(64, 8)) ' Suchbereich setzen Set oFinde = rBer.Find(sSuch, lookat:=xlPart, _ LookIn:=xlValues, MatchCase:=True) ' Erstes Feld mit dem Suchbegriff suchen If Not oFinde Is Nothing Then sErsteAdresse = oFinde.Address ' Erste Adresse merken Do Set oFinde = rBer.FindNext(oFinde) If oFinde Is Nothing Then Exit Do iAnz = iAnz + 1 oFinde.Interior.ColorIndex = 3 ' Zelle färben Loop While Not oFinde Is Nothing And oFinde.Address <> sErsteAdresse End If If iAnz = 0 Then MsgBox "Keine Verwendung des Wortes " & sSuch, vbInformation Else MsgBox "Das Wort '" & sSuch & "' ist " & iAnz & " mal in Verwendung." & vbLf _ & "Entsprechende Zelle(n) sind rot gefärbt.", vbInformation End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:21:52
volti
Update, etwas kürzer.
Code:

[Cc][+][-]

Sub SuchenUndFaerben() Dim oFinde As Object Dim sSuch As String, sErsteAdresse As String Dim iAnz As Integer, rBer As Range sSuch = "Test" Set rBer = Range(Cells(4, 3), Cells(64, 8)) ' Suchbereich setzen Set oFinde = rBer.Find(sSuch, lookat:=xlPart, _ LookIn:=xlValues, MatchCase:=True) ' Erstes Feld mit dem Suchbegriff suchen If Not oFinde Is Nothing Then sErsteAdresse = oFinde.Address ' Erste Adresse merken Do iAnz = iAnz + 1 oFinde.Interior.ColorIndex = 3 ' Zelle färben Set oFinde = rBer.FindNext(oFinde) Loop While Not oFinde Is Nothing And oFinde.Address <> sErsteAdresse End If If iAnz = 0 Then MsgBox "Keine Verwendung des Wortes " & sSuch, vbInformation Else MsgBox "Das Wort '" & sSuch & "' ist " & iAnz & " mal in Verwendung." & vbLf _ & "Entsprechende Zelle(n) sind rot gefärbt.", vbInformation End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:12:37
hary
Moin
Haettest auch den anderen Thread weite rnutzen koennen.

Dim Bereich As Range, rngFind As Range
Dim firstAddress As String
Set Bereich = Range(Cells(4, 3), Cells(64, 8))
With Bereich
.Interior.Color = xlNone '--erst alles entfaerben
Set rngFind = .Find("Test", lookat:=xlPart, LookIn:=xlValues, MatchCase:=True)
If Not rngFind Is Nothing Then
firstAddress = rngFind.Address
Do
Cells(rngFind.Row, rngFind.Column).Interior.Color = vbRed
Set rngFind = .FindNext(rngFind)
Loop While rngFind.Address  firstAddress
Else
MsgBox "kein ""Test"" vorhanden"
End If
End With
gruss hary
Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:56:04
kwaki
Danke Hary, läuft einwandfrei :)
kleine Optimierung
09.02.2022 14:10:27
Daniel
Hi
da man hier die Rotfärbung auch nutzen kann um zu erkennen ob die Schleife durchgelaufen ist, kann man den Standardcode für solche Suchschleifen über mehrere Suchergebnisse hier etwas kompakter programmieren:

Sub test()
Dim Bereich As Range, rngFind As Range
Set Bereich = Range(Cells(4, 3), Cells(64, 8))
With Bereich
.Interior.Color = xlNone
Set rngFind = Bereich(1)
Do
Set rngFind = Bereich.Find("Test", after:=rngFind, lookat:=xlPart, LookIn:=xlValues, MatchCase:=True)
If rngFind Is Nothing Then Exit Do
If rngFind.Interior.Color = vbRed Then Exit Do
rngFind.Interior.Color = vbRed
Loop
End With
End Sub
Gruß Daniel
Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:45:00
Daniel
Hi
gibts Gründe, die gegen die Verwendung der Bedingten Formatierung sprechen?
das geht einfacher und schneller als Makro und passt sich bei einer Änderung der Inhalte sofort automatisch an.
Gruß Daniel
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:49:36
kwaki
Hi Daniel,
die bedingte Formatierung kenne ich leider nicht. Für mich ist es nur wichtig, dass der Anwender später am besten nur einen Knopf drückt und das Makro dann abespielt wird, ohne dass der Anwender noch etwas anderes machen muss :)
Die anderen Vorschläge probiere ich gleich einmal aus
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:54:27
Daniel
dann mach mal nen Excelkurs.
Bedingte Formatierung sollte man kennen, wenn man mit Excel effektiv arbeiten will, das gehört für mich zum Basiswissen einen fortgeschrittenen Anfängers.
https://online-excel.de/excel//grusel.php?f=1
Gruß Daniel
Anzeige
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:54:34
Daniel
dann mach mal nen Excelkurs.
Bedingte Formatierung sollte man kennen, wenn man mit Excel effektiv arbeiten will, das gehört für mich zum Basiswissen einen fortgeschrittenen Anfängers.
https://online-excel.de/excel//grusel.php?f=1
Gruß Daniel
AW: Find befehl mit mehreren Ergebnissen
09.02.2022 12:55:26
kwaki
Okay, dann schaue ich mir das mal an. Danke !

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige