20k Aufrufe
Gefragt in Tabellenkalkulation von wolfram Mitglied (125 Punkte)
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

5 Antworten

0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
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
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
...