完整代码见:我的CSDN博客

--------------------

应公司财务人员的请求,需在Word中做个:输入阿拉伯数字,自动转换成大写,并填充到Word控件中对应的亿、万、千控件格子的功能,特研究VB。

下面是我在网上搜集的将 阿拉伯数字转换为 中文大写的代码,注释为我添加,方便理解,特记录在此。

有机会把带有宏的原Word也发布,供大家参考。

Function mychange(ByVal Myinput)
'MyinputA 去除空白符且变成整数(去掉小数)后的数字串
'MyinputB 翻转后的数字串
'MyinputC 转换为大写的金额
Dim Temp, TempA, MyinputA, MyinputB, MyinputC
Dim Place As String
Dim J As Integer
Place = "分角元拾佰仟万拾佰仟亿拾佰仟万"
shuzi1 = "壹贰叁肆伍陆柒捌玖"
shuzi2 = "整零元零零零万零零零亿零零零万" qianzhui = ""
If Val(Myinput) = Then Myinput =
If Myinput = "" Then Myinput =
If Myinput < Then qianzhui = "负" '将小数转为整数,去掉小数点, 123.45 -> 12345
Myinput = Int(Abs(Myinput) * + 0.5)
If Myinput > # Then
mychange = "输入有误:数字过大"
Exit Function
End If
If Myinput = Then
mychange = "零元零分"
Exit Function
End If MyinputA = Trim(Str(Myinput))
shuzilong = Len(MyinputA) '翻转金额,12345->54321
For J = To shuzilong
MyinputB = Mid(MyinputA, J, ) & MyinputB
Next '1把阿拉伯数字转为大写, 54321, 5->伍
'2将数字和对应位置的单位拼接,伍肆叁贰壹,伍->伍分
'3拼接时翻转回来, 肆角伍分
'注意0:从 shuzi2 得到单位,而不是从 Place
' 12.10->1210->0121-> 整 壹角 贰元 壹拾
' 10.88->1088->8801->捌分 捌角 元 壹拾
' 30800.25->3080025->5200803->..贰角 元 零 捌佰 零 叁万
' ->叁万 零 捌佰 零 元 贰角...
For J = To shuzilong
Temp = Val(Mid(MyinputB, J, ))
If Temp = Then
MyinputC = Mid(shuzi2, J, ) & MyinputC
Else
MyinputC = Mid(shuzi1, Temp, ) & Mid(Place, J, ) & MyinputC
End If
Next '细节:处理零
'10.46 壹拾零元... -> 壹拾元
'10 1234.56 壹拾零万... -> 壹拾万
'10 1234 5678.56壹拾零亿... -> 壹拾亿
'30800.25 上一步得到:叁万 零 捌佰 零 元 贰角伍分
' 注意并不是:叁万 零仟 捌佰 零拾 零元 贰角伍分
'30800.25 叁万零捌佰(零)元.. -> 叁万零捌佰 元..
shuzilong = Len(MyinputC)
For J = To shuzilong -
If Mid(MyinputC, J, ) = "零" Then
Select Case Mid(MyinputC, J + , )
Case "零", "元", "万", "亿", "整":
MyinputC = left(MyinputC, J - ) & Mid(MyinputC, J + , )
J = J -
End Select
End If
Next '贰亿万... -> 贰亿...
shuzilong = Len(MyinputC)
For J = To shuzilong -
If Mid(MyinputC, J, ) = "亿" And Mid(MyinputC, J + , ) = "万" Then
MyinputC = left(MyinputC, J) & Mid(MyinputC, J + , )
Exit For
End If
Next mychange = qianzhui & Trim(MyinputC)
End Function

【办公-Word-VB】人民币大写转换-带完整注释的更多相关文章

  1. FastReport调用Delphi中的人民币大写转换自定义函数

    FastReport调用Delphi中的人民币大写转换自定义函数   FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...

  2. python实现人民币大写转换

    问题描述: 银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序. 在中文大写方式中,0到10以及100.1000.10000被依次表示为: 零 壹 贰 ...

  3. java递归算法实现 数字人民币大写转换

    最近穷死了 ,没钱吃饭ing 写点钱给自己吧!public class Test{ public static String getChar(long a){ int b = (int)a; Map ...

  4. mescroll.js简单的上拉加载、下拉刷新插件,带完整注释

    声明:本插件模仿自mescroll.js,随手所作,仅以注释提供思路,只实现了部分效果,且没有考虑兼容,有兴趣的朋友随意一看.api大家可参考mescroll.js API汇总一文. demo:点我下 ...

  5. Java实现人民币大写精讲

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  6. Java实现人民币大写代码解析

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  7. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  8. js 将数字转换成人民币大写的方法

    //将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...

  9. 人民币大写金额转换C#方法

    方法的代码如下: /// <summary> /// 人民币大写 /// </summary> /// <param name="input"> ...

随机推荐

  1. 在Unity中创建攻击Slot系统

    http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号  ...

  2. Linux的应用层到底层驱动的调用过程

    应用层如何内核.md 1.从应用层打通内核:驱动 首先来说是设备号的引入,我们通过 cat/proc/kallsyms |grep mydevice 可以查看设备号,当然我们也是可以自己创建设备号,这 ...

  3. pat04-树4. Root of AVL Tree (25)

    04-树4. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue An A ...

  4. SQL Server 数据库定时自动备份(转)

    本文转载自:http://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html 作者:清风寻梦 在SQL Server中出于数据安全的考虑 ...

  5. SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理

    SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理... @RequestMapping(value = "/t ...

  6. tp3.2博客详情页面查询上一篇下一篇

  7. Django的MTV模式详解

    参考博客:https://www.cnblogs.com/yuanchenqi/articles/7629939.html 一.MVC模型 Web服务器开发领域里著名的MVC模式. 所谓MVC就是把W ...

  8. jquery hover(overListener, outListener) || bind('mouseover',methodA).bind('mouseout',methodB)

    1.区别: bind方式,进入外部区域和内部区域都会触发相关方法(methodA 或methodB): hover方式,进入内部区域不会再触发相关方法. 2.example: <body> ...

  9. html的标签(1)

    首先补充上一次没有讲到的,html文件后缀名有2种,一种是.htm,一种是.html..html是老的教科书里面的文件后缀名,.html是新的教科书的文件后缀名..htm文件是不完整的支持html5的 ...

  10. 视频监控——从其他浏览器打开低版本IE方案

    1. 方案背景 由于低版本IE浏览器并不支持很多新的页面技术,导致部分页面效果难以实现;另一方面IE浏览器版本与操作系统绑定,难以统一,不同版本IE间的不兼容导致多种兼容性问题,因此本项目暂定采用Ch ...