'功能:将小写金额转换成大写金额
'环境: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
'环境: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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货