بارك الله فيك أخي الحبيب
إخواني هذه دالة تقوم بتحويل التاريخ إلى نصوص ولكن باللغة الإنجليزية ، فهل من متبرع يقوم بترجمة الأيام والشهور والسنوات لأنني لست ضليعاً في اللغة العربية
Function DateToWords(ByVal DateIn As Variant) As String
Dim Yrs As String, Hundreds As String, Decades As String
Dim Tens As Variant, Ordinal As Variant, Cardinal As Variant
Ordinal = Array("First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", _
"Eighth", "Nineth", "Tenth", "Eleventh", "Twelfth", "Thirteenth", _
"Fourteenth", "Fifteenth", "Sixteenth", "Seventeenth", "Eighteenth", _
"Nineteenth", "Twentieth", "Twenty-first", "Twenty-second", "Twenty-third", _
"Twenty-fourth", "Twenty-fifth", "Twenty-sixth", "Twenty-seventh", _
"Twenty-eighth", "Twenty-nineth", "Thirtieth", "Thirty-first")
Cardinal = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", _
"Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", _
"Sixteen", "Seventeen", "Eighteen", "Nineteen")
Tens = Array("Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
If Len(DateIn) = 0 Then Exit Function
If TypeOf Application.Caller Is Range Then
' The date serial number that Excel's worksheet thinks is for 2/29/1900
' is actually the date serial number that VB thinks is for 2/28/1900
If Format([DateIn], "m/d/yyyy") = "2/28/1900" Then
DateToWords = "Twenty-nineth of February, One Thousand Nine Hundred"
Exit Function
ElseIf DateIn < DateSerial(1900, 3, 1) Then
If TypeOf Application.Caller Is Range Then DateIn = DateIn + 1
End If
End If
DateIn = CDate(DateIn)
Yrs = CStr(Year(DateIn))
Decades = Mid$(Yrs, 3)
If CInt(Decades) < 20 Then
Decades = Cardinal(CInt(Decades))
Else
Decades = Tens(CInt(Left$(Decades, 1)) - 2) & "-" & Cardinal(CInt(Right$(Decades, 1)))
If Right(Decades, 1) = "-" Then Decades = Left(Decades, Len(Decades) - 1)
End If
Hundreds = Mid$(Yrs, 2, 1)
If CInt(Hundreds) Then
Hundreds = Cardinal(CInt(Hundreds)) & " Hundred "
Else
Hundreds = ""
End If
DateToWords = Ordinal(Day(DateIn) - 1) & " of " & Choose(Month(DateIn), "January", _
"February", "March", "April", "May", "June", "July", "August", _
"September", "October", "November", "December") & ", " & _
Cardinal(CInt(Left$(Yrs, 1))) & " Thousand " & Hundreds & Decades
End Function