ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

word书稿中的千分位问题,请大家帮忙

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-4-16 10:05 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

  书稿中要求采用数字千分位形式,例如数字 123456789.123456789应写作:123 456 789.123 456 789。要求是以小数点为基准,前后分别以三个数字为单位,每三个数字间空半格。年份数字除外,如1947不用千分位。请问word中如何实现?

  我认真地看了一些VBA程序,但是一直没找到一个适合这个标准的程序。比如守柔的一个程序,强制把小数点后的数字保留四位。我不懂VBA程序,这个问题困扰已久,请大家帮个忙!

  拜谢!

TA的精华主题

TA的得分主题

发表于 2008-4-16 16:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-4-18 05:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

记得前阵子写过一下,关键字记不全了,示例中好象有田鼠之类的,一时半会儿没找到。

参考测试:

'* +++++++++++++++++++++++++++++
'* Created By SHOUROU@ExcelHome 2008-4-18 5:49:37
'
仅测试于System: Windows NT Word: 11.0 Language: 2052
'
0397^The Code CopyIn [ThisDocument-ThisDocument]^'
'*
-----------------------------

Sub 设置千分位格式()
    Dim myRange As Range, myValue As Double, myString As String
    Application.ScreenUpdating = False    '
关闭屏幕更新,加快程序运行

    Do    '
进入一个循环
        '
定义myRange为活动文档的主文字部分
        Set myRange = ActiveDocument.Content
        With myRange.Find  '
查找设置
            .ClearFormatting    '
清除格式
            .Text = "[0-9]{4,}[!
]"    '查找四个以上的数字且其后为不为年的内容
            .MatchWildcards = True    '
使用通配符
            If .Execute = False Then Exit Do    '
如果未找到则退出循环
            myValue = Val(myRange.Text)    '
取得数字
            myRange.SetRange myRange.Start, myRange.End - 1    '
重新定义myRange对象
            myRange.Text = VBA.Format$(myValue, "# ##0")     '
写入千分位格式
        End With
    Loop
    Application.ScreenUpdating = True    '
恢复屏幕更新
End Sub
'----------------------


TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-18 09:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

非常感谢jty26和守柔,谢谢您们的帮助。

您们实在太热心了!

我将在实验后再回复您们。

TA的精华主题

TA的得分主题

发表于 2008-8-7 10:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如何更改代码让其只对用户选定文本替换为千分位?

TA的精华主题

TA的得分主题

发表于 2008-8-7 11:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
     '如果没有选定区域,则对全文档进行处理
    If Selection.Type = wdSelectionIP Then
        Set myRange = ActiveDocument.Content '定义myRange为活动文档的主文字部分
    Else
        Set myRange = Selection.Range
    End If

TA的精华主题

TA的得分主题

发表于 2009-4-11 12:32 | 显示全部楼层
原帖由 用头走路 于 2008-4-16 10:05 发表
  书稿中要求采用数字千分位形式,例如数字 123456789.123456789应写作:123 456 789.123 456 789。要求是以小数点为基准,前后分别以三个数字为单位,每三个数字间空半格。年份数字除外,如1947不用千分位。请 ...

请精确的处理请参考《守柔Word数字通》!
欢迎来样测试。该作品可针对所选内容或者全文档。
按默认“,"分隔符生成的千分位格式:
Snap7.jpg
Snap10.jpg
按空格(支持自定义符号)生成千分位格式:
Snap8.jpg
Snap9.jpg


[ 本帖最后由 守柔 于 2009-4-11 12:36 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-4-11 20:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 wangsp 于 2008-8-7 11:10 发表
     '如果没有选定区域,则对全文档进行处理    If Selection.Type = wdSelectionIP Then        Set myRange = ActiveDocument.Content ' ...

学习,谢谢!

TA的精华主题

TA的得分主题

发表于 2009-9-13 09:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-21 10:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 09:58 , Processed in 0.031050 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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