E ko biết về VBA, bác nào giúp em chuyển ngày tháng trong excel thành chữ giúp e với ạ. VD: 04/09/2015 thì sẽ thành: Ngày bốn tháng chín năm hai không mười lăm ý ạ. e coppy lệnh này bị báo lỗi ạ
Function DV(i As Integer) As String
Dim a
a = Array("không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
DV = a(i)
End Function
Function Doc2ChuSo(n As Integer) As String
Dim ch As Integer, dv As Integer
ch = n \ 10
dv = n Mod 10
If n < 10 Then
Doc2ChuSo = DV(n)
ElseIf n < 20 Then
If n = 15 Then
Doc2ChuSo = "mười lăm"
Else
Doc2ChuSo = "mười " & DV(dv)
End If
Else
Dim s As String
s = DV(ch) & " mươi"
If dv = 0 Then
Doc2ChuSo = s
ElseIf dv = 1 Then
Doc2ChuSo = s & " mốt"
ElseIf dv = 5 Then
Doc2ChuSo = s & " lăm"
Else
Doc2ChuSo = s & " " & DV(dv)
End If
End If
End Function
Function DocNam(y As Long) As String
Dim ng As Integer, tr As Integer, ch As Integer, dv As Integer
ng = y \ 1000
tr = (y Mod 1000) \ 100
ch = (y Mod 100) \ 10
dv = y Mod 10
Dim kq As String
kq = DV(ng) & " nghìn "
If tr = 0 And (ch > 0 Or dv > 0) Then
kq = kq & "không trăm "
ElseIf tr > 0 Then
kq = kq & DV(tr) & " trăm "
End If
If ch = 0 And dv > 0 Then
kq = kq & "lẻ " & DV(dv)
ElseIf ch > 0 Then
kq = kq & Doc2ChuSo(ch * 10 + dv)
End If
DocNam = Trim(kq)
End Function
Function DocNgay(dValue As Variant) As String
If Not IsDate(dValue) Then
DocNgay = "Không phải ngày hợp lệ"
Exit Function
End If
Dim d As Integer, m As Integer, y As Integer
d = Day(dValue)
m = Month(dValue)
y = Year(dValue)
DocNgay = "ngày " & Doc2ChuSo(d) & " tháng " & Doc2ChuSo(m) & " năm " & DocNam(y)
End Function
Function DV(i As Integer) As String
Dim a
a = Array("không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
DV = a(i)
End Function
Function Doc2ChuSo(n As Integer) As String
Dim ch As Integer, dv As Integer
ch = n \ 10
dv = n Mod 10
If n < 10 Then
Doc2ChuSo = DV(n)
ElseIf n < 20 Then
If n = 15 Then
Doc2ChuSo = "mười lăm"
Else
Doc2ChuSo = "mười " & DV(dv)
End If
Else
Dim s As String
s = DV(ch) & " mươi"
If dv = 0 Then
Doc2ChuSo = s
ElseIf dv = 1 Then
Doc2ChuSo = s & " mốt"
ElseIf dv = 5 Then
Doc2ChuSo = s & " lăm"
Else
Doc2ChuSo = s & " " & DV(dv)
End If
End If
End Function
Function DocNam(y As Long) As String
Dim ng As Integer, tr As Integer, ch As Integer, dv As Integer
ng = y \ 1000
tr = (y Mod 1000) \ 100
ch = (y Mod 100) \ 10
dv = y Mod 10
Dim kq As String
kq = DV(ng) & " nghìn "
If tr = 0 And (ch > 0 Or dv > 0) Then
kq = kq & "không trăm "
ElseIf tr > 0 Then
kq = kq & DV(tr) & " trăm "
End If
If ch = 0 And dv > 0 Then
kq = kq & "lẻ " & DV(dv)
ElseIf ch > 0 Then
kq = kq & Doc2ChuSo(ch * 10 + dv)
End If
DocNam = Trim(kq)
End Function
Function DocNgay(dValue As Variant) As String
If Not IsDate(dValue) Then
DocNgay = "Không phải ngày hợp lệ"
Exit Function
End If
Dim d As Integer, m As Integer, y As Integer
d = Day(dValue)
m = Month(dValue)
y = Year(dValue)
DocNgay = "ngày " & Doc2ChuSo(d) & " tháng " & Doc2ChuSo(m) & " năm " & DocNam(y)
End Function



