您好,欢迎访问三七文档
金额大小写转换第一招:釜底抽薪——自动更正法如果需要重复的输入一个大写数字金额,可以采用自动更正的方法。例如要重复输入“肆仟叁佰伍拾元零伍分”,可以先输入“肆仟叁佰伍拾元零伍分”并选中它,然后执行菜单“工具→自动更正选项”打开“自动更正”对话框,在“替换”下的框内输入“4350.05”并单击“添加”按钮确定后退出,以后直接输入“4350.05”后回车即可快速得到“肆仟叁佰伍拾元零伍分”。第二招:一劳永逸——编制自动宏如果有许多小写金额要变成大写的话,用上面的自动更正的方法需要定义很多自动更正项,显然也比较麻烦,其实只需要编辑一个宏就能做到“一劳永逸”了。启动Word后按下Alt+F11组合键,在打开的工程窗口左侧双击“ThisDocument”进入代码编写窗口,在代码编辑窗口中输入如下代码:OptionExplicitSub小写金额变大写()DimNumericAsCurrency,IntPartAsLong,DecimalPartAsByte,MyFieldAsField,LableAsStringDimJiaoAsByte,FenAsByte,OddmentAsString,OddAsString,MyChineseAsStringConstZWDXAsString=壹贰叁肆伍陆柒捌玖零'定义一个中文大写汉字常量OnErrorResumeNext'错误忽略WithSelectionNumeric=VBA.Round(VBA.Val(.Text),2)'四舍五入保留小数点后两位'判断是否在表格中If.Information(wdWithInTable)Then_.MoveRightunit:=wdCellElse.MoveRightunit:=wdCharacter'对数据进行判断,是否在指定的范围内IfVBA.Abs(Numeric)2147483647ThenMsgBox数值超过范围!,_vbOKOnly+vbExclamation,Warning:ExitSubIntPart=Int(VBA.Abs(Numeric))'定义一个正整数Odd=VBA.IIf(IntPart=0,,圆)'定义一个STRING变量'插入中文大写前的标签Lable=VBA.IIf(Numeric=VBA.Abs(Numeric),人民币金额大写:,人民币金额大写:负)'对小数点后面二位数进行择定DecimalPart=(VBA.Abs(Numeric)-IntPart)*100SelectCaseDecimalPartCaseIs=0'如果是0,即是选定的数据为整数Oddment=VBA.IIf(Odd=,,Odd&整)CaseIs10'10,即是零头是分Oddment=VBA.IIf(Odd,圆零&VBA.Mid(ZWDX,DecimalPart,1)&分,_VBA.Mid(ZWDX,DecimalPart,1)&分)Case10,20,30,40,50,60,70,80,90'如果是角整Oddment=圆&VBA.Mid(ZWDX,DecimalPart/10,1)&角整CaseElse'既有角,又有分的情况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)&分'转换为分的中文大写EndSelect'指定区域插入中文大写格式的域SetMyField=.Fields.Add(Range:=.Range,Text:==&IntPart&\*CHINESENUM2)MyField.Select'选定域(最后是用指定文本覆盖选定区域)'如果仅有角分情况下,Mychinese为MyChinese=VBA.IIf(MyField.Result零,MyField.Result,).Text=Lable&MyChinese&OddmentEndWithEndSub输入完毕后按下Alt+Q键返回word中,以后只需要依次选中需要转换的小写金额后,按下Alt+F8打开宏对话框,选择“小写金额变大写”宏,并单击“运行”即可快速地得出大写金额。运行该宏可以在选定的文本数据后面插入此金额大写,如果选定范围在表格中,则在右侧单元格中插入金额大写。
本文标题:金额大小写转换
链接地址:https://www.777doc.com/doc-2105557 .html