Typen unverträglich
22.10.2012 12:51:18
Maximilian
um die Funktion Workday in Excel 2003 nutzen zu können, habe ich diese in einem Modul hinterlegt:
Option Explicit
Public Function ATag(Datum As Date, Optional Zusatztage As Range)
ShowMsg ("1")
Dim i%
Application.Volatile
If IsDate(Datum) Then
If Zusatztage Is Nothing Then
For i = 1 To 5
If BTag(Datum + i) = 1 Then Exit For
Next
Else
For i = 1 To 5
If BTag(Datum + i) = 1 Or Application.IsNumber(Application.Match(CLng(Datum + i), _
Zusatztage, 0)) Then Exit For
Next
End If
End If
ATag = Datum + i
End Function
Public Function NettoATage(Beginn As Date, Ende As Date, Optional Zusatztage As Range)
Application.Volatile
If IsDate(Beginn) And IsDate(Ende) And Beginn 5 Then
BTag = 0
Else
' Feiertage
' Karfreitag
Feiertage(1) = (Ostern(Jahr)) - 2
' Ostermontag
Feiertage(2) = (Ostern(Jahr)) + 1
' Christi Himmelfahrt
Feiertage(3) = (Ostern(Jahr)) + 39
' Pfingstmontag
Feiertage(4) = (Ostern(Jahr)) + 50
' Frohnleichnam
Feiertage(5) = (Ostern(Jahr)) + 60
' Neujahr
Feiertage(6) = CDate("01.01." & Jahr)
' 1.Mai
Feiertage(7) = CDate("01.05." & Jahr)
' Maria Himmelfahrt
Feiertage(8) = CDate("15.08." & Jahr)
' Tag der deutschen Einheit
If Jahr = 1900
intA = intJahr Mod 19
intB = Int(intJahr / 100)
intC = intJahr Mod 100
intD = Int(intB / 4)
intE = intB Mod 4
intF = Int((intB + 8) / 25)
intG = Int((intB - intF + 1) / 3)
intH = (19 * intA + intB - intD - intG + 15) Mod 30
intI = Int(intC / 4)
intK = intC Mod 4
intL = (32 + 2 * intE + 2 * intI - intH - intK) Mod 7
intM = Int((intA + 11 * intH + 22 * intL) / 451)
intN = Int((intH + intL - 7 * intM + 114) / 31)
intP = (intH + intL - 7 * intM + 114) Mod 31
Ostern = DateSerial(intJahr, intN, intP + 1)
End Select
End Function
Wenn ich dieses Modul nun nutzen möchte, beipsielsweise überMsgBox(ATag(CDate("01.01.2012"),5))
bekomme ich eine Debuggermeldung: Fehler beim kompilieren. Typen unverträglich.Was mache ich denn da Falsch? Habe doch extra den String als Datum formatiert per CDate...