Public Sal As Long, Mah As Long, Rooz As Long, YearM As Long, MonthM As Long, DayM As Long
Public Sub Tarikh(Sal, Mah, Rooz)
IfError = False
Kabiseh = False
If Rooz > 31 Or Rooz < 1 Or Mah > 12 Or Mah < 1 Then IfError = True
If Mah > 6 And Rooz = 31 Then IfError = True
If Mah = 12 And (Sal + 1) Mod 4 <> 0 And Rooz > 29 Then IfError = True
If (IfError And NoErrorDateConvert = False) Then
MsgBox "ÊÇÑíÎ ãÚÊÈÑ äãí ÈÇÔÏ", vbCritical, ""
Exit Sub
End If
If (Sal + 1) Mod 4 = 0 Then ' ÓÇá ßÈíÓå ÈÇÔÏ
Kabiseh = True
Select Case Mah
Case 1
If Rooz < 13 Then
DayM = Rooz + 19: MonthM = 3: YearM = Sal + 621
Else
DayM = Rooz - 12: MonthM = 4: YearM = Sal + 621
End If
Case 2
If Rooz < 12 Then
DayM = Rooz + 19: MonthM = 4: YearM = Sal + 621
Else
DayM = Rooz - 11: MonthM = 5: YearM = Sal + 621
End If
Case 3
If Rooz < 12 Then
DayM = Rooz + 20: MonthM = 5: YearM = Sal + 621
Else
DayM = Rooz - 11: MonthM = 6: YearM = Sal + 621
End If
Case 4
If Rooz < 11 Then
DayM = Rooz + 20: MonthM = 6: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 7: YearM = Sal + 621
End If
Case 5
If Rooz < 11 Then
DayM = Rooz + 21: MonthM = 7: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 8: YearM = Sal + 621
End If
Case 6
If Rooz < 11 Then
DayM = Rooz + 21: MonthM = 8: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 9: YearM = Sal + 621
End If
Case 7
If Rooz < 10 Then
DayM = Rooz + 21: MonthM = 9: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 10: YearM = Sal + 621
End If
Case 8
If Rooz < 11 Then
DayM = Rooz + 21: MonthM = 10: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 11: YearM = Sal + 621
End If
Case 9
If Rooz < 11 Then
DayM = Rooz + 20: MonthM = 11: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 12: YearM = Sal + 621
End If
Case 10
If Rooz < 12 Then
DayM = Rooz + 20: MonthM = 12: YearM = Sal + 621
ElseIf Rooz = 12 Then
DayM = 1: MonthM = 1: YearM = Sal + 622
Else
DayM = Rooz - 11: MonthM = 1: YearM = Sal + 622
End If
Case 11
If Rooz < 13 Then
DayM = Rooz + 19: MonthM = 1: YearM = Sal + 622
Else
DayM = Rooz - 12: MonthM = 2: YearM = Sal + 622
End If
Case 12
If Rooz < 11 Then
DayM = Rooz + 18: MonthM = 2: YearM = Sal + 622
Else
DayM = Rooz - 10: MonthM = 3: YearM = Sal + 622
End If
End Select
Else ' ÓÇá ßÈíÓå äÈÇÔÏ
Select Case Mah
Case 1
If Rooz < 12 Then
DayM = Rooz + 20: MonthM = 3: YearM = Sal + 621
Else
DayM = Rooz - 11: MonthM = 4: YearM = Sal + 621
End If
Case 2
If Rooz < 11 Then
DayM = Rooz + 20: MonthM = 4: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 5: YearM = Sal + 621
End If
Case 3
If Rooz < 11 Then
DayM = Rooz + 21: MonthM = 5: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 6: YearM = Sal + 621
End If
Case 4
If Rooz < 10 Then
DayM = Rooz + 21: MonthM = 6: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 7: YearM = Sal + 621
End If
Case 5
If Rooz < 10 Then
DayM = Rooz + 22: MonthM = 7: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 8: YearM = Sal + 621
End If
Case 6
If Rooz < 10 Then
DayM = Rooz + 22: MonthM = 8: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 9: YearM = Sal + 621
End If
Case 7
If Rooz < 9 Then
DayM = Rooz + 22: MonthM = 9: YearM = Sal + 621
Else
DayM = Rooz - 8: MonthM = 10: YearM = Sal + 621
End If
Case 8
If Rooz < 10 Then
DayM = Rooz + 22: MonthM = 10: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 11: YearM = Sal + 621
End If
Case 9
If Rooz < 10 Then
DayM = Rooz + 21: MonthM = 11: YearM = Sal + 621
Else
DayM = Rooz - 9: MonthM = 12: YearM = Sal + 621
End If
Case 10
If Rooz < 11 Then
DayM = Rooz + 21: MonthM = 12: YearM = Sal + 621
Else
DayM = Rooz - 10: MonthM = 1: YearM = Sal + 622
End If
Case 11
If Rooz < 12 Then
DayM = Rooz + 20: MonthM = 1: YearM = Sal + 622
Else
DayM = Rooz - 11: MonthM = 2: YearM = Sal + 622
End If
Case 12
GoTo EsfandHandleNoKabiseh
End Select
End If
Exit Sub
EsfandHandleNoKabiseh:
If (Abs(1380 - Sal)) Mod 4 = 0 Then
If Rooz < 10 Then
DayM = Rooz + 19: MonthM = 2: YearM = Sal + 622
Else
DayM = Rooz - 9: MonthM = 3: YearM = Sal + 622
End If
ElseIf (Abs(1381 - Sal)) Mod 4 = 0 Then
If Rooz < 10 Then
DayM = Rooz + 19: MonthM = 2: YearM = Sal + 622
Else
DayM = Rooz - 9: MonthM = 3: YearM = Sal + 622
End If
ElseIf (Abs(1382 - Sal)) Mod 4 = 0 Then
If Rooz < 11 Then
DayM = Rooz + 19: MonthM = 2: YearM = Sal + 622
Else
DayM = Rooz - 10: MonthM = 3: YearM = Sal + 622
End If
End If
End Sub
Public Sub M2H(Year, month, day)
Select Case month
Case 1
If (Year - 1) Mod 4 = 0 Then
If day < 20 Then
Rooz = day + 11: Mah = 10: Sal = Year - 622
Else
Rooz = day - 19: Mah = 11: Sal = Year - 622
End If
Else
If day < 21 Then
Rooz = day + 10: Mah = 10: Sal = Year - 622
Else
Rooz = day - 20: Mah = 11: Sal = Year - 622
End If
End If
Case 2
If (Year - 1) Mod 4 = 0 Then
If day < 19 Then
Rooz = day + 12: Mah = 11: Sal = Year - 622
Else
Rooz = day - 18: Mah = 12: Sal = Year - 622
End If
Else
If day < 20 Then
Rooz = day + 11: Mah = 11: Sal = Year - 622
Else
Rooz = day - 19: Mah = 12: Sal = Year - 622
End If
End If
Case 3
If ((Year) Mod 4 = 0) Then
If day < 20 Then
Rooz = day + 10: Mah = 12: Sal = Year - 622
Else
Rooz = day - 19: Mah = 1: Sal = Year - 621
End If
Else
If ((Year) Mod 2 = 0) Then
If day < 21 Then
Rooz = day + 9: Mah = 12: Sal = Year - 622
Else
Rooz = day - 20: Mah = 1: Sal = Year - 621
End If
Else
If Int((Year + Year - 1) / 2) Mod 4 = 0 Then
If day < 21 Then
Rooz = day + 10: Mah = 12: Sal = Year - 622
Else
Rooz = day - 20: Mah = 1: Sal = Year - 621
End If
End If
If Int((Year + Year - 1) / 2) Mod 4 <> 0 Then
If day < 21 Then
Rooz = day + 9: Mah = 12: Sal = Year - 622
Else
Rooz = day - 20: Mah = 1: Sal = Year - 621
End If
End If
End If
End If
Case 4
If (Year) Mod 4 = 0 Then
If day < 20 Then
Rooz = day + 12: Mah = 1: Sal = Year - 621
Else
Rooz = day - 19: Mah = 2: Sal = Year - 621
End If
Else
If day < 21 Then
Rooz = day + 11: Mah = 1: Sal = Year - 621
Else
Rooz = day - 20: Mah = 2: Sal = Year - 621
End If
End If
Case 5
If (Year) Mod 4 = 0 Then
If day < 21 Then
Rooz = day + 11: Mah = 2: Sal = Year - 621
Else
Rooz = day - 20: Mah = 3: Sal = Year - 621
End If
Else
If day < 22 Then
Rooz = day + 10: Mah = 2: Sal = Year - 621
Else
Rooz = day - 21: Mah = 3: Sal = Year - 621
End If
End If
Case 6
If (Year) Mod 4 = 0 Then
If day < 21 Then
Rooz = day + 11: Mah = 3: Sal = Year - 621
Else
Rooz = day - 20: Mah = 4: Sal = Year - 621
End If
Else
If day < 22 Then
Rooz = day + 10: Mah = 3: Sal = Year - 621
Else
Rooz = day - 21: Mah = 4: Sal = Year - 621
End If
End If
Case 7
If (Year) Mod 4 = 0 Then
If day < 22 Then
Rooz = day + 10: Mah = 4: Sal = Year - 621
Else
Rooz = day - 21: Mah = 5: Sal = Year - 621
End If
Else
If day < 23 Then
Rooz = day + 9: Mah = 4: Sal = Year - 621
Else
Rooz = day - 22: Mah = 5: Sal = Year - 621
End If
End If
Case 8
If (Year) Mod 4 = 0 Then
If day < 22 Then
Rooz = day + 10: Mah = 5: Sal = Year - 621
Else
Rooz = day - 21: Mah = 6: Sal = Year - 621
End If
Else
If day < 23 Then
Rooz = day + 9: Mah = 5: Sal = Year - 621
Else
Rooz = day - 22: Mah = 6: Sal = Year - 621
End If
End If
Case 9
If (Year) Mod 4 = 0 Then
If day < 22 Then
Rooz = day + 10: Mah = 6: Sal = Year - 621
Else
Rooz = day - 21: Mah = 7: Sal = Year - 621
End If
Else
If day < 23 Then
Rooz = day + 9: Mah = 6: Sal = Year - 621
Else
Rooz = day - 22: Mah = 7: Sal = Year - 621
End If
End If
Case 10
If (Year) Mod 4 = 0 Then
If day < 22 Then
Rooz = day + 9: Mah = 7: Sal = Year - 621
Else
Rooz = day - 21: Mah = 8: Sal = Year - 621
End If
Else
If day < 23 Then
Rooz = day + 8: Mah = 7: Sal = Year - 621
Else
Rooz = day - 22: Mah = 8: Sal = Year - 621
End If
End If
Case 11
If (Year) Mod 4 = 0 Then
If day < 21 Then
Rooz = day + 10: Mah = 8: Sal = Year - 621
Else
Rooz = day - 20: Mah = 9: Sal = Year - 621
End If
Else
If day < 22 Then
Rooz = day + 9: Mah = 8: Sal = Year - 621
Else
Rooz = day - 21: Mah = 9: Sal = Year - 621
End If
End If
Case 12
If (Year) Mod 4 = 0 Then
If day < 21 Then
Rooz = day + 10: Mah = 9: Sal = Year - 621
Else
Rooz = day - 20: Mah = 10: Sal = Year - 621
End If
Else
If day < 22 Then
Rooz = day + 9: Mah = 9: Sal = Year - 621
Else
Rooz = day - 21: Mah = 10: Sal = Year - 621
End If
End If
End Select
Sal = Val(Right(Str(Sal), 2))
End Sub