ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1050|回复: 5

WORD用宏修改数字金额为简体大写

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-18 22:58 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位老师:
     用以下方法制作出来的宏模板,小写金额万会显示成繁体萬,如何修改为显示成简体万呢?

宏如下:
Option Explicit
Sub 小写金额变大写()
Dim Numeric As Currency, IntPart As Long, DecimalPart As Byte, MyField As Field, Lable As String
Dim Jiao As Byte, Fen As Byte, Oddment As String, Odd As String, MyChinese As String
Const ZWDX As String = "壹贰叁肆伍陆柒捌玖零" '定义一个中文大写汉字常量
On Error Resume Next '错误忽略
With Selection
Numeric = VBA.Round(VBA.Val(.Text), 2) '四舍五入保留小数点后两位
'判断是否在表格中
If .Information(wdWithInTable) Then _
.MoveRight unit:=wdCell Else .MoveRight unit:=wdCharacter
'对数据进行判断,是否在指定的范围内
If VBA.Abs(Numeric) > 2147483647 Then MsgBox "数值超过范围!", _
vbOKOnly + vbExclamation, "Warning": Exit Sub
IntPart = Int(VBA.Abs(Numeric)) '定义一个正整数
Odd = VBA.IIf(IntPart = 0, "", "元") '定义一个STRING变量
'插入中文大写前的标签
Lable = VBA.IIf(Numeric = VBA.Abs(Numeric), "", "负")
'对小数点后面二位数进行择定
DecimalPart = (VBA.Abs(Numeric) - IntPart) * 100
Select Case DecimalPart
Case Is = 0 '如果是0,即是选定的数据为整数
Oddment = VBA.IIf(Odd = "", "", Odd & "整")
Case Is < 10 '<10,即是零头是分
Oddment = VBA.IIf(Odd <> "", "元零" & VBA.Mid(ZWDX, DecimalPart, 1) & "分", _
VBA.Mid(ZWDX, DecimalPart, 1) & "分")
Case 10, 20, 30, 40, 50, 60, 70, 80, 90 '如果是角整
Oddment = "元" & VBA.Mid(ZWDX, DecimalPart / 10, 1) & "角整"
Case Else '既有角,又有分的情况
Jiao = VBA.Left(CStr(DecimalPart), 1) '取得角面值
Fen = VBA.Right(CStr(DecimalPart), 1) '取得分面值
Oddment = Odd & VBA.Mid(ZWDX, Jiao, 1) & "角" '转换为角的中文大写
Oddment = Oddment & VBA.Mid(ZWDX, Fen, 1) & "分" '转换为分的中文大写
End Select
'指定区域插入中文大写格式的域
Set MyField = .Fields.Add(Range:=.Range, Text:="= " & IntPart & " \*CHINESENUM2")
MyField.Select '选定域(最后是用指定文本覆盖选定区域)
'如果仅有角分情况下,Mychinese为""
MyChinese = VBA.IIf(MyField.Result <> "零", MyField.Result, "")
.Text = Lable & MyChinese & Oddment
End With
End Sub



TA的精华主题

TA的得分主题

发表于 2019-12-19 06:03 来自手机 | 显示全部楼层
CHINESENUM2改为CHINESENUM3

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-19 08:46 | 显示全部楼层
zhanglei1371 发表于 2019-12-19 06:03
CHINESENUM2改为CHINESENUM3

老师您好!
     修改为3后里面所有的都改成简写了呢。。这个是计划用于计划金额大写转换使用的,有没有办法让数字大写,而只是那个           萬                字改为简体的     万   呢?
如:123456.12 大写变为:壹拾贰万叁仟肆佰伍拾陆元壹角贰分                        这样的格式?

TA的精华主题

TA的得分主题

发表于 2019-12-19 10:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,我的《通用模板宏》里面的《人民币中文大写》宏可以满足你的要求。

TA的精华主题

TA的得分主题

发表于 2020-10-15 20:04 | 显示全部楼层
此VBA不能转换大于等于100万的数字,萬字采用笨办法替换,见笑
With Selection.Find
    .ClearFormatting
    .Text = "萬"
    .Replacement.ClearFormatting
    .Replacement.Text = "万"
    .Execute Replace:=wdReplaceAll, Forward:=True, _
        Wrap:=wdFindContinue
End With

TA的精华主题

TA的得分主题

发表于 2020-10-15 20:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
此代码不能转换大于等于100万的数字,萬字采用笨办法解决,在代码最后的End Sub前面加代码With Selection.Find
    .ClearFormatting
    .Text = "萬"
    .Replacement.ClearFormatting
    .Replacement.Text = "万"
    .Execute Replace:=wdReplaceAll, Forward:=True, _
        Wrap:=wdFindContinue
End With

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 05:27 , Processed in 0.026476 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表