File chuyển số sang viết bằng chữ

  • Thread starter HyperVN
  • Ngày gửi
anhoanh

anhoanh

Guest
25/3/04
105
1
0
45
Đà Nẵng
Các Bạn thử chép đoạn code này vào xem:Đây là hàm đổi số thành chữ
Public Function VND(BaoNhieu)
Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
Dim I, J, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If BaoNhieu = 0 Then
KetQua = "Khäng âäöng"
Else
If Abs(BaoNhieu) >= 1E+15 Then
KetQua = " Säú låïn quaï ???"
Else
If BaoNhieu < 0 Then
KetQua = "Træì" & Space(1)
Else
KetQua = Space(0)
End If
SoTien = Format(Abs(BaoNhieu), "##############0.00")
SoTien = Right(Space(15) & SoTien, 18)
Hang = Array("None", "tràm", "mæåi", "gç âoï")
Doc = Array("None", "ngaìn tyí", "tyí", "triãûu", "ngaìn", "âäöng", "xu")
Dem = Array("None", "mäüt", "hai", "ba", "bäún", "nàm", "saïu", "baíy", "taïm", "chên")
For I = 1 To 6
Nhom = Mid(SoTien, I * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If I = 5 Then
Chu = "âäöng" & Space(1)
Else
Chu = Space(0)
End If
Case ".00"
Chu = "chàôn"
Case Else
S1 = Left(Nhom, 1)
S2 = Mid(Nhom, 2, 1)
S3 = Right(Nhom, 1)
Chu = Space(0)
Hang(3) = Doc(I)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(Nhom, J, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "mæåìi" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 4) Then
Dich = "leí" & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
Vitri = InStr(1, Chu, "mæåi mäüt", 1)
If Vitri > 0 Then Mid(Chu, Vitri, 9) = "mæåi mäút"
KetQua = KetQua & Chu
End If
Next I
End If
End If
VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function
-----------------

Public Function USD(WhatNumber)
Dim ToRead, NumString, Group, Word As String
Dim I, J As Byte, W, X, Y, Z As Double
Dim FristColum, SecondColum, ReadMetho
If WhatNumber = 0 Then
ToRead = "None"
Else
If Abs(WhatNumber) >= 1E+15 Then
ToRead = "Too long number ???"
Else
FristColum = Array("None", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eightteen", "nineteen")
SecondColum = Array("None", "None", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
ReadMetho = Array("None", "trillion", "billion", "million", "thousand", "dollars", "cents")
If WhatNumber < 0 Then
ToRead = "Minus" & Space(1)
Else
ToRead = Space(0)
End If
NumString = Format(Abs(WhatNumber), "##############0.00")
NumString = Right(Space(15) & NumString, 18)
For I = 1 To 6
Group = Mid(NumString, I * 3 - 2, 3)
If Group <> Space(3) Then
Select Case Group
Case "000"
If I = 5 And Abs(WhatNumber) > 1 Then
Word = "dollars" & Space(1)
Else
Word = Space(0)
End If
Case ".00"
Word = "only"
Case Else
X = Val(Left(Group, 1))
Y = Val(Mid(Group, 2, 1))
Z = Val(Right(Group, 1))
W = Val(Right(Group, 2))
If X = 0 Then
Word = Space(0)
Else
Word = FristColum(X) & Space(1) & "hundred" & Space(1)
If W > 0 And W < 21 Then
Word = Word & "and" & Space(1)
End If
End If
If I = 6 And Abs(WhatNumber) > 1 Then
Word = "and" & Space(1) & Word
End If
If W < 20 And W > 0 Then
Word = Word & FristColum(W) & Space(1)
Else
If W >= 20 Then
Word = Word & SecondColum(Y) & Space(1)
If Z > 0 Then
Word = Word & FristColum(Z) & Space(1)
End If
End If
End If
Word = Word & ReadMetho(I) & Space(1)
End Select
ToRead = ToRead & Word
End If
Next I
End If
End If
USD = UCase(Left(ToRead, 1)) & Mid(ToRead, 2)
End Function
-------------
Public Function VND_US(WhatNumber)
Dim ToRead, NumString, Group, Word As String
Dim I, J As Byte, W, X, Y, Z As Double
Dim FristColum, SecondColum, ReadMetho
If WhatNumber = 0 Then
ToRead = "None"
Else
If Abs(WhatNumber) >= 1E+15 Then
ToRead = "! Too long number ???"
Else
FristColum = Array("None", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eightteen", "nineteen")
SecondColum = Array("None", "None", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
ReadMetho = Array("None", "trillion", "billion", "million", "thousand", "Vietnamese dong", "xu")
If WhatNumber < 0 Then
ToRead = "Minus" & Space(1)
Else
ToRead = Space(0)
End If
NumString = Format(Abs(WhatNumber), "##############0.00")
NumString = Right(Space(15) & NumString, 18)
For I = 1 To 6
Group = Mid(NumString, I * 3 - 2, 3)
If Group <> Space(3) Then
Select Case Group
Case "000"
If I = 5 And Abs(WhatNumber) > 1 Then
Word = "Vietnamese dong" & Space(1)
Else
Word = Space(0)
End If
Case ".00"
Word = "only"
Case Else
X = Val(Left(Group, 1))
Y = Val(Mid(Group, 2, 1))
Z = Val(Right(Group, 1))
W = Val(Right(Group, 2))
If X = 0 Then
Word = Space(0)
Else
Word = FristColum(X) & Space(1) & "hundred" & Space(1)
If W > 0 And W < 21 Then
Word = Word & "and" & Space(1)
End If
End If
If I = 6 And Abs(WhatNumber) > 1 Then
Word = "and" & Space(1) & Word
End If
If W < 20 And W > 0 Then
Word = Word & FristColum(W) & Space(1)
Else
If W >= 20 Then
Word = Word & SecondColum(Y) & Space(1)
If Z > 0 Then
Word = Word & FristColum(Z) & Space(1)
End If
End If
End If
Word = Word & ReadMetho(I) & Space(1)
End Select
ToRead = ToRead & Word
End If
Next I
End If
End If
VND_US = UCase(Left(ToRead, 1)) & Mid(ToRead, 2)
End Function
______

Font: VNtimes new roman
=vnd(): Trả về VND tiếng việt
=usd(): Trả về USD tiếng anh
=vnd_us(): Trả về VND tiếng anh
Mình đang cần 1 đoạn code trả về USD tiếng việt. Bác nào có thể chỉ bảo cho mình với
 
Khóa học Quản trị dòng tiền
L

laivminh

Guest
20/4/05
7
0
0
48
hanoi
Đào Duy Anh nói:
Toi không biết pw hòm mail này.
Liệu bạn có thể gửi cho tôi không?
Xin cảm ơn
Tôi có File Excel hàm Trans() giúp các bạn đổi số thành chữ tiền VND, USD, bằng chữ VND hoặc English.
 

Đính kèm

  • TRANS.zip
    19 KB · Lượt xem: 797
Sửa lần cuối bởi điều hành viên:
K

KKBS

Guest
23/2/05
53
0
0
51
HCM
tuananh2410 nói:
Xin chào các bạn , mình đang viết 1 chương trình quản lý bán hàng nên cần 1 method viết bằng c# or Vb.net đề chuyển tiền từ số sang chữ đai6 loại như vậy
public string chuyentien(double sotien)
bà con ai biết thì giúp mình nhá ! cám ơn mọi người !

Bạn lấy hàm có sẵn mà mọi người đã post lên viết bằng VB6 sửa lại thành .Net hoặc dùng VB6 dịch hàm có sẵn này ra DLL rồi nhúng nó vào ứng dụng mà bạn đang viết là xong.

Thân,
KKBS.
 
Vualua

Vualua

Geosynthetics
18/12/03
307
8
18
51
Hà Nội
www.asx.com.au
To OverAC : Về mặt nguyên lý thì giống Thanh nhan, tức là tách chuỗi và định nghĩa các ký tự trong chuỗi. Có điều sử dụng hàm thì có khác nhau. Mình dung hàm Fixed . len. left, right, choose, and và chuyển về ký tự text.

Trước đây có làm cả hàm tiếng Việt và Tiếng anh, có thể định nghĩa các chữ số lẻ thập phân. Tuy nhiên công nghệ bay h viêt trên Marcro hiện đại hơn và ứng dụng tốt hơn. Tuy nhiên cách triển khai dịch qua một tổ hợp công thức cũng là một cách
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
21
Trong Mây mù
www.baominh.com.vn
Mình thấy bài của "anhoanh" cũng được đấy. Còn đây là đổi số sang chữ bằng tiếng việt của mình:
Xin mô tả như sau: Sử dụng Font chữ "VNI-..." trong bảng tính. Hàm này chia con số của bạn thành từng nhóm 3 con số, đọc từng nhóm rồi ghép lại thành bộ đọc đầy đủ thông qua hàm DocsoVNI
' Doc 3 chu so phuc vu cho docsongVNI
Function Doc3SoVNI(bachuso)
Dim Dvi, Chuc, Tram, Dodai
Dim c(9)
c(0) = "": c(1) = "moät ": c(2) = "hai ": c(3) = "ba ": c(4) = "boán ":
c(5) = "naêm ": c(6) = "saùu ": c(7) = "baûy ": c(8) = "taùm ": c(9) = "chín "
bachuso = Trim(Str(bachuso))
Dodai = Len(bachuso)
Select Case Dodai
Case 1
Dvi = bachuso
Case 2
Dvi = Right(bachuso, 1)
Chuc = Left(bachuso, 1)
Case Else
Dvi = Right(bachuso, 1)
Chuc = Left(Right(bachuso, 2), 1)
Tram = Left(Right(bachuso, 3), 1)
End Select
Doc3SoVNI = c(Dvi)
If Dvi = 5 Then
If Chuc = 0 Then
Doc3SoVNI = "naêm "
Else
Doc3SoVNI = "laêm "
End If
End If
If Dvi = 1 Then
If Chuc > 1 Then
Doc3SoVNI = "moát "
Else
Doc3SoVNI = "moät "
End If
End If
If Chuc > 0 Then
If Chuc = 1 Then
Doc3SoVNI = "möôøi " + Doc3SoVNI
Else
Doc3SoVNI = c(Chuc) + "möôi " + Doc3SoVNI
End If
End If
If Chuc = 0 And Dvi > 0 Then Doc3SoVNI = "leû " + Doc3SoVNI
If Tram = 0 Then
If Chuc = 0 And Dvi = 0 Then
Doc3SoVNI = ""
Else
Doc3SoVNI = "khoâng traêm " + Doc3SoVNI
End If
Else
Doc3SoVNI = c(Tram) + "traêm " + Doc3SoVNI
End If
End Function

' Doi so nguyen ra chu
Function DocsoNGVNI(Songuyen)
Dim Ldvi, Lngan, Ltrieu, Lty, Lngty, Le, Dodai
If Songuyen = 0 Then
DocsoNGVNI = "khoâng "
Else
Songuyen = Trim(Str(Songuyen))
Dodai = Len(Songuyen)
Songuyen = Space(15 - Dodai) + Songuyen
Ldvi = Val(Right(Songuyen, 3))
Lngan = Val(Mid(Songuyen, 10, 3))
Ltrieu = Val(Mid(Songuyen, 7, 3))
Lty = Val(Mid(Songuyen, 4, 3))
Lngty = Val(Left(Songuyen, 3))

If Ldvi <> 0 Then
DocsoNGVNI = Doc3SoVNI(Ldvi)
End If
If Lngan <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lngan) + "ngaøn " + DocsoNGVNI
End If
If Ltrieu <> 0 Then
DocsoNGVNI = Doc3SoVNI(Ltrieu) + "trieäu " + DocsoNGVNI
End If
If Lty <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lty) + "tyû " + DocsoNGVNI
End If
If Lngty <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lngty) + "ngaøn tyû " + DocsoNGVNI
End If
If Left(DocsoNGVNI, 13) = "khoâng traêm " Then DocsoNGVNI = Right(DocsoNGVNI, Len(DocsoNGVNI) - 13)
If Left(DocsoNGVNI, 4) = "leû " Then DocsoNGVNI = Right(DocsoNGVNI, Len(DocsoNGVNI) - 4)
End If
End Function

' Doc so bat ky VNI
Function DocsoVNI(So)
Dim Le, Am, Dodai, i
If Len(Trim(So)) > 16 Then DocsoVNI = "Giôùi haïn soá thöïc trong Excel laø 15 soá ! Xem laïi soá cuûa baïn ?": Exit Function
If So < 0 Then
So = -So
Am = "AÂm "
End If
So = Trim(Str(So))
Dodai = Len(So)
If Val(So) = 0 Then
DocsoVNI = "khoâng "
Else
For i = 1 To Dodai - 1
If Mid(So, i, 1) = "." Then
Le = Right(So, Dodai - i)
So = Val(Left(So, i - 1))
Exit For
Else
So = So
Le = 0
End If
Next i
If Le = 0 Then
DocsoVNI = DocsoNGVNI(So)
Else
If So = 0 Then DocsoVNI = "khoâng phaûy " + DocsoNGVNI(Le)
If So > 0 Then DocsoVNI = DocsoNGVNI(So) + "phaûy " + DocsoNGVNI(Le)
End If
End If
DocsoVNI = Am + DocsoVNI
DocsoVNI = UCase(Left(DocsoVNI, 1)) + Right(DocsoVNI, Len(DocsoVNI) - 1)
End Function
 
D

datemepls

Guest
20/4/05
5
0
0
53
Sài gòn
Dear Ngan Giang,

Cảm ơn bạn đã cho mình hướng để phát triển VB số nhảy tự động của invoice hay unc. Còn mình muốn hỏi thêm về hàm chuyển số thành chữ. Tuy ra tiền việt thì không có số thập phân sau đồng, nhưng nếu mình có số thập phân, khi chuyển thanh chữ thì nhìn buồn cười lắm, có bạn nào giúp đỡ khi co số thập phân sau tiền đền, hào hay xu gì đó, thi cái hàm sẽ không spell ra được không

Cảm ơn mọi người
 
D

datemepls

Guest
20/4/05
5
0
0
53
Sài gòn
Gửi Anh Lê Văn Duyệt

Mình gắng bập bẹ viết hàm chuyển tiền việt bắng tiếng anh, nhưng mình bị số nó chạy ra có số lẻ.

Anh lê văn duyệt gắng chỉ giáo cho mình nha
Function VNED(Tien)
If Tien = 0 Then
Toread = "None"
Else
SP = Space(1)
RR = Space(0)
Donvi = RR: Hchuc = RR: Khung = RR
Donvi = Donvi + "one two three four "
Donvi = Donvi + "five six seven eight "
Donvi = Donvi + "nine ten eleven twelve "
Donvi = Donvi + "thirteen fourteen fifteen sixteen "
Donvi = Donvi + "seventeeneighteen nineteen "
Hchuc = Hchuc + "twenty thirty forty fifty "
Hchuc = Hchuc + "sixty seventy eighty ninety "
Khung = Khung + "billion milion thousand VN Dong"
If Tien < 0 Then
Toread = "Minus "
Else
Toread = RR
End If
Chuoi = Format(Abs(Tien), "############0.00")
Chuoi = Right(Space(12) + Chuoi, 15)
For i = 1 To 5
Nhom = Mid(Chuoi, i * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If i = 4 And Abs(Tien) > 1 Then
Word = "VN Dong "
Else
Word = RR
End If
Case ".00"
Word = Space(0)
Case Else
X = Val(Left(Nhom, 1))
y = Val(Mid(Nhom, 2, 1))
z = Val(Right(Nhom, 1))
W = Val(Right(Nhom, 2))
If X = 0 Then
Word = RR
Else
Word = Trim(Mid(Donvi, X * 9 - 8, 9)) + " hundred "
If W > 0 And W < 21 Then
Word = Word
End If
End If
If i = 5 And Abs(Tien) > 1 Then
Word = Word
End If
If W < 20 And W > 0 Then
Word = Word + Trim(Mid(Donvi, W * 9 - 8, 9)) + SP
Else
If W >= 20 Then
Word = Word + Trim(Mid(Hchuc, (y - 1) * 9 - 8, 9)) + SP
If z > 0 Then
Word = Word + Trim(Mid(Donvi, z * 9 - 8, 9)) + SP
End If
End If
End If
Word = Word + Trim(Mid(Khung, i * 9 - 8, 9)) + SP
End Select
Toread = Toread + Word
End If
Next i
End If
VNED = UCase(Left(Toread, 1)) + Mid(Toread, 2)
End Function

Và kết quả khi chia bị số thập phần

603,407,603

Six hundred three milion four hundred seven thousand six hundred three VN Dong nineteen
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
21
Trong Mây mù
www.baominh.com.vn
datemepls nói:
Dear Ngan Giang,

Cảm ơn bạn đã cho mình hướng để phát triển VB số nhảy tự động của invoice hay unc. Còn mình muốn hỏi thêm về hàm chuyển số thành chữ. Tuy ra tiền việt thì không có số thập phân sau đồng, nhưng nếu mình có số thập phân, khi chuyển thanh chữ thì nhìn buồn cười lắm, có bạn nào giúp đỡ khi co số thập phân sau tiền đền, hào hay xu gì đó, thi cái hàm sẽ không spell ra được không

Cảm ơn mọi người
Hàm của mình viết để đọc số bằng tiếng Việt một cách tổng quát. Thực ra phần lẻ của loại tiền không có gì phức tạp, trong file Ủy nhiệm chi của mình vẫn chi nhiều loại tiền đấy chứ. Mình chỉ cần làm một bảng danh mục các loại tiền và tài khoản Ngân hàng như sau:

MANTE TENNTE TIENLE VCB - HCMC
USD Đô la Mỹ cent 007.1.37.00?????
VND đồng xu 007.1.00.00?????

Ở bên sheet Ủy nhiệm chi tách ra đọc riêng phần Nguyên + ghép với tên Ngoại tệ và phần lẻ + ghép với phần tiền lẻ (với tiền tệ không dùng tiền lẻ thì bỏ phần này đi là xong) còn tài khoản ngân hàng tự động nhảy theo mã ngoại tệ mà mình chọn.
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
21
Trong Mây mù
www.baominh.com.vn
leekutop nói:
Chào các anh chị ,mình là new member ,mình không biết nhiều về Ecell nâng cao, mình rất cần hàm chuyển số thành chữ cả USD lẫn tiền Việt .Nhưng mình thấy ADD-In NameManager của Trần Văn Hùng là đễ dùng nhất vì mình có thể dùng chỗ nào cũng được trong Ecell.Nhưng không thấy Add-In chuyển sang đồng USD. Có ai có chỉ giúp nha.Vì mình không biết VBA mà ,bởi vậy đưa mã lên mình cũng không biết cách dùng cụ thể ,mấy bạn có thể giúp được không .Thanks
Các bạn có thể tham khảo thêm cách đọc trong file Ủy nhiệm chi của mình.
Đại khái là không đọc 1 loại tiền tệ nào cụ thể, mà sẽ căn cứ vào bảng danh mục ngoại tệ (người dùng có thể sửa chữa) để đọc tất cả các loại tiền tệ.
Mình không load lại file nữa, các bạn vui lòng xem ở topic: "File ton quy va in phieu thu chi" bài số 9
Để dùng chỗ nào trong excel cũng được file chứa hàm phải được mở:
có thể chọn Add-in từ menu và chỉ nơi chứa file .xla của bạn
hoặc chép file vào thư mục "C:\Documents and Settings\user\Application Data\Microsoft\Excel\XLSTART" để Excel tự động gọi hàm của bạn mỗi khi khởi động
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Tất cả các hàm chuyển số ra chữ hiện nay đều được viết trên cùng 1 logic và gần như dùng 1 loại font (Vni font).

Tôi đã làm thử bằng UNICode cho phù hợp với xu thế hiện nay nhưng không được. Có bác nào có giải pháp không?
 
F

ForestC

Guest
11/1/05
377
1
0
44
E'rywhere
Gửi anh Uốc cờ men :

Theo em thì có rất nhiều cách để có thể đọc số thành chữ font Unicode trong VBA. Ngày trước, lần đầu tiên thì em dùng cách kết hợp hàm đọc số thành chữ thông thường (cái hàm mà ai cũng biết là cái gì ấy - vnd), dùng kết hợp với hàm convert font của bạn Over InterMilan . Sau đó em lại chuyển qua dùng trực tiếp mã ASCCII để hiện thị những câu từ tiếng Việt cần thiết. Tóm lại cả 2 cách này đều liên quan đến bảng mã ASCCII cả. Gửi anh và mọi người code theo cái cách thứ 2 mà hiện nay em đang dùng:

Function VNUD(baonhieu)
Dim KetQua, sotien, Nhom, Chu, Dich, S1, S2, S3 As String
Dim i, J, ViTri As Byte, S As Double
Dim Hang, Doc, Dem
If baonhieu = 0 Then
KetQua = "Kh" & ChrW$(244) & "ng " & ChrW$(273) & ChrW$(7891) & "ng"
Else
If Abs(baonhieu) >= 1E+15 Then
KetQua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n - H" & ChrW$(224) & "m " & ChrW$(273) & ChrW$(7893) & "i s" & ChrW$(7889) & " ra ch" & ChrW$(7919) & " Vi" & ChrW$(7879) & "t Nam; font ch" & ChrW$(7919) & " .Vntime - Copyright by MaiKa of AQN (0953-357-988)"
Else
If baonhieu < 0 Then
KetQua = ChrW$(194) & "m" & Space(1)
Else
KetQua = Space(0)
End If
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$(236) & " " & ChrW$(273) & "ã")
Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(272), "t" & ChrW$(272), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", ChrW$(273) & ChrW$(7891) & "ng", "")
Dem = Array("None", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7849) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
For i = 1 To 6
Nhom = Mid(sotien, i * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If i = 5 Then
Chu = ChrW$(273) & ChrW$(7891) & "ng" & Space(1)
Else
Chu = Space(0)
End If
Case ".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) = Doc(i)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(Nhom, J, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And i = 4) Then
Dich = "l" & ChrW$(7867) & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
ViTri = InStr(1, Chu, "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7897) & "t", 1)
If ViTri > 0 Then Mid(Chu, ViTri, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
KetQua = KetQua & Chu
End If
Next i
End If
End If
VNUD = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function

P/S: Theo cách này thì số ký tự trong đoạn mã sẽ nhiều hơn cách kết hợp với hàm convert của Over 1 chút, nhưng có thể tốc độ sẽ nhanh hơn 1 chút vì nó là cách trực tiếp. Còn cái cách 1 kia em nói thế chắc là mọi người ai cũng làm được phải không nào, vì nó dễ hiểu quá mà.
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Có Thể đọc được không?

Có thể đọcgiá trị của một ô được không các bác?
08/2005: Đọc theo nghĩa phát âm ấy?!!!??
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
SA_DQ nói:
Có thể đọcgiá trị của một ô được không các bác?
được chứ. Hàm của Maika dùng để dọc giá trị của 1 ô mà. (hay là tôi hiểu lầm câu hỏi của bác nhỉ?)
 
P

Phanthanh

Guest
27/12/04
18
0
0
Da Nang
www.vnkhuyenmai.com
Hàm VND() không đọc được chữ "tỷ"

Gửi bạn Maika. Tôi thử copy hàm của vào module nhưng nó đọc không được chữ "tỷ". Có cách nào để khắc phục không (tôi dùng font times new roman)
 
T

thanhvo31

Guest
17/7/05
36
0
0
49
Haiphong
tặng bạn hàm chuyển unicode string sang dạng mã

Function Viet2VBE(sViet as string) as string
'sViet là chuỗi bạn nhập vào 1 cell

for i =1 to len(sviet)
c = mid(sviet,1,i)
c1= AsCW(c) ' bạn có thể xem mã unicode của chữ Viet qua hàm này
if i<len(sviet) then d = ")&" else d=")"
t = "chrW$(" & c1 & d
x = x & t
next
Viet2VBE = x
end function
sd nhu sau
ô A1 = "cá cờ"
B1= Viet2VBE(A1) = ....
dán cái này qua code
chúc vui
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Bạn chép đoạn mã này đè vào phần tương ứng trong mã của bạn Maika nhé. Chúc vui.

Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", ChrW$(273) & ChrW$(7891) & "ng", "")
 
P

Phanthanh

Guest
27/12/04
18
0
0
Da Nang
www.vnkhuyenmai.com
workman nói:
Bạn chép đoạn mã này đè vào phần tương ứng trong mã của bạn Maika nhé. Chúc vui.

Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", ChrW$(273) & ChrW$(7891) & "ng", "")
Tớ đã xử được "Tỷ" rồi ! Rất cảm ơn Workman và các bạn.
 

Xem nhiều

Webketoan Zalo OA