码迷,mamicode.com
首页 > 其他好文 > 详细

水晶報表中小寫變大寫的函數-VB

时间:2015-10-12 20:49:03      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

Function total (ls as number) as string

    dim dx_sz as string

    dim dx_dw as string 

    dim str_int as string 

    dim str_dec as string

    dim dx_str as string  

    dim fu as string

    dim a as string

    dim b as string

    dim c as string

    dim d as string

    dim b2 as string

    dim num_int as number

    dim num_dec as number

    dim len_int as number

    dim i as number

    dim a_int as number

    dim pp as number

 

    dx_sz="零壹贰叁肆伍陆柒捌玖"

    dx_dw="万仟佰拾亿仟佰拾万仟佰拾圆"

     

    if ls=0 then dx_str="零圆整"

     

    if ls<0 then

        ls=abs(ls)

        fu="负"

    else

        fu=""

    end if

 

    dx_str=CStr (ls)

    dx_str=Replace (dx_str,"¥","")

    dx_str=replace(dx_str,",","")

    if (ls>=0) and (ls<1) then dx_str="0"+dx_str

     

    pp=InStr (dx_str,".")   

    if pp>0 then 

        str_int=mid(dx_str,1,instr(dx_str,".")-1)

    else

        str_int=dx_str

    end if

 

    num_int=ToNumber (str_int)

 

    if (ls>0) and (ls<1) then 

        num_dec =  ls*100

    else

        num_dec=(ls-num_int)*100

    end if

 

    str_dec=totext(num_dec)

    str_dec=replace(str_dec,"¥","")

 

    len_int=len(str_int)

    dx_str=""

    for i=1 to len_int

        a=mid(str_int,i,1)

        a_int=tonumber(a)

        b=mid(dx_sz,(a_int+1),1)

        c=mid(dx_dw,(13-len_int+i),1)

        if dx_str<>"" then

            d=mid(dx_str,len(dx_str)-1,1)

        else

            d=""

        end if

        if(b="零") and ((d="零") or (b=b2) 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

            dx_str=mid(dx_str,1,len(dx_str)-2)

            d=mid(dx_str,len(dx_str)-1,2)

            if((c="圆") and (d="万"))or((c="万") and (d="亿")) then c=""

        end if

        dx_str=dx_str+b+c

        b2=b

    next i

 

    ‘处理金额小于1的情况

    if len(dx_str)<=2 then dx_str=""

    if(num_dec<10)and(ls>0) then

        a_int=tonumber(str_dec)

        b=mid(dx_sz,(a_int+1),1)

        if num_dec=0 then dx_str=dx_str+"整"

        if num_dec>0 then dx_str=dx_str+"零"+b+"分"

    end if

    if num_dec>=10 then

        a_int=tonumber(mid(str_dec,1,1))

        a=mid(dx_sz,(a_int+1),1)

        a_int=tonumber(mid(str_dec,2,1))

        b=mid(dx_sz,(a_int+1),1)

        if a<>"零" then a=a+"角"

        if b<>"零" then b=b+"分" else b=""

        dx_str=dx_str+a+b

    end if 

         

    dx_str=fu+dx_str

 

    dx_str=replace(dx_str,"零亿","亿")

    dx_str=replace(dx_str,"零万","万")

    dx_str=replace(dx_str,"零千","千")

    dx_str=replace(dx_str,"零圆","圆")

 

 

    total =dx_str

End Function

水晶報表中小寫變大寫的函數-VB

标签:

原文地址:http://www.cnblogs.com/jixinyu12345/p/4872650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!