【办公-Word-VB】人民币大写转换-带完整注释
完整代码见:我的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】人民币大写转换-带完整注释的更多相关文章
- FastReport调用Delphi中的人民币大写转换自定义函数
FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...
- python实现人民币大写转换
问题描述: 银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序. 在中文大写方式中,0到10以及100.1000.10000被依次表示为: 零 壹 贰 ...
- java递归算法实现 数字人民币大写转换
最近穷死了 ,没钱吃饭ing 写点钱给自己吧!public class Test{ public static String getChar(long a){ int b = (int)a; Map ...
- mescroll.js简单的上拉加载、下拉刷新插件,带完整注释
声明:本插件模仿自mescroll.js,随手所作,仅以注释提供思路,只实现了部分效果,且没有考虑兼容,有兴趣的朋友随意一看.api大家可参考mescroll.js API汇总一文. demo:点我下 ...
- Java实现人民币大写精讲
想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...
- Java实现人民币大写代码解析
想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- 人民币大写金额转换C#方法
方法的代码如下: /// <summary> /// 人民币大写 /// </summary> /// <param name="input"> ...
随机推荐
- [實現DDD] 第10章 聚合(1)設計原則
聚合只是將一些實體(Entity)與值對象(Value Object)聚集起來的對象樹嗎?? 有些途徑可能使我們設計出不正確的聚合模型, 如:可能為了對象組合上的方便而將聚合設計的很大;也可能設計的聚 ...
- python中时间对象生成及时间格式的转换
1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" 将其转换为时间数组 import time timeArray = time.strpt ...
- this,super,和继承
this是指当前对象的引用,super是指直接父类的引用 比如 我建造一个类 public class Person(){ private String name; private int age; ...
- HAProxy advanced Redis health check---ref
http://blog.exceliance.fr/2014/01/02/haproxy-advanced-redis-health-check/ HAProxy advanced Redis hea ...
- BNU29064——硬币水题II——————【事件概率】
硬币水题II Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name: ...
- [转]NLog学习笔记二:深入学习
本文转自:http://www.cnblogs.com/CCHUncle/p/5207735.html 配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. ...
- UML建模—EA创建Use Case(用例图)
用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. 1.新建用例图 2.用例图工具: 3.一个简单用例: 用例图所包含的元素如下: 1. Act ...
- tornado基本使用【服务】
1.安装 2.请求处理程序和请求参数 1.安装 pip install tornado 2.请求处理程序和请求参数 Tornado 的 Web 程序会将 URL 或者 URL 范式映射到 tornad ...
- lua_nginx_module用例
content_by_lua server { listen ; server_name lua.luckybing.top; location / { default_type 'text/plai ...
- 2017年9月22日 关于JS数组
JS数组 JS数组的定义方法 var arr = []; var arr = new Array() JS数组属性 长度 arr.length 遍历数组 索引值:从0开始数 第一种方法 for(var ...