完整代码见:我的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. go语言解析网页利器goquery使用教程(爬虫必备)

    某些时候需要爬取网页中指定信息时,通常需要一些框架解析网页行成dom模型,然后来操作节点来获取相应的信息.在java中很显然就是Jsoup,而在Golang里,应该就是这个goquery了吧. goq ...

  2. 《Python编程从入门到实践》_第三章_列表简介

    什么是列表呢? 官方说明就是由一些列按特点顺序排列的元素组成.其实可以看出很多个字符串的有序组合吧,里面的内容可以随时的删除,增加,修改. 下面这个就是一个列表,python打印列表的时候会将中括号和 ...

  3. indexOf.substr,substring,charAt的区别

    var a = "asdfghjkl" alert(a.substr(1, 3));        //  从下标为1开始,往右数3个长度的数, 显示 sdf; alert(a.s ...

  4. SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器

    Security提供了20多个filter,每个过滤器都提供特定的功能.这些filter在Spring Security filter过滤器链中的缺省顺序由 org.springframework.s ...

  5. Android界面编程--使用活动条(ActionBar)--添加Action View

    ActionBar除了显示Action Item 外,还能显示普通的ui组件 2种方式添加Action View 1.指定ActionView的实现类 2.指定ActionView对应的视图资源 实现 ...

  6. vue分页

    1.依赖文件 <link href="/css/index.css" rel="stylesheet" type="text/css" ...

  7. Sturct类型装箱时会遇到的问题

    Object在拆箱时会在栈空间生成一个临时变量.所以Struct在使用时尽量将内容都声明为readonly为好 [<Struct>] type Point= val mutable X:d ...

  8. 深入理解Javascript之执行上下文(Execution Context)

    在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么,为什么某些函数 ...

  9. IoT Architecture

  10. 三大框架之list

    前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...