این تابع رو همین الان انجام دادم احتمالا اشکال هم داشته باشه. آزمایش کنید اگه ایرادی داره در خدمتم. در ضمن دارم تابع جمع به تاریخ رو هم می نویسم اگه شد همین امشب برای آزمایش می زارم. لطفا فعلا اگه می شه این تابع رو در حالت های مختلف آزمایش کنید. در صورت دیدن اشتباهی در تابع حتما با ذکر تاریخ شروع و تاریخ پایان به من اطلاع دهید تا اصلاح کنم.
PublicFunction fasele_tarikh(ByVal first_tarikh AsString, ByVal second_tarikh AsString)
first_tarikh = first_tarikh.Replace("/", "")
second_tarikh = second_tarikh.Replace("/", "")
If Val(first_tarikh) <= Val(second_tarikh) Then
Return"0/0/0"
ExitFunction
EndIf
Dim roz1, roz2, mah1, mah2, sal1, sal2, rozR, mahR, salR AsInteger
sal1 = Val(Mid(first_tarikh, 1, 4))
sal2 = Val(Mid(second_tarikh, 1, 4))
mah1 = Val(Mid(first_tarikh, 5, 2))
mah2 = Val(Mid(second_tarikh, 5, 2))
roz1 = Val(Mid(first_tarikh, 7, 2))
roz2 = Val(Mid(second_tarikh, 7, 2))
Dim s1 AsInteger = sal1 Mod 33
If roz1 >= roz2 Then
rozR = roz1 - roz2
Else
If mah1 = 12 And (s1 = 1 Or s1 = 5 Or s1 = 9 Or s1 = 13 Or s1 = 17 Or s1 = 22 Or s1 = 26 Or s1 = 30) Then
roz1 += 29
mah1 -= 1
rozR = roz1 - roz2
ElseIf mah1 <= 6 Then
roz1 += 31
mah1 -= 1
rozR = roz1 - roz2
Else
roz1 += 30
mah1 -= 1
rozR = roz1 - roz2
EndIf
EndIf
If mah1 >= mah2 Then
mahR = mah1 - mah2
Else
mah1 += 12
sal1 -= 1
mahR = mah1 - mah2
EndIf
salR = sal1 - sal2
'Dim Dir_fasele As Double = salR + (mahR / 12) + (rozR / 365)
Dim str_fasele AsString = salR & "/" & mahR & "/" & rozR
' Dir_fasele = (Dir_fasele * (darsad / 100)) * mablagh
Return str_fasele
EndFunction