Excel VBA: Datum finden unabhängig von Formatierung

Hallo Ihr Profis,

wie kann man mit VBA Zellen nach einem bestimmten Datum durchsuchen, ohne daß dem Script die Formatierung der Zellen bekannt ist?

Konkret suche ich die Zeile der ersten Zelle, die das Datum von vorgestern erhält. Bisher habe ich:

Set rngFound = Worksheet(1).Range("C:C").Find( what:=Date-2, LookIn:= xlValues)

Aber das funzt nicht. Alle ergoogelbaren Hilfen hierzu passen das „what“ immer mit der Formatierung an. Ich würde aber gerne die Datumsformatierung flexibel lassen können, zumal nicht in allen Zellen dieselbe Formatierung vorliegt.

Wie kann ich hier vorgehen?

Vielen Dank für Eure Hilfe
JayKay

Hallo,

dafür muss man kein Profi sein.

Hänge an worksheet einfach noch ein s dran. Also so:

Set rngFound = Worksheets(1).Range(„C:C“).Find( what:=Date-2,
lookIn:= xlValues)

Dann klappt es.

Die find()-Funktion kannte ich noch gar nicht, schon wieder was gelernt…

Grüße

powerblue

Hallo Power,

dafür muss man kein Profi sein.

ähem, biste sicher?

Hänge an worksheet einfach noch ein s dran.

Tja dass sind so die Dinge wodran man erkennt ob reinkopiert oder reingeschrieben.

Set rngFound = Worksheets(1).Range(„C:C“).Find( what:=Date-2,
lookIn:= xlValues)
Dann klappt es.

Schreib bitte mal in eine Zelle von C
1.3.2013
Formatiere das dann als TT
Dann lass den Code der untensteht laufen,

Die find()-Funktion kannte ich noch gar nicht, schon wieder
was gelernt…

Schön. Da man nie weiß ob find was findet geht man im Allgemeinen so vor:
Als Beispiel:

Set rngFound = Worksheets(1).Range(„C:C“).Find( what:=Date-2,lookIn:= xlValues)
If not rngfound is nothing then
msgbox rngfound.address
else
msgbox „nix gefunden“
end if

rngFound ist wenn find was gefunden hat, eine Zelle. Kannst dann rngfound wie eine Zelle „ansprechen“
rngfound.address
rngfound.value
rngfound.row
u.v.m.

Ansonsten ist rngfound „Nothing“
Achja, du siehst am Code daß ich den reingetippselt habe also bügle SchreibFehler aus
Ich hoffe, mein Beitrag ist zwar dem Anfrager nicht hilfreich aber zumindestens dir.

Gruß
Reinhard

Guten Morgen,

bei der Nutzung von find() ist das Zellformat wichtig, Datumswerte werden nur in Format „01.01.1900“ gefunden.

Wenn die Datumswerte im Blatt nicht so formatiert werden sollen, bleibt nur, in einer Schleife die Zellwerte zu prüfen.

Achja, du siehst am Code daß ich den reingetippselt habe also
bügle SchreibFehler aus
Ich hoffe, mein Beitrag ist zwar dem Anfrager nicht hilfreich
aber zumindestens dir.

@ Reinhard
Wie schön, du hast einen Clown gefrühstückt…

Grüße

powerblue

Hallo powerblue,

bei der Nutzung von find() ist das Zellformat wichtig,
Datumswerte werden nur in Format „01.01.1900“ gefunden.

Wenn die Datumswerte im Blatt nicht so formatiert werden
sollen, bleibt nur, in einer Schleife die Zellwerte zu prüfen.

Dann gibt es also keinen formatunabhängigen Weg, find() zu verwenden? Gibt es vielleicht eine andere Methode für den Zweck? Kann ich auf den Zahlenwert der Zelle zugreifen und diesen mit dem Zahlenwert des Datums vergleichen?

Vielen Dank nochmal für Eure Hilfe
JK

Hallo Jens,

Dann gibt es also keinen formatunabhängigen Weg, find() zu
verwenden?

es scheint so. Irgendwo las ich was von LookIn:=xlFormulas, aber klappte nicht bei mir. Ansonsten, in der Tat, von Googleergebnissen her geht es wohl nicht.
Ich persönlich nehme das zur Kenntnis. Bin aber persönlich NOCH nicht davon zu 100% überzeugt. Aber gut, so bin ich halt in Excel, irgendwas soll nicht gehen, naja, prüfe ich doch mal genauer ob das auch so ist und ich habe nicht die geringste Hemmung es auch unorthodox zu versuchen. Naja, mein Plaisier :smile:

Mal was mit dem du was anfangen und ausprobieren kannst. Hinweis, eine Textbox liefert immer einen Text also String zurück.
http://www.herber.de/forum/archiv/992to996/992568_Fi…
Mein Tipp da der Thread so lang ist, wenn du willst, drucke ihn dir aus, schmeiß dann Druckblätter weg wo für dich nix relevantes steht. In den anderen Blättern arbeitest du mit Kuli, Textmarker u.ä. um nur nach das für dich relevante stehen zu lassen.
Dann wird es sehr übersichtlich.

Gruß
Reinhard, der lange Texte am Bildschirm nicht mag, Zeitung lesen am PC, iiiih, bäääh,
ich brauch die als Druckversion.

Hallo Reinhard,

Dann gibt es also keinen formatunabhängigen Weg, find() zu
verwenden?

es scheint so. Irgendwo las ich was von LookIn:=xlFormulas,
aber klappte nicht bei mir. Ansonsten, in der Tat, von
Googleergebnissen her geht es wohl nicht.

Tja, ich sehe da dringenden Handlungsbedarf für Microsoft.

Mal was mit dem du was anfangen und ausprobieren kannst.
Hinweis, eine Textbox liefert immer einen Text also String
zurück.
http://www.herber.de/forum/archiv/992to996/992568_Fi…

Werde ich mal prüfen, vielen Dank :smile: Ist alles sehr umständlich, aber offenbar suchen nur wenige Scripts nach einem Datum, oder Microsoft ist auf dem Ohr Taub.

Grüße
JK

Ich habe das hier rausgefunden, so kann man nach anderen Datumsformaten suchen. Bei mir hatte es nicht geklappt, weil ich ein deutsches/locales Format verwendet habe. Wenn man statt NumberFormat die lokale Variante NumberFormatLocal verwendet, funktioniert es nicht. Ich glaube Format() kommt damit nicht klar und eine Lokale Variante der Funktion hab ich nicht gefunden.
Die Spalte in der ich suche, hab ich sicherheitshalber immer im gleichen Format formatiert, wie ich bei der Suche verwende. In Excel macht es keinen Unterschied welche Variante ich nehme.

Columns(1).NumberFormat = „DD.MM.YYYY hh:mm:ss“

Worksheets(„Tabelle 1“)Range(Columns(1), Columns(1)).Find(what:=Format(Date, „DD.MM.YYYY hh:mm:ss;@“), lookat:=xlWhole, LookIn:=xlValues, SearchDirection:=xlNext).Row