如何把數字轉換成文字

阿倫
大家好
想請大家幫小弟一個忙
就是我撰寫一個ACCESS的資料庫
有一個欄位是金額(數字)
我想在列印報表時能夠將它轉換成大寫文字
例如"1230"在列出報表時他會列出"******壹貳叁零"
共十個位子 如果沒用到的位子補*號
請問如何撰寫這個程式
謝謝
tungta
自訂一個函數ConvertC來使用即可

把下列程式加到模組
Function ConvertC(num_org, Optional dollar As Boolean, Optional cate) '數字轉換大寫金額
Dim I
Dim result
Dim cd(0 To 3) '宣告單位陣列
Dim cd1(0 To 2)
num_org = Int(num_org)
cd1(1) = "萬"
cd1(2) = "億"
cd(0) = ""
If IsMissing(cate) Then cate = 1
If cate = 1 Then
cd(1) = "拾"
cd(2) = "佰"
cd(3) = "仟"
ElseIf cate = 2 Then
cd(1) = "十"
cd(2) = "百"
cd(3) = "千"
End If
For I = 2 To Len(num_org) + 1 '轉換為國字,但無單位
If cate = 1 Or IsMissing(cate) Then
Select Case Mid(CStr(num_org), I - 1, 1)
Case Is = 1:
X = "壹"
Case Is = 2:
X = "貳"
Case Is = 3:
X = "參"
Case Is = 4:
X = "肆"
Case Is = 5:
X = "伍"
Case Is = 6
X = "陸"
Case Is = 7:
X = "柒"
Case Is = 8:
X = "捌"
Case Is = 9:
X = "玖"
Case Is = 0:
X = "零"
End Select
ElseIf cate = 2 Then
Select Case Mid(CStr(num_org), I - 1, 1)
Case Is = 1:
X = "一"
Case Is = 2:
X = "二"
Case Is = 3:
X = "三"
Case Is = 4:
X = "四"
Case Is = 5:
X = "五"
Case Is = 6
X = "六"
Case Is = 7:
X = "七"
Case Is = 8:
X = "八"
Case Is = 9:
X = "九"
Case Is = 0:
X = "O"
End Select
End If
x1 = x1 & X
Next I
m = (Len(x1) \ 4)
k = (Len(x1) \ 4)
m1 = Len(x1) Mod 4
If m1 <> "" Then
x2 = Left(x1, m1)
u = 1
GoSub po
result = J
End If
For I = 1 To Len(x1) Step 4
m = m - 1
x2 = Mid(x1, I + m1, Len(x1) - (m * 4) - m1)
If Len(x2) > 4 Then
x2 = Left(x2, 4)
End If
u = 1
GoSub po
result = result & J
Next
If dollar = True Then
ConvertC = result & "元 整"
Else
ConvertC = result
End If
Exit Function '中斷程式
po:
J = ""
L = ""
For u = 0 To Len(x2) - 1 '加上單位
If Mid(x2, Len(x2) - u, 1) <> "零" Then
L = Mid(x2, Len(x2) - u, 1) & cd(u)
J = L & J
ElseIf Mid(x2, Len(x2) - u, 1) = "零" And Left(J, 1) <> "零" Then
J = "零" & J
End If
Next u
If Right(J, 1) = "零" Then '若最後一位為零,則去掉
J = Left(J, Len(J) - 1)
End If
If J <> "" Then
J = J & cd1(m)
End If
Return
End Function
阿倫
謝謝您
我已經看到你提供的程式了
謝謝
阿倫
對不起
我剛剛試了
還是不行
可以大概說一下如何設定嗎?
謝謝

因為我的金額欄位是數字
而你說的程式設定一模組
需要再作甚動作嗎
我一直測不出結果
謝謝
tungta
模組只是設定函數而已,當然須要在表單驅動它,如下:
Me![完整金額] = ConvertC((Me![總計]), True)
阿倫
版主你好
因為我還是沒辦法完成他
是否可以把我的範例寄給你
你幫我該一下
可以嗎?
謝謝
tungta
我並非版主,我的e-mail:lin27850016@yahoo.com.tw
tungta
資料庫已寄回
阿倫
我已經收到你回覆的檔案了
謝謝你
TO tungta大大:
首先感謝你上次寄範例給我,非常謝謝。
這次又碰上了一個問題,困擾了許久,與這篇文章碰到的問題一樣,
也就是怎麼把數字轉換成中文大寫再列印出來,我試了上面你教的方
法,但不了解如何在表單驅動它,也試了 Me![完整金額] = ConvertC((Me![總計]), True)
但就是沒用,而且還出現"不正確的外部程序"這個訊息視窗,到底該怎
麼辦,勞煩你幫小妹我解答一下,感激不盡^^
tungta
可否把資料庫寄來看看:lin27850016@yahoo.com.tw
tungta
資料庫寄回
1.程式碼要放在模組,才方便所有的表單與報表引用
2.引用程式碼時的語法要放在真正要用的地方,例如報表,要放在該欄位所在位置的On Format事件;若是表單,要放在表單的On Current事件
3.發票總金額的語法正確,但是資料表或查詢(你是用表單)與欄位名稱(要放入所有用來計算的)錯誤,至於為何用查詢呢,因為這樣才會包括產品單價與數量兩個欄位
song
大大們:
Q1:
我的問題也是數字要改成國字,但是,為「生日」資料
但是為配合套印,分為「年」「月」、「日」各別抓取列印,(目前已有簡單抓出來查詢欄)
另外:較特殊的是20→廿、21→廿一…;30→卅、31→卅一以此類推

Q2:
再來:就是上面的模組有嘗試套入(模組:已全copy入。ConvertC巨集:執行RunCode,函數名稱:ConvertC) 新手上路,在表單或報表中還是測不出來,

Private Sub Report_Open(Cancel As Integer)
Me![國日] = ConvertC((Me![日]), True)
End Sub
→錯誤訊息:應為變數或程序,而非模組??

再麻煩大大們!感恩!!
song
各位大大:
上面#12 song 所提的問題Q2已解決

但Q1:還是測不出來,如何將「數字轉文字」
10→十、11→十一…;20→廿、21→廿一…;30→卅、31→卅一

再追加Q3:測試中,若資料為空白,會出現「錯誤」,如何將空白資料改為「吉」
報表中「文字方塊」=IIf([月]=Null,"吉",ConvertC([月],True))→出現錯誤!?

新學不懂,煩請幫忙,感恩!
song
感謝各位大大:
問題已經解決,測試ok!!
ANDT
如何轉變出為整數,如1200元轉為壹仟貳佰元(不是:壹仟貳佰零拾零角元)
ANDT
是否能寄一個有關<將數字金額轉換成大寫金額>範例給我嗎? andy8@macau.ctm.net
穗兒
可以寄範例給我? forshily@yahoo.com.tw 數字變國字
tungta
範例已寄出
Arssi
1楼大师,测试成功了哦。但是我想要元后面的角与分,盼望赐教
tungta
直接參考範例吧
請貼上e-mail
Arssi
大师,邮箱号kanny_a@163.com.cn
谢谢。
tungta
範例已寄出
Arssi
tungta 大师,我查邮箱没有收到范例啊。可不可以用其他方式赐教啊??我在广东哦
雲淡風輕
可以麻煩也寄一份給我嗎?感謝
artic.yang@msa.hinet.net
tungta
範例已寄出
小可
大人:
可否也給我一份範例,謝謝!ann@bestpartner.com.tw
tungta
範例已寄出
王 ポニョ
可以寄範例給我? arie@fotek.com.tw 數字變國字

tungta
範例已寄出
阿梓
可以寄一個數字金額轉換成大寫金額範例給我嗎? chienhung2000@pchome.com.tw
tungta
範例已寄出
er8360
也請給我一份.謝謝
er87808360@yahoo.com.tw
tungta
範例已寄出
gina
麻煩寄一份數字變國字, 萬分感謝~ jina.tw@gmail.com
tungta
範例已寄出
arron
麻煩寄一份變國字範本, 非常感謝~ pupu6869@gmail.com
tungta
範例已寄出
小孟
可否也寄一份給我,我想要在「報表」中呈現數字國字的大寫,menglin1022@gmail.com
tungta
小孟大
早上寄給您的範例
表單下方就有報表的按鈕
小孟
啊~對喔~謝謝你
meiko
您好,請問是否也可以寄【國字大寫】範例讓我參考呢?
meikochang@gmail.com
謝謝您~
tungta
範例已寄出
馬特
您好tungta大大,是否也能請您寄【國字大寫】範例讓我參考呢?
clarkpp2007@gmail.com
太感謝你了
tungta
範例已寄出
ET
可以麻煩也寄一份給我嗎?感謝
etmay2012@gmail.com
tungta
範例已寄出
at
可以麻煩也寄一份範例給我嗎?感謝

e-mail: gracebakingltd@gmail.com
tungta
範例已寄出
回到頂部