智思阁

青山留不住,毕竟东流去。清风随飘逝,斯人已憔悴。

« 醉倒北里和尚唤狗[“放下”的故事] »

在WORD中,让数字自动千分位

打开WORD程序,在上方菜单区域中,右键单击,选中Visual Basic。点击“Visual Basic编辑器”图标,打开Visual Basic,在“ThisDocument ”中双击,然后在右边的窗口中复制下方的代码:

1、对所有的数字加千分位,但是不加尾数.00

Sub yycealjj()
Dim myRange
Dim FindChar As String, RepChar As String
On Error Resume Next
Application.ScreenUpdating = False '关闭屏幕更新
FindChar = "([0-9])([0-9]{3}[!0-9])"
RepChar = "\1,\2"
With ActiveDocument.Content.Find '此处针对全文档
.ClearFormatting '清除格式
.MatchWildcards = True
Do While .Execute(findtext:=FindChar) = True '如果发现
.Execute findtext:=FindChar, Wrap:=wdFindContinue, replacewith:=RepChar, Replace:=wdReplaceAll
Loop
If .Execute(findtext:=FindChar) = False Then
Exit Sub
End If
End With
Application.ScreenUpdating = False '开启屏幕更新
End Sub

 

2、对所有的数字加千分位,并且自动加上尾数.00

Sub yycealjj1()
'本代码旨在解决WORD中数据转化为千分位
'数据限定要求:-922,337,203,685,477.5808 到 922,337,203,685,477.5807
'转化结果1000以上数据以千分位计算,小数点右侧保留二位小数;1000以下数据不变
Dim myRange As Range, i As Byte, myValue As Currency
On Error Resume Next
Application.ScreenUpdating = False '关闭屏幕更新
NextFind: Set myRange = ActiveDocument.Content '定义为主文档文字部分
With myRange.Find '查找
.ClearFormatting '清除格式
.Text = "[0-9]{4,15}" '4到15位数据
.MatchWildcards = True '使用通配符
Do While .Execute '每次查找成功
i = 2 '起始值为2
'如果是有小数点
If myRange.Next(wdCharacter, 1) = "." Then
'进行一个未知循环
While myRange.Next(wdCharacter, i) Like "#"
i = i + 1 '只要是[0-9]任意数字则累加
Wend
'重新定义RANGE对象
myRange.SetRange myRange.Start, myRange.End + i - 1
End If
myValue = VBA.Val(myRange) '保险起见转换为数据,也可省略
myRange = VBA.Format(myValue, "Standard") '转为千分位格式
GoTo NextFind '转到指定行
Loop
End With
Application.ScreenUpdating = True '恢复屏幕更新
End Sub

关闭Visual Basic编辑器,回到WORD界面。

输入文章后,点击“运行宏”图标,运行任何一个宏,即可对数字加千分位。

yycealjj为第一个程序,不加尾数的。

yycealjj1为第二个程序,加尾数的。

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206 Code detection by Codefense  theme by BokeZhuti

Copyright xesee.com All Rights Reserved. | 智慧联盟 旗下网站 | |闽ICP备07000592号
本站所有文章除注明外,均为原创。转载请注明出自〖智思阁www.xesee.com〗!