ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

全选修改字体字事情,如何避开表格就不作处理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-4-27 15:44 | 显示全部楼层
本帖最后由 413191246se 于 2016-4-27 15:47 编辑

楼主,你的要求可以办到,只修改表格外文字,不动表格,方法就是,判断每一个段落如果不在表格内,则排版,否则不予处理。下面是判断光标是否在表格内的代码:(配合循环遍历段落法可以处理文档)
Sub try()
    If Selection.Information(wdWithInTable) = True Then
        MsgBox "光标在表格内!"
    Else
        MsgBox "光标在表格外!"
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-28 21:50 | 显示全部楼层
413191246se 发表于 2016-4-27 15:44
楼主,你的要求可以办到,只修改表格外文字,不动表格,方法就是,判断每一个段落如果不在表格内,则排版, ...

我在光标在表格外加了
Selection.Font.Name = "黑体"
Selection.Font.Size = 15
全选后运行,意在修改表格外的内容,但却全部改为黑体15磅了。
请问怎么改。

TA的精华主题

TA的得分主题

发表于 2016-4-29 09:25 | 显示全部楼层
楼主,使用《循环遍历段落法》即可,再判断该段落是否在表格外处理之:
  1. Sub test()
  2. '仅修改表格外文字
  3.     Dim i As Paragraph
  4.     For Each i In ActiveDocument.Paragraphs
  5.         If Len(i.Range) = 1 Then i.Range.Delete
  6.         If i.Range.Information(wdWithInTable) = False Then
  7.             With i.Range.Font
  8.                 .Name = "黑体"
  9.                 .Name = "Times New Roman"
  10.                 .Size = 22
  11.                 .Bold = True
  12.                 .Color = wdColorRed
  13.             End With
  14.         End If
  15.     Next
  16. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-29 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2016-4-29 09:25
楼主,使用《循环遍历段落法》即可,再判断该段落是否在表格外处理之:

感谢413191246se ,这正是我需要的!

另外,请帮我再看看另外一个问题
http://club.excelhome.net/thread-1273181-1-1.html

TA的精华主题

TA的得分主题

发表于 2020-7-27 09:31 | 显示全部楼层
413191246se 发表于 2016-4-29 09:25
楼主,使用《循环遍历段落法》即可,再判断该段落是否在表格外处理之:

413191246se 老师好!
你这个代码可否在原有的基础上修改一下,让空段的格式不变(即:原空段落符的字号大小不变),或把空段落符的字号设置为想要的大小,如:五号。
谢谢!

TA的精华主题

TA的得分主题

发表于 2020-7-27 13:07 | 显示全部楼层
* 我现在不敢给 相见 写代码了,你懂的!呵呵!下面的代码并非最佳处理代码,因为处理字表混合文档,最快的还是以表格为界,分区域处理(Range),这样才快!现在的是每段都要选定,效率低下,但能完成 相见 所要求目的:
  1. Sub test_修改表格外文字_空段不变()

  2.     Dim t As Table, i As Paragraph

  3.     With ActiveDocument
  4.         '真假回车符/手动换行符=>段落标记
  5.         .Content.Find.Execute "[^13^11]", , , 1, , , , , , "^p", 2

  6.         '取消表格文字环绕
  7.         For Each t In .Tables
  8.             With t.Range.Rows
  9.                 .WrapAroundText = False
  10.                 .Alignment = wdAlignRowCenter
  11.             End With
  12.         Next

  13.         '循环遍历所有段落/仅处理表格外文字/空白行不处理(或设置为五号字)
  14.         For Each i In .Paragraphs
  15.             With i.Range
  16.                 '如果在表格外
  17.                 If Not .Information(12) Then
  18.                     '选定
  19.                     .Select
  20.                     '居中/两端对齐=>删除段落首尾空格(半角空格/全角空格/不间断空格/制表符)
  21.                     CommandBars.FindControl(ID:=122).Execute
  22.                     CommandBars.FindControl(ID:=123).Execute

  23.                     '空白段落(字长为1的段落)
  24.                     If Len(.Text) = 1 Then
  25.                         .Font.Size = 10.5 '五号(屏蔽/注释/删除此语句则不处理)
  26.                     Else
  27.                         '字体格式
  28.                         With .Font
  29.                             .Name = "黑体"
  30.                             .Name = "Times New Roman"
  31.                             .Size = 22
  32.                             .Bold = True
  33.                             .Color = wdColorRed '红色
  34.                         End With
  35.                     End If
  36.                 End If
  37.             End With
  38.         Next
  39.     End With

  40.     Selection.HomeKey 6 '光标移至文首
  41. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-7-27 18:40 | 显示全部楼层
413191246se 发表于 2020-7-27 13:07
* 我现在不敢给 相见 写代码了,你懂的!呵呵!下面的代码并非最佳处理代码,因为处理字表混合文档,最快的 ...

老师好!
代码运行虽较慢,但能达愿,感谢你的付出!
老师,为啥不想给我写代码了,是我那里让你不高兴了吗?如是,还请你多多见谅!!!

TA的精华主题

TA的得分主题

发表于 2020-7-27 22:04 | 显示全部楼层
选中后,先判断是不是处于表中,如果是,则下一个,如果不是,则处理。

TA的精华主题

TA的得分主题

发表于 2020-7-27 22:34 | 显示全部楼层
相见:因为,写一个,不合你意;写一个,不合你意呀!(开个玩笑,别当真。:)

TA的精华主题

TA的得分主题

发表于 2020-7-28 06:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2020-7-27 22:34
相见:因为,写一个,不合你意;写一个,不合你意呀!(开个玩笑,别当真。:)

老师好!
没有!没有!有时可能是因我对所需的要求,描述得不太清楚戓不太准确,导致你误解了意思所写的代码,不能如愿,仅此而已!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 07:41 , Processed in 0.032570 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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