Hàm này hơi dài nhưng cũng dùng được:
Attribute VB_Name = "HTNgay_Function"
'Option Explicit
Function HTNgay(ByVal Vdate As Date) As String
On Error Resume Next
Vdate = Format(Vdate, "dd/mm/yyyy")
If IsDate(Vdate) = False Then HTNgay = "B" & ChrW$(7841) & "n ph" & ChrW$(7843) & "i ch" & ChrW$(7885) & "n l" & ChrW$(224) & " ngày! -By:
Htrung.aof@gmail.com": Exit Function
Hang = Array("None", "ng" & ChrW$(224) & "n", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", Space(0))
Dem = Array("không", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7843) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
'Doc so ngày
VNgay = Left(Vdate, 2)
If Val(VNgay) < 10 Then
DNgay = "Ngày" & Space(1) & "m" & ChrW$(7891) & "ng" & Space(1) & Dem(Val(VNgay))
ElseIf Val(VNgay) = 10 Then
DNgay = "Ngày" & Space(1) & "m" & ChrW$(7891) & "ng" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i"
ElseIf Val(VNgay) > 10 And Val(VNgay) < 20 And Val(VNgay) <> 15 Then
DNgay = "Ngày" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & Dem(Val(Right(VNgay, 1)))
ElseIf Val(VNgay) > 10 And Val(VNgay) < 20 And Val(VNgay) = 15 Then
DNgay = "Ngày" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & "l" & ChrW$(259) & "m"
ElseIf Val(VNgay) >= 20 And Val(Right(VNgay, 1)) = 0 Then
DNgay = "Ngày" & Space(1) & Dem(Val(Left(VNgay, 1))) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i"
ElseIf Val(VNgay) >= 20 And Val(Right(VNgay, 1)) = 1 Then
DNgay = "Ngày" & Space(1) & Dem(Val(Left(VNgay, 1))) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & "m" & ChrW$(7889) & "t"
ElseIf Val(VNgay) >= 20 And Val(Right(VNgay, 1)) <> 0 And Val(Right(VNgay, 1)) <> 1 And Val(Right(VNgay, 1)) <> 5 Then
DNgay = "Ngày" & Space(1) & Dem(Val(Left(VNgay, 1))) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & Dem(Val(Right(VNgay, 1)))
ElseIf Val(VNgay) = 25 Then
DNgay = "Ngày" & Space(1) & "hai" & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & "l" & ChrW$(259) & "m"
End If
'Doc so cua tháng
vthang = Val(Mid(Vdate, 4, 2))
If vthang = 12 Then
Dthang = "tháng" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & "hai"
ElseIf vthang = 11 Then
Dthang = "tháng" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & "m" & ChrW$(7897) & "t"
ElseIf vthang = 10 Then
Dthang = "tháng" & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i"
Else
Dthang = "tháng" & Space(1) & Dem(vthang)
End If
'Doc so cua nam
Vnam = Right(Vdate, 4)
N1 = Val(Mid(Vnam, 1, 1))
N2 = Mid(Vnam, 2, 3)
DNgan = Dem(N1) & Space(1) & "ngàn"
If Val(N2) = 0 Then
Dtram = Space(0)
Else
N11 = Mid(N2, 1, 1)
N22 = Mid(N2, 2, 1)
N33 = Mid(N2, 3, 1)
For i = 2 To 3
Nhom = Val(Mid(N2, i, 1))
Dtram = Dem(N11) & Space(0)
Select Case i
Case 2 And N22 = 0 And N33 = 0
le = Hang(2)
Case 2 And N22 = 0
le = Hang(2) & Space(1) & "l" & ChrW$(7867) & Space(1) & Dem(N33)
Case 2 And N22 = 1 And N33 = 0
le = Hang(2) & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i"
Case 2 And N22 = 1 And N33 = 5
le = Hang(2) & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & "l" & ChrW$(259) & "m"
Case 2 And N22 = 1 And N33 <> 0 And N33 <> 5
le = Hang(2) & Space(1) & "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1) & Dem(N33)
Case 2 And N22 >= 2 And N33 = 0
le = Hang(2) & Space(1) & Dem(N22) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i"
Case 2 And N22 >= 2 And N33 = 1
le = Hang(2) & Space(1) & Dem(N22) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & "m" & ChrW$(7889) & "t"
Case 2 And N22 >= 2 And N33 = 5
le = Hang(2) & Space(1) & Dem(N22) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & "l" & ChrW$(259) & "m"
Case 2 And N22 >= 2 And N33 <> 0 And N33 <> 1 And N33 <> 5
le = Hang(2) & Space(1) & Dem(N22) & Space(1) & "m" & ChrW$(432) & ChrW$(417) & "i" & Space(1) & Dem(N33)
End Select
Next
End If
KetQua = KetQua & Space(1) & DNgay & "," & Space(1) & Dthang & "," & Space(1) & "n" & ChrW$(259) & "m" & Space(1) & DNgan & Space(1) & Dtram & Space(1) & le & " '/."
HTNgay = UCase(Left(Trim(KetQua), 1)) & Mid(Trim(KetQua), 2)
End Function