一個Form
一個TextBox
一個Label
這個修訂後的程式是當使用者在TextBox中輸入只包含0~9的數值後,在Label中就可看見被轉換後的中文字,例如:1560890轉成"壹佰伍拾陸萬零捌佰玖拾"。程式限制為不可輸入超過16個數字。
請建立一個新專案,並在表單中放入上述物件,再把以下程式碼復制到表單的程式
碼視窗,最後按下F5來執行。
PrivateSubForm_Load()
Text1.MaxLength=16
Text1.Text=""
Label1.Caption=""
Label1.AutoSize=True
Label1.BorderStyle=1
EndSub
PrivateSubText1_Change()
Label1.Caption=CChinese(Text1.Text)
EndSub
PrivateFunctionCChinese(StrEngAsString)AsString
IfNotIsNumeric(StrEng)OrStrEngLike"*.*"OrStrEngLike"*-*"Then
IfTrim(StrEng)<>""ThenMsgBox"無效的數字"
CChinese="":ExitFunction
EndIf
DimintLenAsInteger,intCounterAsInteger
DimstrChAsString,strTempChAsString
DimstrSeqCh1AsString,strSeqCh2AsString
DimstrEng2ChAsString
strEng2Ch="零壹貳三肆伍陸柒捌玖"
strSeqCh1="拾佰仟拾佰仟拾佰仟拾佰仟"
strSeqCh2="萬億兆"
StrEng=CStr(CDec(StrEng))
intLen=Len(StrEng)
ForintCounter=1TointLen
strTempCh=Mid(strEng2Ch,Val(Mid(StrEng,intCounter,1)) 1,1)
IfstrTempCh="零"AndintLen<>1Then
IfMid(StrEng,intCounter 1,1)="0"Or(intLen-intCounter 1)Mod4=1Then
strTempCh=""
EndIf
Else
strTempCh=strTempCh&Trim(Mid(strSeqCh1,intLen-intCounter 1,1))
EndIf
If(intLen-intCounter 1)Mod4=1Then
strTempCh=strTempCh&Mid(strSeqCh2,(intLen-intCounter 1)4 1,1)
IfintCounter>3Then
IfMid(StrEng,intCounter-3,4)="0000"ThenstrTempCh=Left(strTempCh,Len(strTempCh)-1)
EndIf
EndIf
strCh=strCh&Trim(strTempCh)
Next
CChinese=strCh
EndFunction->