Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Set c = .Find("x", LookIn:=xlValues) die Zweite

Forumthread: Set c = .Find("x", LookIn:=xlValues) die Zweite

Set c = .Find("x", LookIn:=xlValues) die Zweite
02.05.2008 21:03:00
Sonnenpeter
Hallo nochmal,
angeregt durch "Erich aus Kamp-Lintfort"
siehe hier: https://www.herber.de/forum/messages/974149.html
habe ich mich auch noch einmal mit dem Thema beschäftigt.
Wobei das meine Ratlosigkeit von gestern noch nicht erklärt!
Als Anlage habe ich mal meine Bastelei beigefügt.
siehe: https://www.herber.de/bbs/user/52040.xls
"TestenFindMethodexlValues" findet nicht alles! Merkwürdig für mich ist wenn ich "TestenFindMethodexlValuesxlWhole" laufen lasse findet es im Anschluss noch weniger.
wenn "TestenFindMethodexlValuesxlPart" vorher läuft findet "TestenFindMethodexlValues" mehr Einträge
"TestenFindMethodexlValuesxlWhole" findet an wenigsten!
"TestenFindMethodexlValuesxlPart" findet nicht alles!
"TestenForEachMethode" findet alles!
Ich bin gespannt auf die Antworten.
Ich mutmaße, dass der Suchdialog vorher eingestellt werden müsste? nur wie?
Gruß Sonnenpeter

Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Set c = .Find("x", LookIn:=xlValues) die Zweite
02.05.2008 21:16:00
Gerd
Hallo Sonnenpeter,
Du bist auf meine Fragen nicht mehr so ganz vollständig eingegangen.
Oder hast es mit Lookin:= xlFormulas probiert ?
Gruß Gerd

AW: Set c = .Find("x", LookIn:=xlValues) die Zweit
02.05.2008 21:35:05
Sonnenpeter
Hallo Gerd,
in der gestrigen Vorlage waren nur absolute Werte und keine Formeln.
Deshalb dacht ich mir das Lookin:= xlFormulas nix bringt.
Bist Du da anderer Meinung?
Gruß Sonnenpeter

Anzeige
AW: Set c = .Find("x", LookIn:=xlValues) die Zweit
02.05.2008 21:43:00
Gerd
Hi Sonnenpeter,
bei mir hatte es mit xlFormulas u. xlWhole u Suchwert 0.5 funktioniert.
Ich muss natürlich noch das Fragezeichen setzen, ob das Zahlenformat in
deiner Beispielmappe bei mir richtig an kam (zwei Nachkommastellen).
Gruß Gerd

AW: Set c = .Find("x", LookIn:=xlValues) die Zweit
02.05.2008 22:26:00
Sonnenpeter
Hallo Gerd,
das Zahlenformat stimmt.
Habe das Ganze mal in die Beispielmappe eingefügt, da funzt es nicht.
Schönen Abend noch.
Gruß Sonnenpter

Anzeige
AW: Set c = .Find
03.05.2008 10:46:40
Sonnenpeter
Hallo Gerd,
schau Dir das jetzt mal an, LookIn:=xlFormulas findet nur absolute Werte (siehe gelbe Zelle)
https://www.herber.de/bbs/user/52048.xls
Gruß Sonnenpeter

Anzeige
AW: Set c = .Find
03.05.2008 12:01:43
Gerd
Hallo Sonnenpeter,
na immerhin.
So einen Methoden-Check-Code wie Erich G. erstelle ich allenfalls in den Wintermonaten,
wenn ich Muße dazu habe. Ob jener vollständig ist ?
Falls Du bei deinem Problem weiterkommen möchtest, empfehle ich dir, deine Konstellation (Zahlenformat der Spalte; mögliche Werte-Arten;Formeln?) vollständig zu beschreiben.
Dass es darauf bei der Find-Methode ankommt, ist ja "eh' klar".
Gruß Gerd

Anzeige
AW: Find-Methode - @Gerd
03.05.2008 23:26:57
Erich
Hi Gerd,

So einen Methoden-Check-Code wie Erich G. erstelle ich allenfalls in den Wintermonaten,
wenn ich Muße dazu habe. Ob jener vollständig ist ?

Was ich in https://www.herber.de/forum/archiv/972to976/t973902.htm#974149 geschrieben habe, ist doch nun wirklich
kein Methoden-Check, sondern nur ein kleines Beispiel für die im Betreff aufgestellte Behauptung.
Die Frage, ob er vollständig sein, erübrigt sich damit wohl.
Die 5 oder 10 Minuten, die ich dafür aufgewandt habe, halte ich für recht gut angelegt - auch im Sommer.
Besser einmal etwas intensiver nachdenken als beim nächsten ähnlichen Problem wieder rätseln
und vielleicht hereinfallen. Da unterscheiden sich vermutlich unsere Arbeitsweisen etwas.
Wenn ich so etwas wie die Find-Methode einsetze, will ich vorher wissen, welche Ergebnisse ich
unter welchen Bedingungen erwarten kann, wie ich die Methode zur Lösung eines Problems richtig,
vielleicht optimal, oder besser gar nicht anwende.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Find-Methode - @Gerd
04.05.2008 01:22:54
Gerd
Hallo Erich,
wenn Du dies so schnell hingekriegt hast, meine Hochachtung.
Außerdem hast Du ein paar Expertenmeinungen zu diesem Thema damit widerlegt.
Der Fragesteller war aber offenbar der Meinung, mein Lösungsvorschlag müsste bei
allen Zahlenformat-Konstellationen gleichzeitig funktionieren. Dem ist natürlich nicht so.
Meine Vorgehensweise ist, im Tabellenbereich für eine einheitliche Datenhaltung zu sorgen,
z.B. durch Runden u. schaue mir den Typ des Suchbereichs an.
Die Argumente von Lookat und Lookin probiere ich, falls erforderlich, dann durch u.
bekomme im Regelfall so den passenden Variablentyp/ das passende Format für den
Suchbegriff.
Gruß Gerd

Anzeige
AW: Find-Methode - @Gerd
04.05.2008 11:18:00
Ramses
Hallo Gerd
Sorry, dass ich mich da nochmal einmische
Wenn ich eine Zahl suche, und das war die Anforderung, dann ist es völlig unerheblich in welchem Zahlenformat !! diese dargestellt werden.
Ich such mit der Find-Methode, ohne spezielle Zusätze immer nach den WERTEN in der Zelle.
Daher ist die Aussage, dass die Formatierung unerheblich ist, richtig.
Wenn ich Text suche, dann suche ich Text (Suchbegriff in Anführungszeichen) und dann finde ich Ihn auch.
Demzufolge ist die Methode von Erich zwar schön um die Abhängigkeiten zu testen und zum lernen.
Grundsätzlich ist aber der Programmierer, bzw. der Aufgabensteller, dafür verantwortlich zu definieren was gesucht werden soll
https://www.herber.de/bbs/user/52065.xls
Leider wird bei dem ganzen Dilemma die letzte Variant-Option der FIND-Methode immer wieder vergessen:
SearchFormat Optional Variant. The search format.
Gruss Rainer

Anzeige
Nachtrag
04.05.2008 11:23:00
ramses
Hallo Gerd
Vielleicht müsst ihr bei eurem DEUTSCHEN Excel den "Punkt" gegen das "Komma" austauschen
Das ist vielleicht die eigentliche Krücke :
Dass das deutsche EXCEL mit dem schweizer EXCEL nicht ganz kompatibel ist :-)
Gruss Rainer

AW: Find-Methode - @Gerd
04.05.2008 11:51:00
Gerd
Hallo Rainer,
warum eigentlich "sorry" :-)
Komm statt Punkt. Nee, da lag Nepumuk schon richtig. Beim "deutschen" Excel entspricht dem Komma
bei (echtern)Zahlen in VBA der Punkt.
SearchFormat: Man nehme, wenn man hat. Diesen Parameter gibt es, glaub' ich, ab xl2003.
Mag sein, dass Du deshalb so hinkommst.
Im deutschen xl2000 ist das unbefriedigende Ergebnis mit dem Zahlenformat (siehe Erich G.)
nun mal Fakt, kein einheitlicher Suchbegriff möglich.
Evtl. hätte ich mich wegen Versionsunterschieden besser ganz rausgehalten. :-)
Gruß Gerd

Anzeige
AW: Find-Methode - @Gerd
04.05.2008 13:53:53
Sonnenpeter
Hallo nochmal,
ich bin mir nicht sicher, ob ihr euch meine Datei mal runtergeladen habt und mal ein bisschen damit gespielt habt?
Es gibt wirklich für mich überraschende Ergebnisse. Je nach dem in welcher Reihenfolge die Makros ablaufen finden die Makros mal mehr und mal weiniger.
Was mich wieder zur Frage der Suchparametereinstellungen bringt.
Als Anlage noch mal meine Datei mit den Makros von Rainer ergänzt (zum Teil angepasst).
https://www.herber.de/bbs/user/52067.xls
Gruß Sonnenpeter
Aus dem heute sehr sonnigen Rheinhessen :-)

Anzeige
AW: Find-Methode
04.05.2008 22:55:00
Erich
Hi Sonnenpeter,
so überraschend ist es nicht, dass die Reihenfolge der Makros Einfluss auf die Suchergebnisse hat.
Bei Find ist es so: Wenn man einen Parameter weglässt, verwendet Find die Einstellung,
die dieser Parameter bei der vorigen Suche (ob par VBA oder per Suchen in Excel) hatte.
Excel merkt sich also die Sucheinstellungen. (Das sieht man direkt,
wenn man in Excel die Suche ein paar Mal aufruft und dabei die Suchoptionen variiert.)
Deshalb ist es immer ratsam, bei Find immer alle Parameter anzugeben. Damit wird man unabhängig davon,
wie die vorige Suche gesteuert wurde, also unabhängig vom Zufall.
(Allenfalls könnte man bei der Suche nach Zahlen mal den Parameter für Groß/Kleinschreibung (MatchCase) weglassen.)
Ebenso ratsam ist es, bei der manuellen Suche in Excel zu überprüfen, ob man mit den richtigen Einstellungen sucht.
Warum Rainer sich in seiner Routine bei "Set rng = Cells.Find(what:=sFind)" auf die Angabe des
what-Parameters beschränkt, ist für mich schlicht unverständlich.
Zum SearchFormat-Parameter habe ich in meinem Posting an Ramses schon etwas geschrieben -
auch den sollte man nicht einfach weglassen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Find-Methode
06.05.2008 00:10:00
Ramses
Hallo Erich
"...auf die Angabe des what-Parameters beschränkt, ist für mich schlicht unverständlich..."
Das sollte nur als Beispiel dienen, das mit diesem simplen Aufruf sowohl der Wert "0.5" innerhalb eines Textes (xlPart) in A1 wie auch als reiner Wert (xlWhole) von EXCEL gefunden wird.
Ansonsten kann ich dir nur zustimmen:
"...Deshalb ist es immer ratsam, bei Find immer alle Parameter anzugeben...."
Daher wird auch der Wert 50% nicht gefunden ,... aber dir ist es anscheinend als einzigem aufgefallen ! ;-)
Gruss Rainer
PS: Gruss aus Malaysia, daher die Verzögerung der Antwort :.)

Anzeige
AW: Find-Methode - @Ramses
04.05.2008 19:16:00
Erich
Hallo Rainer,
so langsam verstehe ich anscheinend die Excel/VBA-Welt nicht mehr.
Wenn ich unter XL2002 (XP) deine Mappe https://www.herber.de/bbs/user/52065.xls öffne
und das Makro laufen lasse, wird der Wert 0,5 in A6 (50,00%) NICHT gefunden. Ist das bei dir anders?
Nach meinen Tests ist der Sucherfolg sehr wohl davon abhängig, wie die Zellen formatiert sind.
Schau dir bitte diese Mappe mal an:
https://www.herber.de/bbs/user/52074.xls
Den Parameter SearchFormat gibts in XL2002 auch schon, allerdings hilft er hier nicht weiter.
IMHO dient er dazu, nach Formaten zu suchen bzw. die Suche nach einem Wert auf bestimmte Formate einzugrenzen.
"SearchFormat:=False" empfielt sich, um eine eventuelle vorherige Format-Suche auszuschalten.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Find-Methode - @Ramses
05.05.2008 12:51:07
Erich
Hi Rainer,
deine Mappe (52065.xls) habe ich noch etwas erweitert:
https://www.herber.de/bbs/user/52098.xls
Meine daraus reultierende Meinung:
Find() eignet sich nicht zur Zahlensuche,
wenn man auch Formelergebnisse finden
und von Zellformaten unabhängig sein will.
Weiter unten im Thread habe ich gestern auch noch zwei Beiträge dazu geschrieben.
Dein (und auch Nepumuks) Kommentar dazu wäre mir wichtig.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Effektive Nutzung der Find-Methode in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle "Einfügen" > "Modul".

  3. Schreibe den Code: Kopiere den folgenden Code in das Modul:

    Sub SucheWert()
       Dim c As Range
       Dim Suchwert As String
    
       Suchwert = "x" ' Der Wert, den du suchen möchtest
       Set c = Cells.Find(What:=Suchwert, LookIn:=xlValues) ' Suche in Werten
    
       If Not c Is Nothing Then
           MsgBox "Wert gefunden in: " & c.Address
       Else
           MsgBox "Wert nicht gefunden"
       End If
    End Sub
  4. Anpassen der Parameter: Du kannst den LookIn-Parameter ändern, um in Formeln zu suchen:

    Set c = Cells.Find(What:=Suchwert, LookIn:=xlFormulas) ' Suche in Formeln
  5. Makro ausführen: Drücke F5, um das Makro auszuführen und die Suche zu starten.


Häufige Fehler und Lösungen

  • Fehler: "Wert nicht gefunden" trotz vorhandenen Wertes.

    • Lösung: Überprüfe, ob der LookIn-Parameter korrekt eingestellt ist. Bei der Suche nach Formeln sollte LookIn:=xlFormulas verwendet werden.
  • Fehler: Der Suchwert wird nicht erkannt.

    • Lösung: Achte darauf, dass der Suchwert exakt mit dem in der Zelle übereinstimmt (z.B. Groß- und Kleinschreibung).
  • Fehler: Unerwartete Ergebnisse bei der Suche.

    • Lösung: Stelle sicher, dass alle Parameter, einschließlich LookAt, korrekt gesetzt sind. Beispiel: LookIn:=xlValues, LookAt:=xlWhole.

Alternative Methoden

  • For Each Schleife: Anstatt die Find-Methode zu verwenden, kannst du auch eine For Each-Schleife verwenden, um durch alle Zellen zu iterieren:

    Dim Zelle As Range
    For Each Zelle In Cells
       If Zelle.Value = Suchwert Then
           MsgBox "Wert gefunden in: " & Zelle.Address
       End If
    Next Zelle
  • AutoFilter: Eine alternative Methode ist die Verwendung von AutoFilter, um gezielt nach Werten in einer Tabelle zu suchen.


Praktische Beispiele

  1. Suchen nach einem spezifischen Text:

    Sub SucheText()
       Dim c As Range
       Set c = Cells.Find(What:="Test", LookIn:=xlValues)
       If Not c Is Nothing Then
           MsgBox "Text gefunden in: " & c.Address
       End If
    End Sub
  2. Suchen nach einer Zahl in Formeln:

    Sub SucheZahl()
       Dim c As Range
       Set c = Cells.Find(What:=0.5, LookIn:=xlFormulas)
       If Not c Is Nothing Then
           MsgBox "Zahl gefunden in: " & c.Address
       End If
    End Sub

Tipps für Profis

  • Alle Parameter angeben: Gebe immer alle Parameter für die Find-Methode an, um unerwartete Ergebnisse zu vermeiden. Dies umfasst What, LookIn, LookAt, SearchOrder, MatchCase und SearchFormat.

  • Suchparameter speichern: Wenn du die Suchparameter im Voraus speicherst, kannst du die Ergebnisse besser steuern und reproduzieren.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler während der Ausführung des Makros zu vermeiden.


FAQ: Häufige Fragen

1. Frage Wie kann ich die Find-Methode verwenden, um nach formatierten Zellen zu suchen?

Antwort: Du kannst den Parameter SearchFormat verwenden, um eine bestimmte Formatierung bei der Suche zu berücksichtigen. Dieser Parameter ist ab Excel 2003 verfügbar.

2. Frage Was ist der Unterschied zwischen LookIn:=xlValues und LookIn:=xlFormulas?

Antwort: LookIn:=xlValues sucht nach den sichtbaren Werten der Zellen, während LookIn:=xlFormulas nach den Formeln in den Zellen sucht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige