Hallo M.O.,
ich muss mich bei allen entschuldigen.
Ich habe aus einer falschen Datei den falschen Code gepostet. Beim alten Code sollte Excel zum aktuellen Datum springen und nicht wie gewünscht zum aktuellen oder nächsten Geburtstag.
Habe darum die Datei nochmal neu hochgeladen.
http://www.xup.in/dl,18256138/Schiedsrichterverzeichnis_2.xlsm/
Der nachfolgende Code ist jetzt aber von Dir M.O.
Private Sub Workbook_Open()
Dim GebArr As Variant
Dim lzeile As Long
Dim zaehler As Long
Dim gebDiv As Long
Dim strGef As String
'Tabelle mit der Geburtstagsliste aktivieren
ThisWorkbook.Worksheets("Tabelle1").Activate
'letzte Zeile in Spalte ermitteln
lzeile = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
'Array Re-Dimensioneren
ReDim GebArr(lzeile)
'Unterschied zwischen aktuellem Datum und Geburtstagsdatum im laufenden Jahr berechnen und in Array schreiben
For i = 5 To lzeile
GebArr(zaehler) = DateDiff("d", Date, DateSerial(Year(Date), Month(ActiveSheet.Cells(i, 6)), Day(ActiveSheet.Cells(i, 6))))
zaehler = zaehler + 1
Next i
'Variable für geringste Differnz zum aktuellem Datum vorbelegen
gebDiv = 999
'Nun Array durchlaufen und geringste Differnz suchen
For i = 0 To zaehler - 1
If GebArr(i) = 0 Or GebArr(i) > 0 Then 'nur wenn Differenz größer oder gleich Null ist
If gebDiv > GebArr(i) Then 'prüfen, welches kleinste Differnz ist
gebDiv = GebArr(i) 'Variable für Tagesdiffernz
End If
End If
Next i
'nun Array noch einmal durchlaufen und alle Zeilen, die der kleinsten Tagesdifferenz entsprechen in String für Markierung schreiben
For i = 0 To UBound(GebArr)
If GebArr(i) = gebDiv Then strGef = strGef & "B" & i + 5 & " ,"
Next i
'letztes Komma entfernen
strGef = Left(strGef, Len(strGef) - 1)
'gefundene Zeilen markieren
ActiveSheet.Range(strGef).Select
End Sub
Kannst Du bitte nochmal nachschauen.
Er bleibt jetzt nämlich an folgender Stelle hängen:
'letztes Komma entfernen
strGef = Left(strGef, Len(strGef) - 1)
Danke und Gruß Flodnug