这是别人做的,给你看看Option ExplicitPrivate Sub Command1_Click()
   
   MsgBox GetChineseNum(111, 1, 3)
End Sub
Public Function GetChineseNum(ByVal OrgNum As Double, _
Optional ByVal IsMoney As Integer, _
Optional ByVal dotNum As Integer) As String
'参数OrgNum: 为数字
'参数IsMoney: 为是不是返回人民币大写(1返回)
'参数dotNum: 为设置小数点后面的位数,默认为0,最大为8位
Dim NumSite(1), NumChar(1), NewNumStr As String, DotSite As Integer
Dim i As Integer, iDs As Boolean, iNs As Boolean, iLn As Boolean
Dim AfterDotNum As String
NumSite(0) = Array("", "", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千")
NumSite(1) = Array("", "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟")
NumChar(0) = Array("", "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十")
NumChar(1) = Array("", "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾")
NewNumStr = StrReverse(Int(OrgNum))
For i = 1 To Len(NewNumStr)
iDs = Abs((i Mod 4) <> 1) '此用于"万,亿"的设置
iNs = Abs((Mid(NewNumStr, i, 1) <> 0)) '本位数据是否为0
iLn = IIf(iNs <> 0, 0, iLn) '如果后一位是0,则本位不再有"零"
GetChineseNum = NumChar(IsMoney)((Mid(NewNumStr, i, 1) + 1) * Abs((iNs Or iDs) And (iLn = 0))) & _
NumSite(IsMoney)(i * Abs(iNs Or (iDs = 0))) & GetChineseNum
iLn = Abs(Not iNs) '保存本次的是否为0
Next i
If OrgNum < 20 Then '小于20我们通常不说"一十几"而说"十几"
If IsMoney Then
GetChineseNum = Replace(GetChineseNum, "壹拾", "拾")
Else
GetChineseNum = Replace(GetChineseNum, "一十", "十")
End If
End IfIf dotNum <> 0 Then '处理小数
DotSite = InStr(1, OrgNum, ".")
If DotSite > 0 Then
AfterDotNum = Mid(OrgNum, DotSite, dotNum)
If IsMoney Then
AfterDotNum = Format(AfterDotNum, "元0角0分" & String(dotNum - 2, "0") & "整")
AfterDotNum = Replace(AfterDotNum, "0角", "")
Else
AfterDotNum = "点" & AfterDotNum
End If
For i = 0 To 10
AfterDotNum = Replace(AfterDotNum, i, NumChar(IsMoney)(i + 1))
Next i
End If
End If
GetChineseNum = GetChineseNum & AfterDotNum
Erase NumSite '删除数组
Erase NumCharEnd Function

解决方案 »

  1.   

    Private Function CWord(Num) As String
    Num定义成合适的变量,你的程序有一点很不好,变量使用前最好明确声明类型
      

  2.   

    是啊,最好你先声明 Option Explicit程序里太多IF THEN ELSE了,
      

  3.   

    我帮你改改,有信箱吗,发到你的信箱
    CSDN今天要调整系统,怕来不及回给你
    [email protected]
      

  4.   

    好,改好发给你
    coolsky(天心) 的代码对你没有用吗?
      

  5.   

    楼主,,已经帮你改好,发到你信箱了
    SORRY,昨天没来得及修改,今天才改好
    收下来试试看