hàm VBA đọc ngày tháng thành chữ trong excel (2 người xem)

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

nhunghau1

Thành viên mới
Tham gia
8/1/08
Bài viết
2
Được thích
9
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
 

File đính kèm

  • loi.jpg
    loi.jpg
    66.5 KB · Đọc: 3
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
Vẵn code của bạn có sửa tý chút.
Xem code trong file
 

File đính kèm

Bài viết mới nhất

Back
Top Bottom