Function Money(Number As Currency)Dim i, j, k, m, leng As Integer '计数器Dim Zero As Integer '连续零标识Dim Tnumber As String '储存数字字符串,计算数组长度Dim Num() As String '定义数组Dim Num1(3) As String '存储万元以下数字Dim Num2(1) As String '储存拆分后的数字Dim Cha(8), Cha1(9), Cha2(4) As String '储存转化后的汉字Dim Zcha As String '连接后的字符串Dim Flag, Flag1 As Boolean '正负标志Flag = TrueFlag1 = FalseZero = 0'如果大于一亿,则不处理If (Number > 99999999) Or (Number < ‐99999999) ThenMsgBox ("Sorry,数据超过一亿,暂不处理。")MsgBox ("顺便问一下,你真有那么多钱吗?")Money = "Sorry!"ElseIf (Number = 0) ThenMoney = "零元整"Else'*****将负数数字转化正数并更改标识*****If (Number < 0) ThenNumber = Number * ( ‐1)Flag = FalseEnd If'*****小数点后超过两位,则截断*****If (((Number ‐ Int(Number)) * 100 ‐ Int((Number ‐ Int(Number)) * 100))
> 0) ThenTnumber = CStr(Int(Number * 100) / 100)ElseTnumber = CStr(Number)End If'*****处理四舍五入*****If (((Number ‐ Int(Number)) * 100 ‐ Int((Number ‐ Int(Number)) * 100))
>= 0.5) ThenTnumber = CStr((CCur(Tnumber)) + 0.01)End IfNumber = CCur(Tnumber)'*****重新分配数组空间*****ReDim Num(Len(Tnumber) ‐ 1) As String'*****将字符串分开存储至数组中*****For i = 0 To Len(Tnumber) ‐ 1Num(i) = Mid(Tnumber, i + 1, 1)Next i'*****定义所需字符*****Dim M1, M2M1 = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")M2 = Array("", "拾", "佰", "仟", "万", "亿")'*****处理小于一元金额*****'*****小数点后一位,则*****If ((Number ‐ Int(Number) > 0) And ((Number * 100 ‐ Int(Number) * 100)
Mod 10) = 0) Theni = i ‐ 1Num2(0) = Num(i)Num(i) = ""i = i ‐ 1Num(i) = ""i = i ‐ 1Cha2(0) = M1(CByte(Num2(0)))Cha2(1) = "角"Cha2(2) = "整"Else'*****小数点后两位则*****If ((Number ‐ Int(Number) > 0)) Theni = i ‐ 1Num2(1) = Num(i)Num2(0) = Num(i ‐ 1)Num(i) = ""i = i ‐ 1Num(i) = ""i = i ‐ 1Num(i) = ""i = i ‐ 1Cha2(0) = M1(CByte(Num2(0)))Cha2(1) = "角"Cha2(2) = M1(CByte(Num2(1)))Cha2(3) = "分"End IfEnd If'*****分解大于一万的整数部分*****If (Int(Number) > 9999) ThenIf (Cha2(0) <> "") Theni = i + 1End IfFor j = 3 To 0 Step ‐1Num1(j) = Num(i ‐ 1)Num(i ‐ 1) = ""i = i ‐ 1Next jElseIf (Cha2(0) <> "") Theni = i + 1End IfFor j = 0 To i ‐ 1Num1(j) = Num(j)Num(j) = ""Next jEnd If'*****转换万元以上数字*****If (Num(0) <> "") Thenleng = ij = 0For k = 0 To leng ‐ 1If (Num(k) = "0") ThenZero = Zero + 1For m = 1 To 5If (Cha(j ‐ 1) = M2(m)) ThenFlag1 = TrueEnd IfNext mIf ((Zero = 1) And (Flag1 = False)) ThenCha(j) = M1(CByte(Num(k)))End IfIf (Zero = 1) Thenj = j + 1End IfElseIf (Num(k) <> "") ThenIf (Zero > 0) ThenCha(j ‐ 1) = "零"End If
Cha(j) = M1(CByte(Num(k)))End Ifj = j + 1End IfIf (Num(k) = "0") Theni = i ‐ 1ElseCha(j) = M2(i ‐ 1)j = j + 1i = i ‐ 1Zero = 0End IfNext kCha(j ‐ 1) = "万"Zero = 0End If'*****转换万元以下数字*****If (Num1(0) <> "") Thenj = 0Flag1 = Falseleng = 3While (Num1(leng) = "")leng = leng ‐ 1Wendi = leng + 1For k = 0 To lengIf (Num1(k) <> "") ThenIf (Num1(k) = "0") ThenZero = Zero + 1For m = 1 To 5If (j <> 0) ThenIf (Cha1(j ‐ 1) = M2(m)) ThenFlag1 = TrueEnd IfEnd IfNext mIf ((Zero = 1) And (Flag1 = False)) ThenCha1(j) = M1(CByte(Num1(k)))End IfIf (Zero = 1) Thenj = j + 1End IfElseIf (Num1(k) <> "") ThenIf (Zero > 0) ThenCha1(j ‐ 1) = "零"End If
Cha1(j) = M1(CByte(Num1(k)))End Ifj = j + 1End IfIf (Num1(k) = "0") Theni = i ‐ 1ElseCha1(j) = M2(i ‐ 1)j = j + 1i = i ‐ 1Zero = 0End IfEnd IfNext kCha1(j ‐ 1) = "元"If (Cha2(0) = "") ThenCha1(j) = "整"End IfEnd If'*****连接字符串*****j = 0While (Cha(j) <> "")Zcha = Zcha & Cha(j)j = j + 1Wendj = 0While (Cha1(j) <> "")Zcha = Zcha & Cha1(j)j = j + 1Wendj = 0While (Cha2(j) <> "")Zcha = Zcha & Cha2(j)j = j + 1Wend'*****最终显示*****If (Flag) ThenMoney = ZchaElseMoney = "负" & ZchaEnd IfEnd IfEnd If
End Function

VBA将金额数字转成中文大写相关推荐

  1. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  2. 将数字转换成中文大写的算法

    //名称:ConvertSignCap   //参数:number   //返回:CapNumber   //描述:将传入的单个数字转换成中文大写形式   //创建人:刘权 2004-11-16    ...

  3. 货币数字转换成中文大写的函数

    这个函数与以前其他网友提供的结构大不相同, 是一个从高位到低位的算法, 更加符合语言习惯. //---------------------------------------------------- ...

  4. 金额数字转换成中文写法

    import java.math.BigDecimal; /** * <p> * Title: 金额数字转换成中文写法 * </p> * <p> * Descrip ...

  5. js将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五.const toChinesNum = ( ...

  6. JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)

    将输入的一串数字转换成中文大写,最高可写12位(千亿) 例:输入:10000,输出:壹万 输入:10010,输出:壹万零壹拾 源码: function toChineseBig(num) {// 将接 ...

  7. vue将数字转成中文大写,一二三四五

    /*** 将数字转成中文大写* @params num */ export function toChinesNum(num) {let changeNum = ['零', '一', '二', '三' ...

  8. python数字转换成中文大写

    python数字转换成中文大写 代码 #-*- coding:utf-8 -*- count_map = {1:1, 2:10, 3:100, 4:1000, 5:10000} #用来统计传入数值的级 ...

  9. vue 将数字转成中文大写

    toChinesNum .js文件 /*** 将数字转成中文大写* @params num */ export function toChinesNum(num) {let changeNum = [ ...

最新文章

  1. 新款华为手机,免费带回家
  2. Auto-Machine-Learning初探
  3. 传蔚来计划回国内科创板上市,关闭硅谷办公室
  4. html5(mp4)无法播放,HTML5的Video标签有部分MP4无法播放的问题解析(多图)
  5. 用xargs处理带空格文件名
  6. 一文速览!多模态预训练中的 Prompt 范式
  7. WebResponse 跨域访问
  8. Kudu的Using Apache Kudu with Apache Impala(官网推荐的步骤)
  9. 运筹学实验_指派问题
  10. 再添近10个新冠知识图谱,OpenKG发布第二批开放数据集
  11. 计算机中存储单位的换算
  12. 计算机电源风扇安装方法,机箱风扇怎么装 电脑机箱风扇电源线接法
  13. 华为android是什么文件夹,华为手机里的文件夹代表什么?哪些可以清除?看完秒懂!...
  14. [BZOJ3993]-[SDOI2015]星际战争-二分答案+最大流
  15. 熵权法stata程序
  16. css3中自适应边框图片运用
  17. JS接口安全域名:XXX内容与下载文件不符,请检查文件内容或重新上传原始文件
  18. c语言求100以内偶数和while,c语言 求1到100以内的偶数之和
  19. qt开发linux界面软件,利用Qt Designer开发Qt界面
  20. Python | datetime与time模块

热门文章

  1. navigationview菜单项点击之后跳转_饿了么、美团外卖等小程序APPID和跳转PATH获取...
  2. Netflix 文化
  3. 提升企业团队凝聚力的四步法
  4. git合并多次提交为一次提交
  5. 4年小Java的心路历程,绝对干货分享
  6. C++ 繁华的曼哈顿
  7. 无盘疑难杂症的处理和网络的设置(转)
  8. Codeforces Round #783 (Div. 2) A-F
  9. linux下学习db2
  10. 老熊一亩三分地里的Oracle工具