Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
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

Suchfunktion per Makro findet keine Daten

Suchfunktion per Makro findet keine Daten
28.02.2024 17:07:43
Robert Pilz
Hallo liebe Exelgemeinde!

Habe mal wieder ein Problem bei welchen ich Eure Hilfe bräuchte.
Habe einen Code der über CommandButton-Steuerelement ausgeführt wird. Funktioniert auch sehr gut wenn ich einzelne Worte, oder Zahlen suchen. Aber ein komplettes Datum wie z.B. 16.03.2024 wird einfach ignoriert und es kommt "kein Ergebnis gefunden".
Woran kann das liegen? Setze mal den Code und eine Beispieldatei hier herein.

Vielleicht ist Jemand so lieb und kann mir helfen.

Für Eure Bemühungen danke ich Euch im voraus.


LG Robert
Private Sub CommandButton1_Click()

Dim strSearch As String, strFirstAddress As String
Dim objCell As Range, objWorksheet As Worksheet
Dim blnAbort As Boolean, blnFound As Boolean
Dim lngOldColor As Long
strSearch = InputBox("Suchbegriff:", "Suche nach...")
If strSearch > vbNullString Then
Do
For Each objWorksheet In ThisWorkbook.Worksheets
Set objCell = objWorksheet.Cells.Find(What:=strSearch, _
LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not objCell Is Nothing Then
strFirstAddress = objCell.Address(External:=True)
blnFound = True
Do
Call Application.Goto(Reference:=objCell)
With objCell.Interior
lngOldColor = .Color
.Color = RGB(155, 194, 230)
End With
If MsgBox("Weitersuchen?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then
objCell.Interior.Color = lngOldColor
blnAbort = True
Exit Do
End If
objCell.Interior.Color = lngOldColor
Set objCell = objWorksheet.Cells.FindNext(After:=objCell)
If objCell Is Nothing Then Exit Do
Loop Until objCell.Address(External:=True) = strFirstAddress
End If
If blnAbort Then Exit For
Next
If objCell Is Nothing And Not blnFound Then
Call MsgBox("Suchbegriff nicht gefunden.", vbExclamation, "Hinweis")
Exit Do
ElseIf Not blnAbort Then
If MsgBox("Letze Fundstelle." & vbLf & vbLf & "Nochmal von vorne?", _
vbQuestion Or vbYesNo, "Abfrage") = vbNo Then Exit Do
End If
Loop Until blnAbort
End If
End Sub



https://www.herber.de/bbs/user/167395.xlsm

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 17:19:11
peter
Hallo

Dim strSearch As Variant
.
.
.
strSearch = InputBox("Suchbegriff:", "Suche nach...")
If IsDate(strSearch) Then
strSearch = CDate(strSearch)
End If

If strSearch > vbNullString Then
.
.
.
Peter
Datum ist nur eine Zahl, die als Datum formatiert ist. (owT)
28.02.2024 17:37:14
Oppawinni
Der ganzzahlige Anteil eines Datumswertes stellt die Tage seit 31.12.1899 dar, Nachkommastellen geben du Tageszeit an.
Du müsstest also erkennen, inwieweit ein Datum eingegeben wurde und das ggf. in einen entsprechenden Datumswert wandeln, nach dem du dann suchst.
Da dürftest dann aber nicht nach STRING suchen.
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 19:10:02
Piet
Hallo

ändere bitte mal diese Codezeile, bei mir klappt es in meiner Testdatei.
Set objCell = objWorksheet.Cells.Find(What:=CDate(strSearch), _
LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False)

mfg Piet
Anzeige
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 19:46:15
Daniel
Hi
Prinzipiell sucht das .Find mit der Einstellung LookIn:=xlValues in den formatierten Zellwerten.
Dh. der Wert für What:=... muss ein Textstring sein, der so geschrieben ist, wie der Wert in der Zelle angezeigt wird.

Wenn man allerdings die normalen Standardformate in den Zellen verwendet, dann muss man den Suchbegriff im amerikanischen Format schreiben.

Dh wenn in der Zelle der 16.03.2024 als normal formatiertes Datum steht, musst du "04/16/2024" als Suchbegriff verwenden.

Damit du dein Datum normal auf deutsch eingeben kannst, brauchst du diese Umwandlung:

strSearch = Inputbox(...)

strSearch = Format(CDate(strSearch), "MM\/DD\/YYYY")


Gruß Daniel
Anzeige
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 22:23:15
Piet
Hallo

mein Code läuft bei mir im alten Excel 2003 Format, bei normalem Datum in den Zellen.
Eingabe in Zelle B1 "2.2.2024" und die Variable strSearch auf "2.2.2024" gesetzt.

mfg Piet
AW: Suchfunktion per Makro findet keine Daten
29.02.2024 13:26:55
daniel
Hi
das Suchen von Datumswerten ist in Excel schwierig.
Prinzipiell sucht das .FIND mit .LookIn:=xlvalues in den formatierten Zellwerten, also so wie in der Zelle angezeigt.
Dh, der Suchtext muss dem entsprechen, was in der Zelle steht.
Bei Datumswerten hat man jedoch die Sondersituation, dass hier in VBA der Suchtext im amerikanischen Format geschrieben sein muss, damit das deutsche Format gefunden werden kann, insbesondere dann, wenn man ein Standardzahlenformat mit automatischer Anpassung an die jeweilige Länderversion verwendet (im Assistenten zum Zahlenformat mit * gekennzeichnet).
Was aber jetzt in einer speziellen Situation erforderlich ist, weiß niemand so genau.
Daher sollte man .Find mit Datumswerten möglichst vermeiden.

die besseren alternativen sind:
a) wenn man nur in einer Zeile oder nur in einer Spalte suchen muss: Zeilen- oder Spaltennummer mit Application.Match(Ganzzahlwert des Datums;Zellbereich;0) suchen.
das Application.Match sucht als Excelfunktion formatunabhängig und man kann den Zahlenwert des Datums angeben
b) wenn man die Position in einem Kalender sucht und man davon ausgehen kann, dass die Datumswerte vollständig, aufsteigend sortiert und immer im gleichen Abstand stehen, dann kann man die Position auch ausgehend vom Startwert berechnen, da ein Datum in Excel eine Zahl ist, bei der ein Tag dem Wert 1 entspricht
c) wenn man einen größeren rechteckigen Zellbereich durchsuchen muss, dann kann man dies dann auch mit einer Schleife über die Zellen machen.

Gruß Daniel
Anzeige
AW: Suchfunktion per Makro findet keine Daten
01.03.2024 20:08:22
Robert Pilz
Hallo liebe Exeler!

Möchte mich bei Euch recht herzliche bedanken. Ich habe jetzt die Lösung gewählt einmal Commandbutton der nach Text sucht und einen der die Datumsangaben erkennt. Mit der Variante von Piet erkennt er alles. Wenn die Daten nicht durch Formeln ermittelt werden, sondern als Werte erfasst sind.




LG Robert
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 22:28:48
Onur
"Eingabe in Zelle B1 "2.2.2024" und die Variable strSearch auf "2.2.2024" gesetzt. "
Weil Beides TEXT ist und kein Datum. Sonst stünde da 02.02.2024 .
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 22:31:53
Onur
Ändere doch Format auf Standard, wenn sich nix ändert, ist es Text.
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 22:39:00
Piet
Hallo Onur

die Eingabe in Zelle B1 wurde von Excel automatisch auf Datumformat gesetzt. Habe ich gerade nachgeprüft.

mfg Piet
Anzeige
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 22:45:31
Oppawinni
Die Suche sollte AUCH mit Datum funktionieren und nicht NUR mit Datum.
Da liegt der Hase im Pfeffer
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 23:51:38
Onur
Dann muss man wohl mit
If ISDATE
und besser auch noch
If ISNUMBER
arbeiten.
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 23:26:19
Onur
MICROSOFT zum Thema Inputbox:
"Zeigt eine Eingabeaufforderung in einem Dialogfeld an, wartet darauf, dass der Benutzer Text eingibt oder auf eine Schaltfläche klickt und gibt eine Zeichenfolge zurück, die den Inhalt des Textfelds enthält."

Userbild
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 23:28:19
Onur
Eine Inputbox ist eigentlich nur eine Textbox mit Text-Eingabemöglichkeit.
Solange du den TEXT nicht in Datum umwandelst, kann er auch nicht gefunden werden.
Anzeige
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 23:32:19
Onur
    .....

Dim lngOldColor As Long
strSearch = CDate(InputBox("Suchbegriff:", "Suche nach..."))
If strSearch > vbNullString Then
....
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 23:38:29
Onur
Und NUR
Dim strSearch
ohne as String
AW: Suchfunktion per Makro findet keine Daten
28.02.2024 20:08:50
Oppawinni
Interessant, d.h. die einzige Änderung wäre dann nur..



strSearch = InputBox("Suchbegriff:", "Suche nach...")
If IsDate(strSearch) Then
strSearch = Format(CDate(strSearch), "MM\/DD\/YYYY")
End If


Ich muss das irgendwann mal testen.

Schuss ins Knie (owT)
28.02.2024 19:22:33
peter
Das wird nichts..
28.02.2024 19:51:46
Oppawinni
Der Vorschlag von Peter war schon ganz gut.. ich würde halt alle strSearch in der Sub
in vSearch umbenennen und dies als Variant deklarieren und eine zusätzlich Variable
Dim strInput as String
einführen und dann

Dim strInput as String
Dim vSearch As Variant
.
.
.
strInput = InputBox("Suchbegriff:", "Suche nach...")
If IsDate(strInput) Then
vSearch = CDate(strInput)
else
vSearch = strInput
End If

so sollte das funktionieren, hab es aber nicht getestet
Anzeige
AW: Datum ist nur eine Zahl, die als Datum formatiert ist. (owT)
28.02.2024 17:49:10
Robert Pilz
Hallo Oppawinni!

Erst mal danke für Deine Antwort. Heißt das jetzt für mich übersetzt das dieser Code nicht in der Lage ist ein Datum als solches zu identifizieren. Sondern ich müsste dann mit absoluten Zahlen hantieren beginnend am 01.01.1900, worauf Exel im Datumsbereich basiert basiert.


LG Robert
AW: Datum ist nur eine Zahl, die als Datum formatiert ist. (owT)
28.02.2024 18:09:43
Oppawinni
Peter hat dir doch schon nen Tip gegeben, wobei ich da nicht nur einfach
Dim strSearch as Variant
machen würde. Der Präfix str der Variablen würde ja dann nicht wirklich passen, aber das ist deine Sache.
Ich hab mir den Code sonst nicht bis ins Detail angesehen.
Anzeige
AW: Datum ist nur eine Zahl, die als Datum formatiert ist. (owT)
28.02.2024 19:30:51
Onur
Genau.
Wenn du in A1 "28.02.2024" siehst, steht da eigentlich NICHT "28.02.2024", sondern 45350. Es sieht nur aus wie "28.02.2024", da die Zelle als Datum formatiert wurde.
Wenn du die Zelle als "Standard" oder "Zahl" formatierst, siehst du es.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige