设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1394|回复: 2
打印 上一主题 下一主题

[模块/函数] 久未到论坛,提供一份数字转化中文的模块,可无限制大小,零值的写法调整一下就可变为

[复制链接]
跳转到指定楼层
1#
发表于 2004-12-10 01:52:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Function NumberToWord(inputnumber As Currency)

'2001年8月 lixibi

'本函数为财会数字转换为中文标准写法,设计思路优化算法,用最少的执行语句完成,

'For完成每个数字的转换

'转换后判断值为0时的处理,用Case判断不同位零的写法,可以让程序代码更易懂,优化程序执行

Const strChineseWord0 = "零"

Const strChineseWord1 = "壹"

Const strChineseWord2 = "贰"

Const strChineseWord3 = "参"

Const strChineseWord4 = "四"

Const strChineseWord5 = "伍"

Const strChineseWord6 = "陆"

Const strChineseWord7 = "柒"

Const strChineseWord8 = "捌"

Const strChineseWord9 = "玖"



On Error GoTo Err_NumberToWord

Dim intNumber As Byte, intDW As Byte, i As Byte

Dim strChineseNumber As String, strNumber As String

Dim intLong As Integer

strNumber = Trim(Str(inputnumber * 100))    '数值转换字符串,并且含分角的长度

intLong = Len(strNumber)                    '取得数值的长度



strChineseNumber = ""

For i = 1 To intLong

   

    intDW = i

    intNumber = Val(Mid(strNumber, intLong - i + 1, 1))

   

    If intNumber = 0 Then  '零位处理

            

     

            Select Case I

                Case 1, 2  '分,角位

                    If strChineseNumber <> "" Then

                       

                       strChineseNumber = Numberchange(intNumber) & strChineseNumber

                    End If

               

                Case 3, 7, 11   '元,万,亿位

                    strChineseNumber = dwchange(intDW) & strChineseNumber

                    

                Case Else  '拾,佰,仟位

                    If Left(strChineseNumber, 1) = "元" Or Left(strChineseNumber, 1) = "万" Or Left(strChineseNumber, 1) = "亿" Then  '如果左边是元万亿则不写

                        strChineseNumber = strChineseNumber

                    Else

                        If Left(strChineseNumber, 1) = "零" Then '如果是左边已有一个零则不加零,否则加零

                            strChineseNumber = strChineseNumber

                        Else

                            strChineseNumber = Numberchange(intNumber) & strChineseNumber

                        End If

                    End If

                    

               

                End Select

        Else

            strChineseNumber = Numberchange(intNumber) & dwchange(intDW) & strChineseNumber

    End If

Next

If Right(strChineseNumber, 1) = "元" Or Right(strChineseNumber, 1) = "角" Then strChineseNumber = strChineseNumber & "整"

NumberToWord = strChineseNumber



Exit_NumberToWord:

    Exit Function

Err_NumberToWord:

    MsgBox Err.Description

    Resume Exit_NumberToWord

End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2004-12-10 01:59:00 | 只看该作者
谢谢啦,好东东啊[em01]
3#
发表于 2006-11-25 21:50:00 | 只看该作者
士大夫士大夫是
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-15 21:40 , Processed in 0.092633 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表