هذه دلة من عمل الاخ الكريم طارق الحمامي -- اعتقد انها تفي بالمطلوب
قم بلصق الدالة بوحدة نمطية عامة :
Function h_date(m_day As Variant, ty_d As Integer) As String
Rem "معادلة التارخ الهجرى "
Static adays(12) As Long
Static edays(12) As Long
Static amonth(12) As String
Dim ed As Long, ay As Long, at As Long, am As Long, i As Integer
adays(1) = 29: adays(2) = 29: adays(3) = 30: adays(4) = 29
adays(5) = 29: adays(6) = 30: adays(7) = 29: adays(8) = 30
adays(9) = 30: adays(10) = 30: adays(11) = 29: adays(12) = 30
edays(1) = 31: edays(2) = 28: edays(3) = 31: edays(4) = 30
edays(5) = 31: edays(6) = 30: edays(7) = 31: edays(8) = 31
edays(9) = 30: edays(10) = 31: edays(11) = 30: edays(12) = 31
amonth(1) = " محـرم": amonth(2) = " صــفر": amonth(3) = " ربيع اول": amonth(4) = " ربيع ثانى"
amonth(5) = " جمادى اول": amonth(6) = "جمادى ثانى": amonth(7) = " رجـــب": amonth(8) = " شعبان"
amonth(9) = " رمضان": amonth(10) = " شــوال": amonth(11) = " ذوالقعدة": amonth(12) = " ذو الحجة"
ed = Day(m_day)
For i = 1 To Month(m_day) - 1
ed = ed + edays(i)
Next i
ed = ed + (Year(m_day) - 1) * 365.242199
at = ed - 227012
ay = Int(at / 354.36706) + 1
am = ((at / 354.36706) - Int(at / 354.36706)) * 354.36706
i = 1
Do While adays(i) <= am
am = am - adays(i)
i = i + 1
Loop
If ty_d = 1 Then
h_date = Str(Int(am)) & " " & amonth(i) & " " & Str(ay) & " هـ "
Else
h_date = Str(Int(am)) & "/" & i & "/" & Str(ay) & " هـ "
End If
End Function
Function J_DATE(m_day As Variant, ty_d As Integer) As String
Rem " معادلة التاريخ الميلادى"
Static jweek(7) As String
Static jmonth(12) As String
Dim jd As Long, jm As Long, jy As Long, i As Long
jweek(1) = "الاحد": jweek(2) = "الاثنين": jweek(3) = "الثلاثاء"
jweek(4) = "الاربعاء": jweek(5) = "الخميس": jweek(6) = "الجمعة": jweek(7) = "السبت"
jmonth(1) = "يناير": jmonth(2) = "فبراير": jmonth(3) = "مارس": jmonth(4) = "أبريل"
jmonth(5) = "مايو": jmonth(6) = "يونيو": jmonth(7) = "يوليو": jmonth(8) = "اغسطس"
jmonth(9) = "سبتمبر": jmonth(10) = "اكتوبر": jmonth(11) = "نوفمبر": jmonth(12) = "ديسمبر"
jd = Day(m_day)
jm = Month(m_day)
jy = Year(m_day)
i = WeekDay(m_day)
If ty_d = 1 Then
J_DATE = jweek(i) & " " & Str(jd) & " " & jmonth(jm) & " " & Str(jy) & " " & "م"
Else
J_DATE = Str(jd) & "/" & Str(jm) & "/" & Str(jy) & " " & "م"
End If
End Function
بعد ذلك قم باستدعاء الدالة من اي مكان تريد عن طريق كتابة هذا التعبير داخل مربع نص :
=ConvertDateString(Date();0;1;1)