hỏi về cách nhập chữ tự động sau khi nhập số

Liên hệ QC

nguyenduc_tb

Thành viên mới
Tham gia
14/9/07
Bài viết
14
Được thích
0
có bác nào biết cách nhập số thì ở ô khác tự động nhập chừ không?
VD: - em nhập 1000 khi enter thì ô khác nó tự động nhập chữ là " một nghìn"
- khi nhập 3051984 thì " ba triệu không trăm năm mươi mốt nghìn chín trăm tám mươi tư "
nói chung nhập số nào nó cũng đọc được hết
Các bác giúp em với
 
Cái này bạn tìm trong thư viện download phần name manager á. Có phần dịch số ra chữ đó.
Ví dụ A1=1000, B1=vnud/vnid(a1) là ok à.
 
Upvote 0
bạn copy cái code này nhé

Public Function Doiso(ByVal So_tien As Double, Optional ByVal Loai_tien As String = "®ång") As String
On Error GoTo ErrorHandle
Const cstMaxNumber = 999999999999999#
Const cstMaxDecimalNumber = 9999999999999.99
If So_tien > cstMaxNumber Then
Doiso = ""
Exit Function
End If
If (So_tien - Round(So_tien, 0) <> 0) And Loai_tien <> "VND" Then
If So_tien > cstMaxDecimalNumber Then
Doiso = ""
Exit Function
End If
End If
Dim sUnit As String
Dim sAfterUnit As String
sUnit = ""
sAfterUnit = ""
Select Case Loai_tien
Case "VND", "®ång"
sUnit = "®ång"
sAfterUnit = "xu"
Case "USD"
sUnit = "®« la Mü"
sAfterUnit = "xen"
Case "EUR"
sUnit = "euro"
Case "FRF"
sUnit = "phê r¨ng"
sAfterUnit = "xi linh"
Case "JPY"
sUnit = "yªn"
Case "GBP"
sUnit = "b¶ng"
sAfterUnit = "pence"
Case "CNY"
sUnit = "nh©n d©n tÖ"
Case Else
sUnit = Loai_tien
End Select
If Loai_tien = "VND" Then
So_tien = Abs(Round(So_tien, 0))
Else
So_tien = Abs(Round(So_tien, 2))
End If
'Define some useful mem-var for translating
Dim zk(1 To 9) As String
Dim zd(1 To 18) As String
Dim ttien As String, zkt As String, zv As String
Dim zi As Integer, zj As Integer, i As Integer
zk(1) = "mét"
zk(2) = "hai"
zk(3) = "ba"
zk(4) = "bèn"
zk(5) = "n¨m"
zk(6) = "s¸u"
zk(7) = "b¶y"
zk(8) = "t¸m"
zk(9) = "chin"
zd(15) = sUnit
zd(18) = sAfterUnit
zd(6) = "tû"
zd(9) = "triÖu"
For i = 3 To 12 Step 9
zd(i) = "ngh×n"
Next
For i = 1 To 13 Step 3
zd(i) = "tr¨m"
Next
For i = 2 To 17 Step 3
zd(i) = "m&shy;¬i"
Next
ttien = " "
zkt = CStr(Format(So_tien, "#.00"))
For i = 1 To 18 - Len(zkt)
zkt = " " & zkt
Next
zi = 19 - Len(LTrim(zkt))
'Translating
Do While zi < 19
zv = Mid(zkt, zi, 1)
If InStr(1, "0123456789", zv, vbTextCompare) And zv <> "" Then
zj = CInt(LTrim(CStr(zi)))
If zv = "0" Then
If (zi = 13 Or zi = 10 Or zi = 7 Or zi = 4 Or zi = 1) And (Val(Mid(zkt, zi + 1, 1)) <> 0 Or Val(Mid(zkt, zi + 2, 1)) <> 0) Then
ttien = ttien + " kh«ng tr¨m"
If Mid(zkt, zi + 1, 1) = "0" Then
ttien = ttien + " linh"
End If
ElseIf zi = 18 And Val(Mid(zkt, 17, 1)) > 0 Then
ttien = ttien + " " & sAfterUnit
ElseIf zd(zj) = "m&shy;¬i" And Val(Mid(zkt, zi + 1, 1)) > 0 And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 Then
ttien = ttien + " linh"
ElseIf zi = 6 Or (zi = 15 And So_tien >= 1) Or ((zi = 3 Or zi = 9 Or zi = 12) And Mid(zkt, IIf(zi > 2, zi - 2, 19), 2) <> "00") Then
ttien = ttien + " " + zd(zj)
End If
ElseIf zv = "1" And zd(zj) = "m&shy;¬i" Then
ttien = ttien + " m&shy;êi"
ElseIf zv = "5" And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 And (zi = 3 Or zi = 6 Or zi = 9 Or zi = 12 Or zi = 15 Or zi = 18) Then
ttien = ttien + " l¨m " + zd(zj)
Else
ttien = ttien + " " + zk(CInt(zv)) + " " + zd(zj)
End If
End If
zi = zi + 1
Loop
ttien = Replace(ttien, "m&shy;¬i mét", "m&shy;¬i mèt", , , vbTextCompare)
ttien = Replace(ttien, "m&shy;¬i bèn", "m&shy;¬i t&shy;", , , vbTextCompare)
ttien = UCase(Mid(ttien, 3, 1)) + Mid(ttien, 4)
If Int(So_tien) - So_tien = 0 Then
ttien = ttien + " ch½n"
End If
Doiso = ttien
Exit Function
ErrorHandle:
Doiso = ""
Err.Clear
End Function
 
Upvote 0
nguyenduc_tb đã viết:
có bác nào biết cách nhập số thì ở ô khác tự động nhập chừ không?
VD: - em nhập 1000 khi enter thì ô khác nó tự động nhập chữ là " một nghìn"
- khi nhập 3051984 thì " ba triệu không trăm năm mươi mốt nghìn chín trăm tám mươi tư "
nói chung nhập số nào nó cũng đọc được hết
Các bác giúp em với
Có thể bạn cần thêm doạn code sau:

Mã:
Sub OpenFileInActiveCell()
    ActiveCell.Offset(0, 1) = "muon call ham gi thi cai vao di"
End Sub
Sub Auto_Open()
ActiveSheet.OnEntry = "OpenFileInActiveCell"
End Sub
Sub Auto_Close()
ActiveSheet.OnEntry = ""
End Sub
 
Upvote 0
danglc2000 đã viết:
Public Function Doiso(ByVal So_tien As Double, Optional ByVal Loai_tien As String = "®ång") As String
On Error GoTo ErrorHandle
Const cstMaxNumber = 999999999999999#
Const cstMaxDecimalNumber = 9999999999999.99
If So_tien > cstMaxNumber Then
Doiso = ""
Exit Function
End If
If (So_tien - Round(So_tien, 0) <> 0) And Loai_tien <> "VND" Then
If So_tien > cstMaxDecimalNumber Then
Doiso = ""
Exit Function
End If
End If
Dim sUnit As String
Dim sAfterUnit As String
sUnit = ""
sAfterUnit = ""
Select Case Loai_tien
Case "VND", "®ång"
sUnit = "®ång"
sAfterUnit = "xu"
Case "USD"
sUnit = "®« la Mü"
sAfterUnit = "xen"
Case "EUR"
sUnit = "euro"
Case "FRF"
sUnit = "phê r¨ng"
sAfterUnit = "xi linh"
Case "JPY"
sUnit = "yªn"
Case "GBP"
sUnit = "b¶ng"
sAfterUnit = "pence"
Case "CNY"
sUnit = "nh©n d©n tÖ"
Case Else
sUnit = Loai_tien
End Select
If Loai_tien = "VND" Then
So_tien = Abs(Round(So_tien, 0))
Else
So_tien = Abs(Round(So_tien, 2))
End If
'Define some useful mem-var for translating
Dim zk(1 To 9) As String
Dim zd(1 To 18) As String
Dim ttien As String, zkt As String, zv As String
Dim zi As Integer, zj As Integer, i As Integer
zk(1) = "mét"
zk(2) = "hai"
zk(3) = "ba"
zk(4) = "bèn"
zk(5) = "n¨m"
zk(6) = "s¸u"
zk(7) = "b¶y"
zk(8) = "t¸m"
zk(9) = "chin"
zd(15) = sUnit
zd(18) = sAfterUnit
zd(6) = "tû"
zd(9) = "triÖu"
For i = 3 To 12 Step 9
zd(i) = "ngh×n"
Next
For i = 1 To 13 Step 3
zd(i) = "tr¨m"
Next
For i = 2 To 17 Step 3
zd(i) = "m&shy;¬i"
Next
ttien = " "
zkt = CStr(Format(So_tien, "#.00"))
For i = 1 To 18 - Len(zkt)
zkt = " " & zkt
Next
zi = 19 - Len(LTrim(zkt))
'Translating
Do While zi < 19
zv = Mid(zkt, zi, 1)
If InStr(1, "0123456789", zv, vbTextCompare) And zv <> "" Then
zj = CInt(LTrim(CStr(zi)))
If zv = "0" Then
If (zi = 13 Or zi = 10 Or zi = 7 Or zi = 4 Or zi = 1) And (Val(Mid(zkt, zi + 1, 1)) <> 0 Or Val(Mid(zkt, zi + 2, 1)) <> 0) Then
ttien = ttien + " kh«ng tr¨m"
If Mid(zkt, zi + 1, 1) = "0" Then
ttien = ttien + " linh"
End If
ElseIf zi = 18 And Val(Mid(zkt, 17, 1)) > 0 Then
ttien = ttien + " " & sAfterUnit
ElseIf zd(zj) = "m&shy;¬i" And Val(Mid(zkt, zi + 1, 1)) > 0 And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 Then
ttien = ttien + " linh"
ElseIf zi = 6 Or (zi = 15 And So_tien >= 1) Or ((zi = 3 Or zi = 9 Or zi = 12) And Mid(zkt, IIf(zi > 2, zi - 2, 19), 2) <> "00") Then
ttien = ttien + " " + zd(zj)
End If
ElseIf zv = "1" And zd(zj) = "m&shy;¬i" Then
ttien = ttien + " m&shy;êi"
ElseIf zv = "5" And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 And (zi = 3 Or zi = 6 Or zi = 9 Or zi = 12 Or zi = 15 Or zi = 18) Then
ttien = ttien + " l¨m " + zd(zj)
Else
ttien = ttien + " " + zk(CInt(zv)) + " " + zd(zj)
End If
End If
zi = zi + 1
Loop
ttien = Replace(ttien, "m&shy;¬i mét", "m&shy;¬i mèt", , , vbTextCompare)
ttien = Replace(ttien, "m&shy;¬i bèn", "m&shy;¬i t&shy;", , , vbTextCompare)
ttien = UCase(Mid(ttien, 3, 1)) + Mid(ttien, 4)
If Int(So_tien) - So_tien = 0 Then
ttien = ttien + " ch½n"
End If
Doiso = ttien
Exit Function
ErrorHandle:
Doiso = ""
Err.Clear
End Function

cái này đâu có đọc được unicode nhé
PHP:
Function VNDUni(baonhieu)
' Tien Viet tieng Viet Font Unicode
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
VNDUni = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function
 
Upvote 0
nhập những đoạn Code đó vào phần Macro>VisuaBasic hả?
Các bác chỉ rõ cho em với được không?
 
Upvote 0
danglc2000 đã viết:
Public Function Doiso(ByVal So_tien As Double, Optional ByVal Loai_tien As String = "®ång") As String
On Error GoTo ErrorHandle
Const cstMaxNumber = 999999999999999#
Const cstMaxDecimalNumber = 9999999999999.99
If So_tien > cstMaxNumber Then
Doiso = ""
Exit Function
End If
If (So_tien - Round(So_tien, 0) <> 0) And Loai_tien <> "VND" Then
If So_tien > cstMaxDecimalNumber Then
Doiso = ""
Exit Function
End If
End If
Dim sUnit As String
Dim sAfterUnit As String
sUnit = ""
sAfterUnit = ""
Select Case Loai_tien
Case "VND", "®ång"
sUnit = "®ång"
sAfterUnit = "xu"
Case "USD"
sUnit = "®« la Mü"
sAfterUnit = "xen"
Case "EUR"
sUnit = "euro"
Case "FRF"
sUnit = "phê r¨ng"
sAfterUnit = "xi linh"
Case "JPY"
sUnit = "yªn"
Case "GBP"
sUnit = "b¶ng"
sAfterUnit = "pence"
Case "CNY"
sUnit = "nh©n d©n tÖ"
Case Else
sUnit = Loai_tien
End Select
If Loai_tien = "VND" Then
So_tien = Abs(Round(So_tien, 0))
Else
So_tien = Abs(Round(So_tien, 2))
End If
'Define some useful mem-var for translating
Dim zk(1 To 9) As String
Dim zd(1 To 18) As String
Dim ttien As String, zkt As String, zv As String
Dim zi As Integer, zj As Integer, i As Integer
zk(1) = "mét"
zk(2) = "hai"
zk(3) = "ba"
zk(4) = "bèn"
zk(5) = "n¨m"
zk(6) = "s¸u"
zk(7) = "b¶y"
zk(8) = "t¸m"
zk(9) = "chin"
zd(15) = sUnit
zd(18) = sAfterUnit
zd(6) = "tû"
zd(9) = "triÖu"
For i = 3 To 12 Step 9
zd(i) = "ngh×n"
Next
For i = 1 To 13 Step 3
zd(i) = "tr¨m"
Next
For i = 2 To 17 Step 3
zd(i) = "m&shy;¬i"
Next
ttien = " "
zkt = CStr(Format(So_tien, "#.00"))
For i = 1 To 18 - Len(zkt)
zkt = " " & zkt
Next
zi = 19 - Len(LTrim(zkt))
'Translating
Do While zi < 19
zv = Mid(zkt, zi, 1)
If InStr(1, "0123456789", zv, vbTextCompare) And zv <> "" Then
zj = CInt(LTrim(CStr(zi)))
If zv = "0" Then
If (zi = 13 Or zi = 10 Or zi = 7 Or zi = 4 Or zi = 1) And (Val(Mid(zkt, zi + 1, 1)) <> 0 Or Val(Mid(zkt, zi + 2, 1)) <> 0) Then
ttien = ttien + " kh«ng tr¨m"
If Mid(zkt, zi + 1, 1) = "0" Then
ttien = ttien + " linh"
End If
ElseIf zi = 18 And Val(Mid(zkt, 17, 1)) > 0 Then
ttien = ttien + " " & sAfterUnit
ElseIf zd(zj) = "m&shy;¬i" And Val(Mid(zkt, zi + 1, 1)) > 0 And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 Then
ttien = ttien + " linh"
ElseIf zi = 6 Or (zi = 15 And So_tien >= 1) Or ((zi = 3 Or zi = 9 Or zi = 12) And Mid(zkt, IIf(zi > 2, zi - 2, 19), 2) <> "00") Then
ttien = ttien + " " + zd(zj)
End If
ElseIf zv = "1" And zd(zj) = "m&shy;¬i" Then
ttien = ttien + " m&shy;êi"
ElseIf zv = "5" And Val(Mid(zkt, IIf(zi > 1, zi - 1, 19), 1)) > 0 And (zi = 3 Or zi = 6 Or zi = 9 Or zi = 12 Or zi = 15 Or zi = 18) Then
ttien = ttien + " l¨m " + zd(zj)
Else
ttien = ttien + " " + zk(CInt(zv)) + " " + zd(zj)
End If
End If
zi = zi + 1
Loop
ttien = Replace(ttien, "m&shy;¬i mét", "m&shy;¬i mèt", , , vbTextCompare)
ttien = Replace(ttien, "m&shy;¬i bèn", "m&shy;¬i t&shy;", , , vbTextCompare)
ttien = UCase(Mid(ttien, 3, 1)) + Mid(ttien, 4)
If Int(So_tien) - So_tien = 0 Then
ttien = ttien + " ch½n"
End If
Doiso = ttien
Exit Function
ErrorHandle:
Doiso = ""
Err.Clear
End Function
\

Cái này bị lỗi rồi bạn ơi. Bạn có thể cho mình lại được không?
 
Upvote 0
nguyenduc_tb đã viết:
nhập những đoạn Code đó vào phần Macro>VisuaBasic hả?
Các bác chỉ rõ cho em với được không?
Muốn ăn chơi thì phải tốn kém vậy đó... Xem như bạn chưa biết gì về VBA, ngay cả có code rồi cũng ko biết chạy nó thế nào... Vậy thì nên bắt đầu từ con số 0, xem các bài giảng về VBA của thầy Phantuhuong và anh SA_DQ, khi bạn có 1 kiến thức sơ bản rồi thì việc vận dụng sẽ dễ dàng hơn nhiều... Dao to búa lớn quá có khi lại nhấc ko nỗi
 
Upvote 0
Các bạn mới "chập chững" thì cứ tìm hàm đổi số thành chữ và dùng để giải quyết tình huống. Sau đó dần từng bước tiếp cận với VBA, chứ đọc và học ngay những đoạn code dài loằng ngoằng này tôi e không hiệu quả.
 
Upvote 0
học lâu thì mới biết chứ các bạn muốn một bước lên mây thì hơi khó đấy!
 
Upvote 0
Web KT

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

Back
Top Bottom