Lỗi code đọc số ra chữ VND & code doc số ra mét vuông trong hai modul

Liên hệ QC

quynhtlbp

Thành viên chính thức
Tham gia
26/8/10
Bài viết
95
Được thích
29
Nghề nghiệp
Quỹ Tín Dụng Đồng Xoai
Xin chào tất cả các anh chị, em có file excel trong đó có 2 modul, dùng để đọc số ra mét vuông và đọc số VND, hai cái này em đều lấy ở diễn đàn, nếu cho riêng hai modul này ra hai file khác nhau thì sử dụng bình thường còn để chung thì code báo ở phần dịch ra mét vuông, em đưa file lên để mọi người xem giúp và sửa lỗi giùm em. Em chân thành cảm ơn các anh chị.
 

File đính kèm

  • Đổi số ra mét vuông.xls
    41 KB · Đọc: 94
Xin chào tất cả các anh chị, em có file excel trong đó có 2 modul, dùng để đọc số ra mét vuông và đọc số VND, hai cái này em đều lấy ở diễn đàn, nếu cho riêng hai modul này ra hai file khác nhau thì sử dụng bình thường còn để chung thì code báo ở phần dịch ra mét vuông, em đưa file lên để mọi người xem giúp và sửa lỗi giùm em. Em chân thành cảm ơn các anh chị.

Tại vì trong Module1, hàm docmet có dùng 1 biến VND trùng trên với tên hàm ở Module2
Vậy bạn vào Module1, sửa chổ:
VND = UnicodeChar(.....
Thành:
aVND = UnicodeChar(...
Xong, ra bảng tính, bấm F9 để cập nhật
 
Upvote 0
Vâng em rất chân thành cảm anh ndu96081631 em thực hiện ngay trên file và đã chạy được. Cảm ơn anh rất nhiều.
 
Upvote 0
Đọc số ra VND & mét vuông

Mình đang tìm vấn đề này 2 tuần rồi mới gặp bác ndu96081631 khai nhãn. Thanks!!
Nhưng mình muốn Fonts "Times New Roman" thì bị lỗi mã Fonts, Vì mình sử dụng trên office 2010 không hiểu sao hay bị lỗi như thế (dù trên office 2003 đọc tôt). Mong diễn đàn trợ giúp!
 

File đính kèm

  • Đổi số ra mét vuông.xls
    45 KB · Đọc: 63
Lần chỉnh sửa cuối:
Upvote 0
Mình đang tìm vấn đề này 2 tuần rồi mới gặp bác ndu96081631 khai nhãn. Thanks!!
Nhưng mình muốn Fonts "Times New Roman" thì bị lỗi mã Fonts, Vì mình sử dụng trên office 2010 không hiểu sao hay bị lỗi như thế (dù trên office 2003 đọc tôt). Mong diễn đàn trợ giúp!

Chuỗi trả về bởi VND được mã dùng VNI. Bạn không thể chuyển sang unicode đơn giản bằng việc chọn phông chữ Times được. Phông chữ chỉ có nhiệm vụ hiển thị text thôi chứ làm gì có "chức năng" convert. Có muốn thì phông chữ, vd. Times, cũng chẳng thể convert được vì nó đâu biết mã nguồn là gì? Mọi chuỗi chỉ là các bai nối tiếp nhau, làm sao phông chữ biết được là "mấy bai" kia là mã của ký tự nào? Vd. bai xyz trong bảng mã VNI là mã của ký tự abc nhưng cũng bai xyz ấy trong bảng mã unicode thì nó là mã của ký tự "đầu trâu mặt ngựa".

Nếu "hắn" cảm nhận mình là "ả" thì chỉ còn nước "convert" bằng dao kéo, hoóc môn thôi chứ "mặc váy, độn ngực" thì đực vẫn là đực.

Tóm lại nếu bạn muốn dùng Times thì bạn phải convert chuỗi trả về bởi VND sang unicode. Hoặc dùng hàm nào mà trả về unicode.

Tôi mà gặp những văn bản, code nào dùng vni, VN3 là tôi "đá đít". Thời đại nào mà vẫn còn dùng những kiểu mã tự làm khổ bản thân vậy? Nếu các phông chữ VNI, VN3 đẹp thì cũng còn hiểu được "sở thích quái gở". Nhưng theo tôi những phông chữ này xấu vô cùng. Vậy thì chiêu "khổ nhục kế"?
 
Upvote 0
Mình chuyển giùm bạn sang font Unicode:

Mã:
Public Function VND(BaoNhieu) ' doc so viet nam dong Unicode
If Val(BaoNhieu) = 0 Then
Ketqua = "Không " & ChrW(273) & ChrW(7891) & "ng"
Else
If Abs(BaoNhieu) > 1E+15 Then
Ketqua = "S" & ChrW(7889) & " quá l" & ChrW(7899) & "n"
Else
If BaoNhieu < 0 Then Ketqua = "Âm" & Space(1) Else Ketqua = Space(0)
SOTIEN = Format(Abs(BaoNhieu), "###############0.00")
SOTIEN = Right(Space(15) & SOTIEN, 18)
Hang = Array("None", "tr" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i", "gì " & ChrW(273) & "ó")
DonVi = Array("None", "ngàn t" & ChrW(7927) & "", "t" & ChrW(7927) & "", "tri" & ChrW(7879) & "u", "ngàn", "" & ChrW(273) & ChrW(7891) & "ng", "xu")
Dem = Array("None", "m" & ChrW(7897) & "t", "hai", "ba", "b" & ChrW(7889) & "n", "n" & ChrW(259) & "m", "sáu", "b" & ChrW(7843) & "y", "tám", "chín")
For n = 1 To 6
Nhom = Mid(SOTIEN, n * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If n = 5 Then
Chu = ChrW(273) & ChrW(7891) & "ng" & Space(1)
Else
Chu = Space(0)
End If
Case ".00", ",00"
Chu = "ch" & ChrW(7861) & "n"
Case Else
S1 = Left(Nhom, 1): S2 = Mid(Nhom, 2, 1): S3 = Right(Nhom, 1)
Chu = Space(0): Hang(3) = DonVi(n)
For K = 1 To 3
Dich = Space(0): S = Val(Mid(Nhom, K, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(K) & Space(1)
Else
If K = 1 And n > 1 And n < 6 And Val(Mid(SOTIEN, (n - 1) * 3 - 2, 3)) > 0 Then
Dich = "khoâng" & Space(1) & Hang(K) & Space(1)
End If
End If
Select Case K
Case 2 And S = 1
Dich = "m" & ChrW(432) & ChrW(417) & "i" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(K) & Space(1)
Case 3 And S = 5 And Val(S2) > 2
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If n > 1 And Val(Mid(SOTIEN, (n - 1) * 3 - 2, 3)) > 0 Or (Val(S1) > 0) Then
Dich = "l" & ChrW(7867) & "" & Space(1)
End If
End Select
Chu = Chu & Dich
Next K
End Select
ViTri = InStr(1, Chu, "m" & ChrW(432) & ChrW(7901) & "i m" & ChrW(7897) & "t")
If ViTri > 0 Then Mid(Chu, ViTri, 9) = "m" & ChrW(432) & ChrW(417) & "i m" & ChrW(7889) & "t"
Ketqua = Ketqua & Chu
End If
Next n
End If
End If
VND = UCase(Left(Ketqua, 1)) & Trim(Mid(Ketqua, 2))
End Function
 
Upvote 0
Thanks, sealand. "thanh vien gao coi" good good!
 
Upvote 0
Web KT

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

Back
Top Bottom