Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum suchen (VBA)

Datum suchen (VBA)
15.10.2013 15:32:52
David
Hallo zusammen,
ich habe jetzt schon einige im Archiv gefundener Sachen ausprobiert, aber nix davon hat geholfen.
Ich habe in einer Tabelle in einer Zeile Daten (Datumswerte) stehen. Nun möchte ich einen bestimmten Wert suchen und die dazugehörige Adresse ausgeben.
Meiner Meinung nach ist der Code richtig, aber es funzt nicht. Ich vermute, es liegt irgendwie am Datumsformat und weil die Zellen berechnete Daten enthalten.
Hier eine Beispieldatei:
https://www.herber.de/bbs/user/87661.xlsm
Kann einer helfen?
Gruß
David

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum suchen (VBA)
15.10.2013 15:49:34
KlausF
Hallo David,
da fehlt etwas:
... Find(What:=Datum, lookat:=xlWhole, LookIn:=xlValues)
Gruß
Klaus

AW: Datum suchen (VBA)
15.10.2013 15:55:40
David
Hallo Klaus,
danke, aber leider ohne Erfolg. Folgender Code:
Sub test()
Dim Datum As Date, c
With ThisWorkbook.Worksheets("Themenkalender")
Datum = Date - (Weekday(Date, vbMonday) - 1)
Set c = .Range("A3:XFD3").Find(what:=Datum, lookat:=xlWhole, LookIn:=xlValues)
If Not c Is Nothing Then MsgBox c.Address Else MsgBox "nicht gefunden"
End With
End Sub
geht trotzdem nicht.
Weitere Ideen?
Gruß
David

Anzeige
AW: Datum suchen (VBA)
15.10.2013 16:30:51
Peter
Hallo David,
hast Du dir die Datumswerte einaml angesehen?
Da fehlt die Jahreszahl!
Gruß Peter

AW: Datum suchen (VBA)
15.10.2013 16:36:10
David
Hi Peter,
ja, ich weiß. Ich habe auch schon versucht, die Datumswerte umzuwandeln, aber irgendwo hatte ich immer einen Syntaxfehler, ich hab's nicht hinbekommen.
Die Lösung von robert funzt, auch wenn das im Sinne von "Lerneffekt" leider nicht hilft. Hätte schon gern gewusst, was ich falsch mache, denn prinzipiell sollte das ja gehen.
Danke und Gruß
David

Anzeige
AW: Datum suchen (VBA)
15.10.2013 16:30:54
robert

Sub aaaa()
Dim vCol, SearchDate As Date
SearchDate = Date - (Weekday(Date, vbMonday) - 1)
vCol = Application.Match(CLng(SearchDate), Range("A3:XFD3"), 0)
If IsError(vCol) Then
MsgBox "Nicht da"
Else
MsgBox Cells(4, vCol).Address
End If
End Sub
Gruß
robert

Anzeige
AW: Datum suchen (VBA)
15.10.2013 16:37:46
David
Hi Robert,
das funzt soweit, danke.
Ich hatte auch schon daran gedacht, weil ich das in einem anderen Beitrag so ähnlich gesehen hatte, wollte es aber gerne über die interne Find-Methode lösen.
Aber so immer noch besser als gar keine Lösung. :-)
Gruß
David

....als Datum formatieren-siehe Peter owT
15.10.2013 16:34:24
robert

Anzeige
Find sucht formatabhängig
15.10.2013 19:13:44
Erich
Hi David,
das hatten wir hier schon einige Male. Schau dir z. B. das mal an:
https://www.herber.de/forum/archiv/972to976/t973902.htm#974149
https://www.herber.de/forum/archiv/972to976/t974186.htm#974685
Mein Fazit gilt immer noch:
Find() eignet sich nicht zur Zahlensuche, wenn man auch Formelergebnisse finden
und von Zellformaten unabhängig sein will.

Da ein Datum eine Zahl ist, gilt das auch in deinem Fall.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Find sucht formatabhängig
16.10.2013 09:52:34
David
Hallo Erich,
das ist mir durchaus sehr gut bekannt. Ich hatte auch schon (bevor ich hier gefragt hatte), versucht, das "date" erst in eine Zahl umzuwandeln und dann zu suchen, aber das hat genau so wenig funktioniert wie alle anderen Versuche.
Wie ich schon geschrieben hatte, ich war mir schon ziemlich sicher, dass es am Format der Daten oder des Suchbegriffs liegt, aber ich hab halt die Syntax nicht so hinbekommen, dass es klappt.
Insofern ist die jetzt benutzte Variante über .Match vielleicht doch die Bessere.
Danke für deinen Beitrag.
Gruß
David
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datum suchen mit Excel VBA


Schritt-für-Schritt-Anleitung

Um ein bestimmtes Datum in einer Excel-Tabelle mit VBA zu suchen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke auf "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub DatumSuchen()
    Dim SuchDatum As Date
    Dim gefundeneZelle As Range
    SuchDatum = Date - (Weekday(Date, vbMonday) - 1) ' Aktuelles Datum als Beispiel
    With ThisWorkbook.Worksheets("Sheet1") ' Ändere "Sheet1" entsprechend
        Set gefundeneZelle = .Range("A1:XFD1").Find(What:=SuchDatum, LookAt:=xlWhole, LookIn:=xlValues)
        If Not gefundeneZelle Is Nothing Then
            MsgBox "Datum gefunden in: " & gefundeneZelle.Address
        Else
            MsgBox "Datum nicht gefunden."
        End If
    End With
End Sub
  1. Führe das Makro aus: Drücke F5, um das Makro auszuführen.

Mit diesem Code kannst du ein Datum suchen und dessen Zelladresse ausgeben. Achte darauf, dass die Datumswerte im korrekten Format vorliegen.


Häufige Fehler und Lösungen

  • Fehler: "Datum nicht gefunden."

    • Lösung: Überprüfe das Datumsformat in der Zelle. Wenn es als Text formatiert ist, wird es von Find nicht erkannt. Stelle sicher, dass die Zelle als Datum formatiert ist.
  • Fehler: Syntaxfehler im Code.

    • Lösung: Achte darauf, dass alle Variablen korrekt deklariert sind. Wenn du Dim verwendest, stelle sicher, dass der Datentyp richtig angegeben ist.

Alternative Methoden

Eine alternative Methode zur Datumssuche in Excel ist die Verwendung der Match-Funktion. Diese Methode ist oft zuverlässiger, insbesondere wenn es um Formelergebnisse oder das Finden von Daten in unterschiedlichen Formaten geht.

Sub AlternativDatumSuchen()
    Dim SuchDatum As Date
    Dim vCol As Variant
    SuchDatum = Date - (Weekday(Date, vbMonday) - 1)
    vCol = Application.Match(CLng(SuchDatum), Range("A1:XFD1"), 0)

    If IsError(vCol) Then
        MsgBox "Datum nicht gefunden."
    Else
        MsgBox "Datum gefunden in: " & Cells(1, vCol).Address
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Datum in Excel suchen kannst:

  1. Einfaches Datum suchen: Suche nach dem heutigen Datum in der Zeile 1:

    Sub HeutigesDatumSuchen()
       Dim gefundeneZelle As Range
       Set gefundeneZelle = Range("A1:XFD1").Find(What:=Date, LookAt:=xlWhole)
       If Not gefundeneZelle Is Nothing Then
           MsgBox "Heutiges Datum gefunden in: " & gefundeneZelle.Address
       Else
           MsgBox "Heutiges Datum nicht gefunden."
       End If
    End Sub
  2. Datum mit spezifischem Jahr suchen: Suche nach einem Datum aus dem Jahr 2023:

    Sub Datum2023Suchen()
       Dim SuchDatum As Date
       SuchDatum = DateSerial(2023, 1, 1) ' 1. Januar 2023
       ' Rest des Codes wie oben
    End Sub

Tipps für Profis

  • Datumsformat: Achte darauf, dass das Datum im gleichen Format wie die gesuchten Werte in der Tabelle vorliegt. Unterschiede im Datumsformat können zu Suchfehlern führen.
  • Debugging: Verwende Debug.Print, um Zwischenergebnisse im Direktfenster anzuzeigen, wenn du Probleme hast.
  • VBA Datumsfunktionen: Nutze die VBA Datumsfunktionen wie DateAdd, DateDiff, um mit Datumswerten zu arbeiten.

FAQ: Häufige Fragen

1. Warum finde ich mein Datum nicht? Das kann daran liegen, dass das Datum in der Zelle als Text formatiert ist oder im falschen Format vorliegt. Überprüfe das Format der Zellen.

2. Welche Excel-Version benötige ich für VBA? VBA ist in Excel ab der Version 5.0 verfügbar. Du kannst das Makro in jeder modernen Version von Excel verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige