`
lilisalo
  • 浏览: 1108246 次
文章分类
社区版块
存档分类
最新评论

VB 金额大小写转换(两种方法)

 
阅读更多
' 本模块生成汉字大写的金额
'
Option Explicit
' 名称: CCh
' 得到一位数字 N1 的汉字大写
' 0 返回 ""
Function CCh(N1) As String
Select Case
N1
Case 0
CCh = "零"
Case 1
CCh = "壹"
Case 2
CCh = "贰"
Case 3
CCh = "叁"
Case 4
CCh = "肆"
Case 5
CCh = "伍"
Case 6
CCh = "陆"
Case 7
CCh = "柒"
Case 8
CCh = "捌"
Case 9
CCh = "玖"
End Select
End Function
'()Function

'名称: ChMoney
' 得到数字 N1 的汉字大写
' 最大为 千万位
' O 返回 ""
Public Function ChMoney(N1) As String
Dim
tMoney As String
Dim
lMoney As String
Dim
tn '小数位置
Dim ST1 As String
Dim
T1 As String
Dim
s1 As String '临时STRING 小数部分
Dim s2 As String '1000 以内
Dim s3 As String '10000



If N1 = 0 Then
ChMoney = " "
Exit Function
End If
If
N1 < 0 Then
ChMoney = "负" + ChMoney(Abs(N1))
Exit Function
End If
tMoney = Trim(Str(N1))
tn = InStr(tMoney,
".") '小数位置
s1 = ""
If tn <> 0 Then
ST1 = Right(tMoney, Len(tMoney) - tn)
If ST1 <> "" Then
T1 = Left(ST1, 1)
ST1 = Right(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s1 = s1 + CCh(Val(T1)) + "角"
End If
If
ST1 <> "" Then
T1 = Left(ST1, 1)
s1 = s1 + CCh(Val(T1)) +
"分"
End If
End If
ST1 = Left(tMoney, tn - 1)
Else
ST1 = tMoney
End If

s2 = ""
If ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
s2 = CCh(Val(T1)) + s2
End If

If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s2 = CCh(Val(T1)) + "拾" + s2
Else
If
Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If

If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s2 = CCh(Val(T1)) + "佰" + s2
Else
If
Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If

If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s2 = CCh(Val(T1)) + "仟" + s2
Else
If
Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If

s3 = ""
If ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
s3 = CCh(Val(T1)) + s3
End If


If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s3 = CCh(Val(T1)) + "拾" + s3
Else
If
Left(s3, 1) <> "零" Then s3 = "零" + s3
End If
End If

If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s3 = CCh(Val(T1)) + "佰" + s3
Else
If
Left(s3, 1) <> "零" Then s3 = "零" + s3
End If
End If

If
ST1 <> "" Then
T1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) -
1)
If T1 <> "0" Then
s3 = CCh(Val(T1)) + "仟" + s3
End If
End If
If
Right(s2, 1) = "零" Then s2 = Left(s2, Len(s2) - 1)

If Len(s3) > 0 Then

If
Right(s3, 1) = "零" Then s3 = Left(s3, Len(s3) - 1)
s3 = s3 &
"万"
End If

ChMoney = IIf(s3 & s2 = "", s1, s3 & s2 & "元整" & s1)
End Function

简单明了型
Function RMBChinese(ByVal Rmb As Double) As String
On Error Resume Next
Dim
Rmbexp As String, Rmbda As String, Expda As String, Lent As Integer, Ntyp As Integer, Icnt As Integer, i As Integer, Trmb As String

Rmb = Format(Rmb, "###0.00")
If Rmb > 999999999999.99 Then
RMBChinese = "需转换的金额整数长度超过了12位!"
Exit Function
End If

Rmbexp = "分角元拾佰仟万拾佰仟亿拾佰仟"
Rmbda = "零壹贰叁肆伍陆柒捌玖"
Ntyp = 0
Trmb = Replace(CStr(Format(Rmb, "0.00")), ".", "")

If Left(Trmb, 1) = "-" Then
Trmb = Mid(Trmb, 2)
Ntyp =
1
End If

Expda = ""
Icnt = Len(Trmb)

For i = 1 To Icnt
Expda = Mid(Rmbda, Val(Mid(Trmb, Icnt - i +
1, 1)) + 1, 1) + IIf(Mid(Rmbexp, i, 1) = "元", Mid(Rmbexp, i, 1) + " ", Mid(Rmbexp, i, 1)) + Expda
Next
RMBChinese = IIf(Ntyp = 1, "负" + Expda, Expda)
End Function

分享到:
评论

相关推荐

    VB编程资源大全(源码 其它1)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB编程资源大全(控件 窗体1)

    (18KB) 39,rulerdemo.ZIP 一个很普通的标尺控件,有水平和垂直两种样式。(11KB) 40,prop20vb6.ZIP 可以实现与VB中属性栏同样的效果,如字体、颜色、浏览等(150KB) 41,ab2eval.EXE 使用 ...

    VB编程资源大全(控件 窗体2)

    (18KB) 39,rulerdemo.ZIP 一个很普通的标尺控件,有水平和垂直两种样式。(11KB) 40,prop20vb6.ZIP 可以实现与VB中属性栏同样的效果,如字体、颜色、浏览等(150KB) 41,ab2eval.EXE 使用 ...

    VB编程资源大全(源码 其它4)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB编程资源大全(控件 其它3)

    DEMO版(269KB) 41,apipro.EXE 提供了35个与Windows API类似的功能,例如获得系统信息注册表操作等,对于VB新手是一个不错的工具,但对于熟悉API操作的老将没有多大实用价值,而且控件尺寸偏大(344KB) 42,...

    VB编程资源大全(控件 其它1)

    DEMO版(269KB) 41,apipro.EXE 提供了35个与Windows API类似的功能,例如获得系统信息注册表操作等,对于VB新手是一个不错的工具,但对于熟悉API操作的老将没有多大实用价值,而且控件尺寸偏大(344KB) 42,...

    VB编程资源大全(源码 多媒体)

    giftobmp.ZIP 将gif文件转换成bmp文件的例子(5KB) 41,playwav.ZIP 两种播放wave文件的方法(2KB) 42,wrox.ZIP 播放wave, midi和avi文件(7KB) 43,syssnd.ZIP 播放系统声音并可改变系统...

    vb Script参考文档

    IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 初始化事件 发生在创建相关类的实例时。 InputBox 函数 在对话框中显示提示,等待用户输入文本...

    VB编程资源大全(源码 其它3)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB编程资源大全(源码 其它2)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB编程资源大全(控件 其它2)

    DEMO版(269KB) 41,apipro.EXE 提供了35个与Windows API类似的功能,例如获得系统信息注册表操作等,对于VB新手是一个不错的工具,但对于熟悉API操作的老将没有多大实用价值,而且控件尺寸偏大(344KB) 42,...

    asp.net知识库

    忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...

    API之网络函数---整理网络函数及功能

    GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 GetFullPathName 获取指定文件的完整路径名 GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 ...

    c#学习笔记.txt

    字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串括在双引号 (") 内, 并且可以包含包括换码序列在内的任何字符用 @ 引起来的字符串以 @ 开头,并用双引号引起来。用 @ 引...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    Visual Basic 2010入门经典.part2.rar

    15.2 识别两种基本的错误 244 15.3 使用Visual Basic的调试工具 246 15.3.1 使用断点 246 15.3.2 使用“即时”窗口 248 15.4 使用Try...Catch...Finally创建结构化错误处理程序 251 15.4.1 处理异常 253 ...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    实际上C#就一般的操作来说,只是区分大小写和多了一个分号这两点与VB.NET不同其他都差不多啊。在ASP里面我们读取数据就直接用RECORDSET,然后在HTML代码里面穿插就可以显示了,但是ASP.NET讲究的是代码分离,如果...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

    net学习笔记及其他代码应用

    6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? ...

    大一大学计算机基础课程知识点.doc

    对存储器的操作分为读操作和写操作两种。 有关储存器的基本术语和概念: 存储器通常分为内存储器〔内存〕和为存储器〔辅存〕,内存储器〔即内存〕用于存放 CPU要处理的数据和指令;外存储器〔即外存〕主要用于长期...

Global site tag (gtag.js) - Google Analytics