'功能:将小写金额转换成大写金额
'环境:vb6.0下测试能通过Private Const NUM_UNIT = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟"         '单位
Private Const NUM_VALUE = "零壹贰叁肆伍陆柒捌玖"                        '十个大写
Private Const HEAD_LABEL = "¥ "                                        '字串的头部字符
'参数说明:doubleCurrNum    需转化的数值
'          strErrInfo       返回错误信息
'       blnDisplayZero   是否要显示零 如:(显示零)壹佰 零拾 叁元 伍角 伍分  True 显示 False 不显示 默认值为Ture
'          intSpaceNum      字符间的空格数,默认值为0
'返回值  :转换成功返回转换后的大写金额,转换失败返回vbNullString
Public Function CaseMoney(ByVal doubleCurrNum As Double, ByRef strErrInfo As String, Optional ByVal blnDisplayZero As Boolean = True, Optional ByVal intSpaceNum As Integer = 0) As String
    Dim strTmp  As String
    Dim intI    As Integer
    Dim strRet  As String
    
    On Error GoTo CaseEnd
    
    CaseMoney = vbNullString        '初始化函数返回值
    
    strTmp = Format(doubleCurrNum, "0.00")                      '格式化数值
    strTmp = Left(strTmp, Len(strTmp) - 3) & Right(strTmp, 2)   '去掉小数点
    
    If Len(strTmp) > 18 Then
        strErrInfo = "数值位数太多,不能处理!"
        GoTo CaseEnd
    End If
    
    strRet = HEAD_LABEL
    
    For intI = Len(strTmp) To 1 Step -1
        If Not blnDisplayZero And intI > 2 And Asc(Mid(strTmp, Len(strTmp) - intI + 1, 1)) - 48 = 0 Then    '是否显示零
        Else
            strRet = strRet & Mid(NUM_VALUE, Asc(Mid(strTmp, Len(strTmp) - intI + 1, 1)) - 48 + 1, 1)       '取大写
            strRet = strRet & Mid(NUM_UNIT, intI, 1)                                                        '取单位
            strRet = strRet & Space(intSpaceNum)                                                            '取字符间空格数
        End If
    Next
    
    CaseMoney = strRetCaseEnd:
End Function