ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 有没有哪个宏可以实现WORD选定的文字段落m3、m2集体上标?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-21 15:50 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
因为本人行业报告里要用到大量的m^3(立方米)和m^2(平方米),报告常常要摘抄别的报告某些章节。现在我都是摘好一段,就一个个的改m3、m2上标,还有一种方法就是先不处理,等报告都编写好了之后再用替换来上标。这两种方法第一个费时、费工,后面那个方法会对报告排版有影响。
请问哪位大侠有宏可以处理这个上标问题,最好是针对我选定的段落来上标。

TA的精华主题

TA的得分主题

发表于 2014-11-21 16:16 | 显示全部楼层
直接替换即可

TA的精华主题

TA的得分主题

发表于 2014-11-21 16:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-21 16:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我现在就是直接替换,因为常年要写报告,我是希望有个宏可以直接实现m3、m2集体上标

TA的精华主题

TA的得分主题

发表于 2014-11-21 19:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-22 00:07 | 显示全部楼层
谢谢wudixin96的操作过程,我自己录制了一个平方米、立方米上标的宏

Sub m2及m3上标()
'
' 平方米、立方米上标 宏
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.Font
        .Superscript = True
        .Subscript = False
    End With
    With Selection.Find
        .Text = "^#"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

TA的精华主题

TA的得分主题

发表于 2014-11-22 09:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-22 16:57 来自手机 | 显示全部楼层
我上传的那个宏有问题,它会把字母m后所有的2、3都上标,比如下面这句话:“200m2的都要20块”,用这个宏会把那20块的2给上标了。哪位可以帮助优化一下。

TA的精华主题

TA的得分主题

发表于 2014-11-23 00:27 | 显示全部楼层
楼主,由于搞不清你到底是将m2/m3还是m^2/m^3变为上标,所以,我综合考虑了这种情况,由于水平有限,宏代码不够精简、高级,但似乎测试通过,你试试吧(操作前请备份原文件):
  1. Sub 设置上标()
  2. '功能:将 m2/m3 或 m^2/m^3 设置为上标;如果未选定区域则选择全文。
  3.     Dim myRange As Range
  4.     If Selection.Type = wdSelectionIP Then Selection.WholeStory '如果未选则全选
  5.     Set myRange = Selection.Range
  6.     myRange.Find.Execute FindText:="^", ReplaceWith:="", Replace:=wdReplaceAll '删除选定区域^字符(全部替换为无)
  7.     myRange.Select
  8. '
  9. '设置m2为上标
  10.     Do
  11.         Selection.Find.ClearFormatting
  12.         With Selection.Find
  13.             .Text = "m2"
  14.             .Replacement.Text = ""
  15.             .Forward = True
  16.             .Wrap = wdFindStop
  17.             .Format = False
  18.             .MatchCase = False
  19.             .MatchWholeWord = False
  20.             .MatchByte = True
  21.             .MatchWildcards = False
  22.             .MatchSoundsLike = False
  23.             .MatchAllWordForms = False
  24.         End With
  25.         Selection.Find.Execute
  26.         Selection.MoveStart Unit:=wdCharacter, Count:=1
  27.         Selection.Font.Color = wdColorRed '此语句设置上标为红色,也可以不要!
  28.         Selection.Font.Superscript = True
  29.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  30.     Loop Until Selection.Find.Found = False
  31. '
  32. '设置m3为上标(与上段代码相同)
  33.     myRange.Select
  34.     Do
  35.         Selection.Find.ClearFormatting
  36.         With Selection.Find
  37.             .Text = "m3"
  38.             .Replacement.Text = ""
  39.             .Forward = True
  40.             .Wrap = wdFindStop
  41.             .Format = False
  42.             .MatchCase = False
  43.             .MatchWholeWord = False
  44.             .MatchByte = True
  45.             .MatchWildcards = False
  46.             .MatchSoundsLike = False
  47.             .MatchAllWordForms = False
  48.         End With
  49.         Selection.Find.Execute
  50.         Selection.MoveStart Unit:=wdCharacter, Count:=1
  51.         Selection.Font.Color = wdColorRed '此语句设置上标为红色,也可以不要!
  52.         Selection.Font.Superscript = True
  53.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  54.     Loop Until Selection.Find.Found = False
  55. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-23 06:49 | 显示全部楼层
本帖最后由 lhw721 于 2014-11-23 06:58 编辑
413191246se 发表于 2014-11-23 00:27
楼主,由于搞不清你到底是将m2/m3还是m^2/m^3变为上标,所以,我综合考虑了这种情况,由于水平有限,宏代码 ...

413191246se提供的代码可以达到我所说的要求,不过这个代码是针对整个文档来的,我是希望可以针对我选定的段落来集体上标。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 13:34 , Processed in 0.027008 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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