设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] [分享]没事儿自己写了一个小写数字转换成大写的函数

[复制链接]
跳转到指定楼层
1#
发表于 2005-1-20 17:00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


'数级内各数位的单位

Function Unite(ByVal CurrentU As Integer) As String

    u = CurrentU Mod 4

    Select Case u

    Case 1

        Unite = ""

    Case 2

        Unite = "十"

    Case 3

        Unite = "百"

    Case 0

        Unite = "千"

        

    End Select

End Function

'生成数级单位

Function LevelUnite(ByVal CurrU As Integer) As String

    If CurrU Mod 4 = 1 Then

        Select Case CurrU \ 4

        Case 0

            LevelUnite = ""

        Case 1

            LevelUnite = "万"

        Case 2

            LevelUnite = "亿"

        Case 3

            LevelUnite = "兆"

        End Select

    Else

        LevelUnite = ""

    End If

End Function

'转换一个数位上的数

'N 要转换的数字

'u 所在数位

'num_l 转换数的总位数

Function TranCurrNum(N As String, u As Integer, num_l As Integer) As String

    Dim num(9) As String

   

    num(1) = "一"

    num(2) = "二"

    num(3) = "三"

    num(4) = "四"

    num(5) = "五"

    num(6) = "六"

    num(7) = "七"

    num(8) = "八"

    num(9) = "九"

    num(0) = "零"

    '每级的十位如果是最高位,且数字为1时,以“十”-“十九”出现,不出现“一十几”

    If Not (u Mod 4 = 2 And N = "1" And u = num_l) Then

        TranCurrNum = num(Asc(N) - 48)

    End If

   

    '如果数字为0,则返回零,不附加单位

    If N <> "0" Then

        TranCurrNum = TranCurrNum & Unite(u)

    End If

   

End Function

'要将小写数转换成大写,就用它了。

Function XtoD(Optional num As String = "", Optional UniteName As String = "") As String

    Dim temp As String, temp_l As String, i As Integer

    Dim num_len As Integer, num_len_l As Integer

   

    If Len(num) = 0 Then

        Exit Function

    End If

   

    temp = num & ""

    num_len = Len(temp)

   

    For i = 1 To num_len

        num_len_l = Len(temp)

        temp_l = Left(temp, 1)

        

        If Not (temp_l = "0" And Right(XtoD, 1) = "零") Then

            XtoD = XtoD & TranCurrNum(temp_l, num_len_l, num_len)

        End If

        '每个数级结束时,如末尾有“零”则去掉

        If num_len_l Mod 4 = 1 And Right(XtoD, 1) = "零" Then

            XtoD = Left(XtoD, Len(XtoD) - 1)

        End If

        '每个数级末尾加本数级的单位

        XtoD = XtoD & LevelUnite(num_len_l)

        

        temp = Mid(temp, 2)

        

    Next i

   

    XtoD = XtoD & UniteName

End Function



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-1-27 04:48:00 | 只看该作者
怎样用呀?本人是菜鸟不懂喔.....本人现在正想解决这种能把小写数字转换成大写的问题.也就是在已经输入有数据的Access表中把小写数字(如:1,2,3...)转换成大写(如:一,二,三).....请大家帮帮忙呀.......本人不想一一改啊........有什么好办法么?
3#
 楼主| 发表于 2005-2-6 21:58:00 | 只看该作者
将代码全部复制到一模块中。再在需要使用的地方使用xtod(需要转换的小写数,[需要使用的单位]),后一个参数可缺省。另外这个函数我没有全面测试过,可能还存在一些小问题,所以不能保证你使用中的正确性。

点击这里给我发消息

4#
发表于 2005-2-8 19:34:00 | 只看该作者
不错,可再加多个参数, 改进一下,让用户选择是用“一 二 三 四”还是 “壹 贰 叁 肆" 这种格式.
5#
发表于 2006-11-25 21:43:00 | 只看该作者
规范化发挥规范化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:40 , Processed in 0.082786 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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