hàm VBA đọc ngày tháng thành chữ trong excel (4 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: 2
    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