以下是引用杨帆在2008-1-17 18:54:01的发言:应该还使用 .Text = "[0-9]{4,15}" '4到15位数据 但是需要加一个判断是否是整数的语句,如果是则不加分隔符,哪位高手能帮我一下,我学VFP的,不会VBA谢谢 只是根据楼主的要求,修改了一下代码,请测试: '* +++++++++++++++++++++++++++++ '* Created By SHOUROU@ExcelHome 2008-1-18 6:09:30 '仅测试于System: Windows NT Word: 11.0 Language: 2052 '№ 0305^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- '显式变量声明 Option Explicit Sub StandardNumber() '本代码旨在解决WORD中数据转化为千分位 '数据限定要求:-922,337,203,685,477.5808 到 922,337,203,685,477.5807 '转化结果1000以上数据以千分位计算,小数点右侧保留二位小数;1000以下数据不变 '"2008"不被转换,但如"2008."将被转换为"2,008","2008.0"将被转换为"2,008.0" Dim myRange As Range, i As Byte, myValue As Currency, myString As String On Error Resume Next '忽略错误 Application.ScreenUpdating = False '关闭屏幕更新 '定义myRange为主文档文字部分 Set myRange = ActiveDocument.Content NextFind: With myRange.Find '查找 .ClearFormatting '清除格式 .Text = "[0-9.]{4,15}" '4到15位数据 .MatchWildcards = True '使用通配符 If .Execute = True Then '保险起见转换为数据,也可省略 If VBA.IsNumeric(myRange.Text) Then myValue = VBA.Val(myRange.Text) If Len(myRange.Text) <> 4 Then '转为千分位格式 myString = VBA.Format(myValue, "Standard") myRange.Text = Replace(myString, ".00", "") End If End If myRange.SetRange myRange.End, ActiveDocument.Content.End GoTo NextFind '转到指定行 End If End With '恢复屏幕更新 Application.ScreenUpdating = True End Sub '---------------------- |