VBA Find-Methode in Excel
Hallo!
Ich durchsuche per VBA eine Range, um eine Zelle mit bestimmten Inhalt zu finden:
x = Date + 5 + 5
Set c = Range("A1:D9").Find(x, LookIn:=xlValues)
so weit - so gut: die Zelle wird gefunden, wenn das richtige Datum enthalten ist (angezeigt als "19.04.2010")
Aber sowie ich das Datum in der Zelle irgendwie formatiere (aktuell brauche ich das Format "T.MMMM", also z.B "19.April"), so findet der Find-Befehl in keinem Fall die Zelle.
Ich habe schon (bestimmt nicht!) alles ausprobiert - ohne Erfolg. Aber irgendeine Möglichkeit muss es doch geben, um die Zelle zu finden! Bitte: Hilfe-Hilfe-Hilfe
Danke
Wolfram
Antwort schreiben
Antwort 1 von Massaraksch vom 10.04.2022, 00:31 Options
Hm, die Find-Methode scheint Probleme mit formatierten Zellen zu haben.
Nimm lieber eine For-Each-Schleife, z.B. so:
x = Date + 5 + 5
For Each c In Range("A1:D9")
If c.Value = x Then MsgBox x & " in Zelle " & c.Address & " gefunden."
Next c
Das funktioniert bei mir (Excel 2003).
mfg, Massaraksch
Antwort 2 von Massaraksch vom 10.04.2022, 00:43 Options
Ergänzung: Kannst ja auch nach dem ersten Treffer abbrechen damit der Rest nicht mehr durchsucht wird.
For Each c In Range("A1:D9")
If c.Value = x Then
MsgBox x & " in Zelle " & c.Address & " gefunden."
Exit Sub 'oder GoTo Sprungmarke
End If
Next c
mfg, Massaraksch
Antwort 3 von nighty vom 10.04.2022, 06:50 Options
hi all ^^
welches format hat x
welches format hat c
welches format hat die findmethode mit gesetzten parametern
diese drei sollten das selbe format haben,was sie zur zeit aber nicht haben :-)))
gruss nighty
Antwort 4 von nighty vom 10.04.2022, 07:02 Options
hi all ^^
noch ein paar tips fuer unsere tuefftler :-))
der datumswert liegt als Double vor
CDbl() koennte bei einer eventuellen umwandlung hilfreich sein :-)
gruss nighty
Antwort 5 von nighty vom 10.04.2022, 20:11 OptionsLösung
hi all ^^
:-)))
gruss nighty
der ansatz war zwar nicht schlecht,aber man kommt doch ohne dessen syntax aus musste ich feststellen o_o
besser so :-)
Sub DatumSuchen()
Dim MeinDatum As Range
Set MeinDatum = Cells.Find(What:=CDate(Format(Date + 5 + 5, "Short Date")), After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not MeinDatum Is Nothing Then
Cells(MeinDatum.Row, MeinDatum.Column).Select
End If
End Sub