柳 佳 顧士學(xué)
[摘 要]在Excel中運(yùn)用VBA實(shí)現(xiàn)了中文大寫金額轉(zhuǎn)換提高了工作效率
[關(guān)鍵詞]VBA Excel 函數(shù)
[中圖分類號(hào)]TD17[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1007-9416(2009)12-0110-02
在財(cái)會(huì)上很多情況下,需要從小到大寫金額的轉(zhuǎn)換,雖然我們通過(guò)設(shè)置Excel的單元格的特殊格式,可以將數(shù)字轉(zhuǎn)換為中文大寫數(shù)字。但這些方法有的不夠?qū)嵱?有的輸出格式不符合財(cái)會(huì)規(guī)定。下面我們提出在Excel環(huán)境中運(yùn)用VBA技術(shù)實(shí)現(xiàn)中文大寫金額轉(zhuǎn)換。
1 環(huán)境選擇
Excel 是微軟公司集成辦公軟件Office 中的一個(gè)組件,是用戶使用最為廣泛的軟件平臺(tái)之一。用其內(nèi)嵌的編程語(yǔ)言VBA進(jìn)行二次開發(fā)得到的應(yīng)用軟件,既可以使繁瑣、重復(fù)操作自動(dòng)化,提高工作效率和應(yīng)用水平,同時(shí)又不改變Excel原有的界面風(fēng)格、系統(tǒng)功能和操作方式,特別是它的編輯、排版、打印功能。用戶不必經(jīng)過(guò)特殊學(xué)習(xí)和培訓(xùn),即可使用,大大降低軟件的使用門檻,提高了軟件的可用性。
2 VBA簡(jiǎn)介
Visual Basic for Applications(簡(jiǎn)稱VBA)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,它具有跨越多種Office 應(yīng)用軟件并且控制應(yīng)用軟件對(duì)象的能力。VBA提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提供了比較完整的程序設(shè)計(jì)語(yǔ)言。Office就不僅僅是應(yīng)用程序,更是一個(gè)開發(fā)平臺(tái),可以利用VBA對(duì)Office 進(jìn)行二次開發(fā),擴(kuò)展其功能。
VBA具有以下特征:
2.1 VBA 是一種解釋性語(yǔ)言
由于 VBA 是在VISUAL BASIC 的框架上建立起來(lái)的因此它也繼承了Visual Basic 作為一種解釋性語(yǔ)言的特性
2.2 VBA 是一種面向?qū)ο蟮恼Z(yǔ)言
作為新一代的高級(jí)語(yǔ)言VBA 提供了對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的支持實(shí)際上VBA 的工作過(guò)程就是對(duì)各種對(duì)象包括VISUAL BASIC對(duì)象和OFFICE對(duì)象進(jìn)行操作的過(guò)程
2.3 VBA支持可視化的編程環(huán)境
VBA 提供了新穎的可視化設(shè)計(jì)工具巧妙地將Windows 界面設(shè)計(jì)的復(fù)雜性封裝起來(lái)程序開發(fā)人員不必再為界面設(shè)計(jì)而編寫大量程序代碼僅需采用現(xiàn)有工具按設(shè)計(jì)者要求的布局在屏幕上畫出所需界面并為各圖形對(duì)象設(shè)置屬性即可。
3 問(wèn)題實(shí)現(xiàn)
進(jìn)入VBA編輯環(huán)境,建立一個(gè)模塊,在模塊中定義一個(gè)名為ChangeLU的函數(shù),代碼如下:
Function ChangeLU(XXJE As String)
SL = "零壹貳叁肆伍陸柒捌玖"
JE = "分角元拾佰仟萬(wàn)拾佰仟億"
M = Replace(Trim(XXJE), ".", "")
N = Len(M)
J = N: DXJE = ""
For I = 1 To N
W = Val(Mid(M, I, 1)) '
If W > 0 Then
DXJE = DXJE + Mid(SL,W +1, 1)
DXJE = DXJE + Mid(JE, J, 1)
ElseIf W = 0 Then
If Mid(JE, J, 1) = "萬(wàn)" Then
DXJE = DXJE + Mid(JE, J, 1)
ElseIf Mid(JE, J, 1) = "元" Then
If Len(M) = 3 Then
DXJE = DXJE + "零"
End If
DXJE = DXJE + "元"
If Val(Mid(M, I + 1, 1)) > 0 And Len(M) > 3 Then
DXJE = DXJE + Mid(SL, W + 1, 1)
End If
ElseIf Val(Mid(M, I + 1, 1)) > 0 Then
DXJE = DXJE + Mid(SL, W + 1, 1)
ElseIf Val(Mid(M, I)) = 0 Then
If J >= 7 Then DXJE = DXJE + "萬(wàn)"
If J >= 3 Then DXJE = DXJE + "元"
DXJE = DXJE + "整"
Exit For
End If
End If
J = J - 1
Next
ChangeLU = DXJE
End Function
注意:函數(shù)的調(diào)用參數(shù)小寫金額要求必須是文本型,而且一定要有兩位小數(shù)。
4 函數(shù)的應(yīng)用
函數(shù)在Excel應(yīng)用程序定義之后,就可以像內(nèi)部函數(shù)一樣調(diào)用。比如,在任意一個(gè)工作表的B3單元格輸出公式“=changeLu(A3)”,然后用填充句柄向下填充若干行,只要在A列輸入小寫金額,B列會(huì)立即顯示對(duì)應(yīng)的大寫金額。(注意:A列單元格的格式要設(shè)置為“數(shù)字作為文本處理”,輸入的數(shù)值要帶有兩位小數(shù)。)
[參考文獻(xiàn)]
[1] 李政.Office XP 編程基礎(chǔ)與開發(fā)實(shí)例[M].北京:國(guó)防工業(yè)出版社,2001,(10).