【办公-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"> ...
随机推荐
- go语言解析网页利器goquery使用教程(爬虫必备)
某些时候需要爬取网页中指定信息时,通常需要一些框架解析网页行成dom模型,然后来操作节点来获取相应的信息.在java中很显然就是Jsoup,而在Golang里,应该就是这个goquery了吧. goq ...
- 《Python编程从入门到实践》_第三章_列表简介
什么是列表呢? 官方说明就是由一些列按特点顺序排列的元素组成.其实可以看出很多个字符串的有序组合吧,里面的内容可以随时的删除,增加,修改. 下面这个就是一个列表,python打印列表的时候会将中括号和 ...
- indexOf.substr,substring,charAt的区别
var a = "asdfghjkl" alert(a.substr(1, 3)); // 从下标为1开始,往右数3个长度的数, 显示 sdf; alert(a.s ...
- SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器
Security提供了20多个filter,每个过滤器都提供特定的功能.这些filter在Spring Security filter过滤器链中的缺省顺序由 org.springframework.s ...
- Android界面编程--使用活动条(ActionBar)--添加Action View
ActionBar除了显示Action Item 外,还能显示普通的ui组件 2种方式添加Action View 1.指定ActionView的实现类 2.指定ActionView对应的视图资源 实现 ...
- vue分页
1.依赖文件 <link href="/css/index.css" rel="stylesheet" type="text/css" ...
- Sturct类型装箱时会遇到的问题
Object在拆箱时会在栈空间生成一个临时变量.所以Struct在使用时尽量将内容都声明为readonly为好 [<Struct>] type Point= val mutable X:d ...
- 深入理解Javascript之执行上下文(Execution Context)
在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么,为什么某些函数 ...
- IoT Architecture
- 三大框架之list
前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...