以下是引用ldy在2008-7-25 1:07:43的发言:兼容几种特殊的大写形式 ¥-陆 万 零 仟 零 佰 陆 拾 伍 圆 贰 角 零 分整 玖佰兆零伍亿零柒十万零陆拾伍圆整 负9佰兆零5亿另7拾万 X6拾圆3角2分 九亿五千6百二十 三圆三角二分 像上面这样的 只要不是错的太离谱 都可以转换成数字 转换范围 正负 1000兆 (1000万亿)以下 够用了吧 Function DxToN(ss) For i% = 1 To 9 ss = Replace(ss, Mid("壹贰叁肆伍陆柒捌玖", i, 1), i) ss = Replace(ss, Mid("一二三四五六七八九", i, 1), i) Next For i% = Len(ss) To 1 Step -1 s$ = Mid$(ss, i, 1) x% = InStr("分角圆拾佰仟万拾佰仟亿拾佰仟兆", s) If x = 0 Then x% = InStr("分毛元十百千萬十百千億十百千兆", s) If x Then j% = IIf(j% < x, x, ((j - 3) \ 4) * 4 + x) If Val(s) Then m# = m# + (s & String(j - 1, "0")) / 100 Next DxToN = Format(m, "0.00") If InStr(ss, "-") Or InStr(ss, "负") Then DxToN = "-" & DxToN End Function 欢迎测试 转换后数字为文本型,不方便求和,帮你改了两处,转换后为数值型数字,总字符数减少了一个. 附:代码如下(改动之处为倒数第2,3行): Function DxToN(ss) For i% = 1 To 9 ss = Replace(ss, Mid("壹贰叁肆伍陆柒捌玖", i, 1), i) ss = Replace(ss, Mid("一二三四五六七八九", i, 1), i) Next For i% = Len(ss) To 1 Step -1 s$ = Mid$(ss, i, 1) x% = InStr("分角圆拾佰仟万拾佰仟亿拾佰仟兆", s) If x = 0 Then x% = InStr("分毛元十百千萬十百千億十百千兆", s) If x Then j% = IIf(j% < x, x, ((j - 3) \ 4) * 4 + x) If Val(s) Then m# = m# + (s & String(j - 1, "0")) / 100 Next DxToN = --Format(m, "0.00") If InStr(ss, "-") Or InStr(ss, "¸º") Then DxToN = -DxToN End Function
7ryy9jdr.rar
(60.39 KB, 下载次数: 214)
[此贴子已经被作者于2008-8-7 23:32:10编辑过] |