Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum mit FIND finden

Datum mit FIND finden
{Boris}
Hi Leute,
ich bekomm grad mal wieder die Krise, ein per Formel ermitteltes Datum mit der Find-Methode in einer Spalte zu finden.
C5: 01.01.2010
C6: =C5+1 und runterkopiert.
Das zu suchende Datum übergebe ich aus einem Calendar-Steuerelement im Datentyp Date.
Aber egal, wonach ich mit Range("C5:C400").Find(...).Row suche:
Datum
CLng(Datum)
und worin:
lookin:=xlformulas
lookin:=xlvalues
Immer kommt: Laufzeitfehler 1004: Die Find-Eigenschaft kann nicht zugeordnet werden.
Wie kann ich das Datum zuverlässig aufspüren? Es ist definitiv im Suchbereich vorhanden. Die Zellinhalte sind auch nicht über die Schutzoption ausgeblendet.
Danke und Grüße
Boris
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datum mit FIND finden
06.11.2009 13:26:24
Rudi
Hallo,
also das klappt bei mir einwandfrei:
Private Sub CommandButton1_Click()
Dim dte As Date, r As Range
dte = Calendar1
Set r = Columns(3).Find(dte, LookIn:=xlValues, lookat:=xlWhole)
MsgBox r.Address
End Sub

Gruß
Rudi
AW: Datum mit FIND finden
06.11.2009 13:33:21
Luschi
Hallo Rudi,
stimmt, so klappt es auch bei mir. Wenn man sich allerdings auf den Eintrag in der verknüften Zelle verläßt,
muß es es so machen wie in meinem Beispiel. Denn in der Zelle steht der Datumswert als Text.
Man kann immer wieder nur staunen, welche Fallstricke so herumliegen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datum mit FIND finden
06.11.2009 13:27:25
hary
Hallo Boris
Hab hier Excel ohne Calendersteuerelement. aber so funzt es mit Inputbox. In C1 steht volle Datum, ab C2 (0C1+1) usw.Hilft Dir vieleicht weiter.

Sub n()
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date
datum = InputBox("Datum eingeben")
Set bereichs = Sheets("Tabelle1").Range("C1:C100")
Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If
End Sub

Anzeige
AW: Datum mit FIND finden
06.11.2009 13:27:48
Luschi
Hallo Boris,
Habe das mal nachgebaut mit dem Calender-Steuerelement, und bei mir klappt das so:

Dim rg1 As Range, rg2 As Range, rg3 As Range
Set rg1 = ActiveSheet.Range("E5") 'verknüpfte Zelle vom Cal.-Steuerelement
MsgBox VarType(rg1.Value)   '8 --> String
Set rg2 = ActiveSheet.Range("C5:C25")
Set rg3 = rg2.Find(CDate(rg1.Value), , xlValues, xlWhole, xlByRows, xlNext)
If Not rg3 Is Nothing Then
MsgBox rg3.Value & vbCrLf & rg3.Address
End If
Set rg1 = Nothing
Set rg2 = Nothing
Set rg3 = Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
Application.Match über Zellbereich...
06.11.2009 14:22:03
Tino
Hallo,
hier eine Möglichkeit ein Datum in einem Zellbereich sicher zu finden.
Option Explicit

Sub Match_Ueber_Zellbereich(Bereich As Range, SuchWert As Variant)
Dim rZellen As Range
Dim LCol As Long, tempCol As Long
Dim varRow

With Sheets(Bereich.Parent.Name)
    For LCol = 1 To Bereich.Columns.Count
       tempCol = 1
       Do While IsNumeric(varRow)
            varRow = Application.Match(SuchWert, Bereich.Columns(LCol).Range(.Cells(tempCol, 1), .Cells(Bereich.Rows.Count, 1)), 0)
               If IsNumeric(varRow) Then
                  If rZellen Is Nothing Then
                   Set rZellen = Bereich(varRow + tempCol - 1, LCol)
                   tempCol = tempCol + varRow
                  Else
                   Set rZellen = Union(rZellen, Bereich(varRow + tempCol - 1, LCol))
                   tempCol = tempCol + varRow
                  End If
               End If
       Loop
    
       varRow = 0
    Next LCol
End With

If Not rZellen Is Nothing Then
 Set Bereich = rZellen
Else
 Set Bereich = Nothing
End If

End Sub

Sub BeispielVerwendung()
Dim ErgebisZellen As Range, vSuchwert

'Suchwert nur ein Teil eines Wortes Platzhalter verwenden Bsp. "Apfel*" 
vSuchwert = CLng(Date)

'Suchbereich 
Set ErgebisZellen = Tabelle1.Range("A1:Z100")

Match_Ueber_Zellbereich ErgebisZellen, vSuchwert

If Not ErgebisZellen Is Nothing Then
 MsgBox "Suchwert '" & vSuchwert & "' wurde in den Zellen " & ErgebisZellen.Address & " gefunden"
Else
 MsgBox "nix gefunden"
End If
End Sub

Gruß Tino
Anzeige
Danke an alle...
06.11.2009 16:16:59
{Boris}
Hi zusammen,
...die Aussage, dass es bei Euch allen funktioniert, hat mir die Erleuchtung gebracht: Das Naheliegenste hatte ich übersehen: Ohne Umwandlung (CLng) in den xlValues suchen.
Problem erledigt!
Besten Dank an alle!
Grüße Boris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datum mit FIND in Excel finden


Schritt-für-Schritt-Anleitung

Um ein Datum in Excel mithilfe der .Find-Methode zu suchen, kannst du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke auf Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub DatumSuchen()
       Dim dte As Date
       Dim r As Range
       dte = InputBox("Bitte Datum eingeben (TT.MM.JJJJ):")
       Set r = Worksheets("Tabelle1").Columns(3).Find(What:=dte, LookIn:=xlValues, LookAt:=xlWhole)
    
       If Not r Is Nothing Then
           MsgBox "Datum gefunden in Zelle: " & r.Address
       Else
           MsgBox "Datum nicht gefunden."
       End If
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.
  5. Gib das Datum im richtigen Format ein:

    • Stelle sicher, dass du das Datum im Format TT.MM.JJJJ eingibst.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Die Find-Eigenschaft kann nicht zugeordnet werden:

    • Überprüfe, ob das Datum im angegebenen Bereich tatsächlich vorhanden ist und dass der Suchbereich korrekt definiert ist.
  • Datum wird nicht gefunden:

    • Stelle sicher, dass das Datum im richtigen Datentyp übergeben wird. Wenn das Datum als Text gespeichert ist, kann .Find Schwierigkeiten haben, es zu finden. Verwende CDate zur Umwandlung.
Set r = Worksheets("Tabelle1").Columns(3).Find(What:=CDate(dte), LookIn:=xlValues, LookAt:=xlWhole)

Alternative Methoden

Eine weitere Methode, um ein Datum in Excel zu finden, ist die Verwendung von Application.Match. Hier ist ein Beispiel:

Sub DatumMitMatch()
    Dim suchWert As Variant
    Dim zeile As Variant
    suchWert = InputBox("Bitte Datum eingeben (TT.MM.JJJJ):")

    zeile = Application.Match(CDate(suchWert), Worksheets("Tabelle1").Range("C1:C100"), 0)

    If Not IsError(zeile) Then
        MsgBox "Datum gefunden in Zeile: " & zeile
    Else
        MsgBox "Datum nicht gefunden."
    End If
End Sub

Die Verwendung von Match kann in manchen Fällen schneller sein, wenn du nur den Index der Zeile benötigst.


Praktische Beispiele

  1. Ein Datum in einer bestimmten Spalte suchen: Du kannst den Code so anpassen, dass er nur in einer bestimmten Spalte nach dem Datum sucht, z. B. in Spalte C.

  2. Platzhalter verwenden: Wenn du nach einem Datum mit Platzhaltern suchen möchtest, kannst du den LookAt-Parameter anpassen. Beispiel:

    Set r = Worksheets("Tabelle1").Columns(3).Find(What:="*01.01.*", LookIn:=xlValues, LookAt:=xlPart)

Tipps für Profis

  • Verwende LookIn:=xlFormulas: Wenn deine Zellen Formeln enthalten, die Daten zurückgeben, stelle sicher, dass du in Formeln suchst, nicht nur in den Werten.

  • Nutze Application.Find für umfassendere Suchen: Diese Funktion ist flexibler und kann in größeren Datensätzen effizienter sein.

  • Vermeide Typkonflikte: Wenn du sicherstellst, dass Datumswerte konsistent formatiert sind, wirst du weniger Probleme beim Suchen haben.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich im richtigen Datumsformat suche?
Stelle sicher, dass das Datum, das du suchst, im selben Format wie die Daten in deiner Tabelle eingegeben wird. Ein häufiger Fehler ist, dass das Datum als Text gespeichert ist.

2. Was kann ich tun, wenn Find ein leeres Ergebnis zurückgibt?
Überprüfe, ob das Datum tatsächlich im Suchbereich vorhanden ist und ob du die richtigen Parameter wie LookIn und LookAt verwendest. Verwende MsgBox, um den Wert, den du suchst, anzuzeigen und zu bestätigen.

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