中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 文本/文件
数字向中文转换
作者:shawls 时间:2001-11-04 10:47 出处:互联网 责编:chinaitpower
              摘要:数字向中文转换

Public Function ChinaNum(ByVal Num As String) As String
On Error GoTo ChinaNumErr
ChinaNum = ""

Dim str_tmp_CN As String
Dim str_tmp_ZS As String
Dim str_tmp_XS As String
Dim I As Long

If VBA.Trim(Num) = "" Then
    GoTo ChinaNumErr
End If

For I = 1 To VBA.Len(Num) Step 1
     Select Case VBA.Mid$(Num, I, 1)
         Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "."
         Case Else
              GoTo ChinaNumErr
     End Select
Next I

If Num Like "*.*" Then
    If Num Like "*.*.*" Then
        GoTo ChinaNumErr
    End If
    I = VBA.InStr(1, Num, ".", vbTextCompare)
    str_tmp_ZS = VBA.Left(Num, I - 1)
    str_tmp_XS = VBA.Right(Num, VBA.Len(Num) - I)


    str_tmp_ZS = zsTOstr(str_tmp_ZS)
    str_tmp_XS = xsTOstr(str_tmp_XS)
   
   
    If str_tmp_ZS = "" Then
        str_tmp_CN = "零"
    Else
        str_tmp_CN = str_tmp_ZS
    End If

    If str_tmp_XS <> "" Then
        str_tmp_CN = str_tmp_CN & "点" & str_tmp_XS
    End If

End If
GoTo ChinaNumOK

ChinaNumOK:
    If str_tmp_CN <> "" Then
        Let ChinaNum = str_tmp_CN
    Else
        GoTo ChinaNumErr
    End If
    GoTo ChinaNumExit

ChinaNumErr:
    Err.Clear
    ChinaNum = ""
    GoTo ChinaNumExit
   
ChinaNumExit:
    'clear all money
    str_tmp_CN = ""
    str_tmp_ZS = ""
    str_tmp_XS = ""
    I = 0
    Exit Function
   
End Function

Private Function zsTOstr(ByVal str_ZS As String) As String
On Error GoTo zsTOstrErr
     If Not IsNumeric(str_ZS) Or str_ZS Like "*.*" Or str_ZS Like "*-*" Then
          If Trim(str_ZS) <> "" Then
              GoTo zsTOstrErr
          End If
     End If
    
     If VBA.Len(str_ZS) > 16 Then
         Let str_ZS = VBA.Left(str_ZS, 16)
     End If
    
     Dim intLen As Integer, intCounter As Integer
     Dim strCh As String, strTempCh As String
     Dim strSeqCh1 As String, strSeqCh2 As String
     Dim str_ZS2Ch As String
     str_ZS2Ch = "零壹贰叁肆伍陆柒捌玖"
     strSeqCh1 = " 拾佰仟 拾佰仟 拾佰仟 拾佰仟"
     strSeqCh2 = " 万亿兆"
     str_ZS = CStr(CDec(str_ZS))
     intLen = Len(str_ZS)
     For intCounter = 1 To intLen
          strTempCh = Mid(str_ZS2Ch, Val(Mid(str_ZS, intCounter, 1)) + 1, 1)
          If strTempCh = "零" And intLen <> 1 Then
               If Mid(str_ZS, intCounter + 1, 1) = "0" Or (intLen - intCounter + 1) Mod 4 = 1 Then
                    strTempCh = ""
               End If
          Else
               strTempCh = strTempCh & Trim(Mid(strSeqCh1, intLen - intCounter + 1, 1))
          End If
          If (intLen - intCounter + 1) Mod 4 = 1 Then
               strTempCh = strTempCh & Mid(strSeqCh2, (intLen - intCounter + 1) \ 4 + 1, 1)
               If intCounter > 3 Then
                    If Mid(str_ZS, intCounter - 3, 4) = "0000" Then strTempCh = Left(strTempCh, Len(strTempCh) - 1)
              End If
          End If
          strCh = strCh & Trim(strTempCh)
     Next
     GoTo zsTOstrOK

zsTOstrOK:
    Let zsTOstr = strCh
    GoTo zsTOstrExit

zsTOstrErr:
    Err.Clear
    zsTOstr = ""
    GoTo zsTOstrExit

zsTOstrExit:
    strCh = ""
    intLen = 0
    intCounter = 0
    strTempCh = ""
    strSeqCh1 = ""
    strSeqCh2 = ""
    str_ZS2Ch = ""
    Exit Function

End Function

Private Function xsTOstr(ByVal str_XS As String) As String
On Error GoTo xsTOstrErr
     If Not IsNumeric(str_XS) Or str_XS Like "*.*" Or str_XS Like "*-*" Then
          If Trim(str_XS) <> "" Then
              GoTo xsTOstrErr
          End If
     End If
    
     If VBA.Len(str_XS) > 20 Then
         GoTo xsTOstrErr
     End If
    
     Dim str_TH As String
     str_TH = "零壹贰叁肆伍陆柒捌玖"
    
     Dim I As Long
     Dim str_tmp_XS As String
    
     For I = 1 To VBA.Len(str_XS) Step 1
         str_tmp_XS = str_tmp_XS & VBA.Mid(str_TH, VBA.CInt(VBA.Mid(str_XS, I, 1)) + 1, 1)
     Next I
    
     If str_tmp_XS = "" Then
         GoTo xsTOstrErr
     End If
    
     GoTo xsTOstrOK

xsTOstrOK:
    Let xsTOstr = str_tmp_XS
    GoTo xsTOstrExit

xsTOstrErr:
    Err.Clear
    xsTOstr = ""
    GoTo xsTOstrExit

xsTOstrExit:
    str_TH = ""
    I = 0
    str_tmp_XS = ""
    Exit Function

End Function


       以上代码来自: SourceCode Explorer(源代码数据库)
           复制时间: 2002-06-12 19:27:13
           当前版本: 1.0.705
               作者: Shawls
           个人主页: Http://Shawls.Yeah.Net
             E-Mail: ShawFile@163.Net
                 QQ: 9181729

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有