2.2k Aufrufe
Gefragt in Tabellenkalkulation von rainberg Profi (14.9k Punkte)
Hallo,

warum funktioniert folgender Code nicht.
In Spalte A befinden sich aufsteigend sortierte Daten mehrerer
Jahre.
Die MsgBox soll mir die Zeilennummer des Vergleiches anzeigen.

Sub test()
Dim strDat As String
Dim intJahr As Integer
For intJahr = 1998 To 2009
strDat = Day(Date) & "." & Month(Date) & "." & intJahr
MsgBox Application.WorksheetFunction.Match(CDate(strDat),
ActiveSheet.Range("A1:A6000"),0)
Next
End Sub


Es kommt Fehlermeldung

Laufzeitfehler 1004
Die Match-Eigenschaft des WorksheetFunction-Objektes kann nicht
zugeordnet werden

Gruß
Rainer

2 Antworten

0 Punkte
Beantwortet von
Hi,

Versuch mal folgendes:

Sub test()
Dim strDat As String
Dim intJahr As Integer
For intJahr = 1998 To 2009
strDat = Day(Date) & "." & Month(Date) & "." & intJahr
If WorksheetFunction.CountIf(ActiveSheet.Range("A1:A6000"), CDate(strDat)) Then
MsgBox strDat & " findet man in Zeile " & _
Application.WorksheetFunction.Match(CDbl(CDate(strDat)), ActiveSheet.Range("A1:A6000"), 0)
Else
MsgBox strDat & " nicht vorhanden!"
End If
Next
End Sub


Bei .Match ist das Format der Zellen wohl nicht entscheidend. Gesucht wird also das DATUM 12.10.1998 kann aber in den "internen" Werten nicht gefunden werden. Umwandeln in Typ Double: Suche nach ZAHL "36080"-> Treffer.

Das aber auch nur so aus dem Bauch heraus. Ich hatte bei der heutigen Anfrage von Petra65 auch erst den ersten Kontakt mit dieser Funktion im VBA.

bye
malSchauen
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo malSchauen,

danke, das Match(CDbl(CDate(strDat)) hat's gebracht.

Gruß
Rainer
...