Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suche per Makro

Suche per Makro
18.07.2006 16:17:32
Thorsten
Hallo.
Folgendes Problem: Habe ein Makro zum Suchen in meiner Arbeitsmappe. Nun möchte ich wissen, über welche Befehle ich es steuern kann, dass die Suche mir auch Formelergebnisse anzeigt (sprich der Wert von A1+A2+A3 = 100). Wenn ich nach 100 suche, gibt es keinen Treffer. Die Werte in den genannten Zellen kommen auch aus anderen Tabellen oder Datenbanken.
Hier der Auszug aus dem Makro:
Set rng = objSh.Range("A1:B65536").Find(What:=strFind, _
lookat:=xlPart, LookIn:=xlValues)
Danke.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche per Makro
18.07.2006 16:35:23
IngGi
Hallo Thorsten,
dass er die 100 nicht findet, liegt nicht daran, dass sich dieser Wert aus einer Formel ergibt. 100 ist ein Wert, du suchst aber nach einem Text. Wandle den Suchbegriff in einen Wert um, dann sollte er die 100 finden:
Set rng = objSh.Range("A1:B65536").Find(What:=Val(strFind), _
lookat:=xlPart, LookIn:=xlValues)
Gruß Ingolf
AW: Suche per Makro
18.07.2006 16:44:26
Thorsten
Verstehe. Und wenn sowohl Zahlen als auch Text gesucht werden müssen? Habe beides im Suchbereich. Sollte mal eine Formel mal zerschossen sein, möchte ich z.B. auch gerne den Fehler angezeigt bekommen (z.B. #Wert! oder so). Geht das dann auch?
Anzeige
AW: Suche per Makro
18.07.2006 17:04:46
IngGi
Hallo Thorsten,
da war ich leider auf dem Holzweg. Excel findet tatsächlich auch Werte, wenn nach Zahlen als Text gesucht wird. Die Lösung müsste dann wohl im Beitrag von fcs zu finden sein.
Gruß Ingolf
AW: Suche per Makro
18.07.2006 16:50:26
fcs
Hallo Thorsten,
beim Suchen/Vergleichen von Werten aus Rechenergebnissen auf "=" kann es Probleme mit der Rechengenauigkeit von EXCEL geben, die irgendwo bei 13 oder 15 signifikannten Stellen liegt. Es bleiben dann minimale Reste über, die einen "="-Vergleich ins leere Laufen lassen. Falls der Vergleich kritisch ist, dann sollte man in der Formel das Ergebnis Runden und diese "kleinen" Reste so abschneiden.
z.B. =Runden(A1+A2+A3;5)
Anderes Problem: nach der Übernahme aus Datenbanken können Zahlen als Text in den Tabellen eingetragen sein. Dann können bestimmte Suchoperationen ins Leere Laufen, auch wenn sich Excel "(leider?!) bemüht" alles was irgendwie nach Zahl riecht auch als Zahl zu behandeln.
In deiner Code-Zeile muss du für "What" eine Variant-Variable statt einer String-Variablen verwenden , dann sollte auch das Finden von Zahlenwerten funktionieren
Set rng = objSh.Range("A1:B65536").Find(What:=VariantFind, _
lookat:=xlPart, LookIn:=xlValues)
mfg
Franz
Anzeige
AW: Suche per Makro
18.07.2006 17:08:42
Thorsten
Würde es gerne testen. Wenn ich es mit deinem Vorschlag ersetze und einen Text suchen lasse, stürzt Excel ab... und es sollen Zahlen und Texte zu finden sein...
Suche Text und Zahl
18.07.2006 18:08:26
Thorsten
Leider geht es noch nicht. Es muss sowohl Zahl als auch Text als Suche zu definieren sein. Brauche dringend Hilfe!
AW: Suche Text und Zahl
18.07.2006 20:44:58
fcs
Hallo
Du muß natütlich die Variable ggf. entsprechend deklarieren. Bei Suche nach Zahlen macht lookat=xlpart keinen Sinn - hatte ich leider übersehen.
Für Zahlen muss das Makro etwa so aussehen. Es sucht im Bereich alle Zellen mit Wert 100 und zeigt die Zelladresse an.

Sub Test()
Dim varFind As Variant, rng As Range, objsh As Worksheet, ErsteAdresse As String
Set objsh = ActiveSheet
varFind = "100"
If IsNumeric(varFind) Then
'Zahlen-Suche, Findet Zellen mit Zahlen und Zellen die nur Zahlen als Text enthalten
Set rng = objsh.Range("A1:B65536").Find(What:=varFind, lookat:=xlWhole, LookIn:=xlValues)
ErsteAdresse = rng.Address
Do
MsgBox VaraintFind & "gefunden in Zelle: " & rng.Address
Set rng = objsh.Range("A1:B65536").FindNext(rng)
Loop Until rng Is Nothing Or rng.Address = ErsteAdresse
Else
'Text Teil-String-Suche, Findet Zellen, die den gesuchten String enthalten
Set rng = objsh.Range("A1:B65536").Find(What:=varFind, lookat:=xlPart, LookIn:=xlValues)
ErsteAdresse = rng.Address
Do
MsgBox VaraintFind & "gefunden in Zelle: " & rng.Address
Set rng = objsh.Range("A1:B65536").FindNext(rng)
Loop Until rng Is Nothing Or rng.Address = ErsteAdresse
End If
End Sub

gruss Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige