for i=1 to 13
dxint[i]=mid(dxstr,26 - i*2+1,2) //反向取
if i < 11 then // 取"零壹贰叁肆伍陆柒捌玖"
sz[i]=mid(szstr,i*2 - 1,2)
else
sz[i]=" " //可以不要
end if
next
dxdec[1]="角"
dxdec[2]="分"
dxstr=" "
for i = 1 to lenint
a = mid(mid(numstr,1,lenint),i,1)
b = sz[integer(a)+1]
c = dxint[lenint - i +1]
if dxstr<>" " then
d = mid(dxstr,len(dxstr) - 1 ,2)
else
d = " "
end if
if b="零" and (d="零" or b=bbak or c="元" or c="万" or c="亿") then
b=""
if a="0" and c<>"元" and c<>"万" and c<>"亿" then
c=""
if (c="元" or c="万" or c="亿") and d="零" and a="0" then
dxstr=mid(dxstr,1,len(dxstr) - 2)
d = mid(dxstr,len(dxstr) - 1,2)
if (c="元" and d="万" or c="万"and d="亿") then
c=""
end if
dxstr=dxstr + b + c
bbak = b
next
for i=1 to lendec
a = mid (mid(numstr,lenint+2,lendec),i,1)
if a="0" and dxdec[i]="分" then
b=""
else
b=sz[integer(a) + 1]
end if
if a<>"0" then
dxstr=dxstr+b+dxdec[i]
else
dxstr=dxstr+b
end if
next
FOR li_cnt=li_StrLen TO 1 STEP -1 // 从分开始取值
li_SubNum=Integer(Mid(ls_NumStr,li_cnt,1))
ls_SubSwfh=Mid(ls_swfh,li_cnt * 2 - 1, 2) // 单位符号
li_NowSW=li_StrLen - li_cnt
IF li_SubNum=0 THEN // 将 0 替换为'零'或'整'
IF lb_LastIsZero THEN // 上一个数值是否也是 0
IF li_NowSW=1 THEN
ls_SubDxfh='整'
ELSE
ls_SubDxfh=''
END IF
ELSE
CHOOSE CASE li_NowSW
CASE 0,2,6,10
ls_SubDxfh='' // 去除分,圆,万,亿位的 0 值
CASE ELSE
ls_SubDxfh='零'
END CHOOSE
END IF
CHOOSE CASE li_NowSW
CASE 2,6,10 // 当前位数是否是 元\万\亿 位
CASE ELSE
ls_SubSwfh = ''
END CHOOSE
ELSE
ls_SubDxfh=Mid(ls_Dxfh,li_SubNum * 2 - 1, 2) // 大写数字符号
END IF
lb_LastIsZero=(li_SubNum=0) // 上一位数值是否为 0
ls_Result=ls_SubDxfh + ls_SubSwfh + ls_Result
NEXT
li_Pos=Pos(ls_Result,'亿万')
IF li_Pos>0 THEN
ls_Result=REPLACE(ls_Result,li_Pos + 2, 2,'') // 移除 "万" 字
END IF