【问题标题】:In VBA Word, how to check if a paragraph contains any bold?在 VBA Word 中,如何检查段落是否包含粗体?
【发布时间】:2017-09-20 15:55:44
【问题描述】:

我一直在自学在工作中使用宏和 VBA。我没有代码意识,所以请耐心等待。

我需要能够找到完全粗体的段落(例如副标题),但我一直在努力找出答案或在网上找到任何帮助。我见过类似的问题,但答案太复杂了,我无法真正知道我在复制什么,尽管我尝试使用看起来相关的部分。

我的最终目标是,在找到一个完全粗体的段落后,删除紧随其后的字符(通常是空行)。

我确实发现了一些东西,表明 0 是常规的,-1 是完全粗体,9999999 是部分粗体,但我无法让类似的东西工作,因为我无法判断哪些代码与我相关。非常感谢任何帮助,谢谢。

【问题讨论】:

  • 向我们展示您的尝试

标签: vba ms-word


【解决方案1】:

在您努力的这个阶段可以提供的帮助不仅仅向您展示如何帮助自己。

你编程的红线应该是在你的文档中找到粗体文本并确定它是否是一个完整的段落。如果是,则删除它后面的空行(然后继续搜索下一个这样的段落?),如果不是,则什么也不做(并继续搜索下一个粗体文本?)。

这个计划的核心是 VBA 的Find 方法。您可以在 MSDN 上查找它和/或您可以在使用宏记录器记录您的击键时手动进行搜索。这两种方式中的任何一种都将非常令人困惑,也许后者比前者更令人困惑,尽管它有望成为您的目标的更短途径。实际上,很大程度上取决于您如何定义目标。如果您想学习 VBA,您遇到的问题将是您可以掌握的挑战。其他人在你之前已经做到了。

【讨论】:

    【解决方案2】:

    我更喜欢您最初考虑的方法。创建一个 Word 文件,并确保有些文本是粗体,有些不是。突出显示一些纯文本,或一些粗体文本,或包含纯文本和粗体的范围,然后运行以下例程。

    Sub WhatTheHeck()
        If Selection.Font.Bold = True Then MsgBox "All is Bold"
        If Selection.Font.Bold = False Then MsgBox "None is Bold"
        If Selection.Font.Bold = wdUndefined Then MsgBox "Some is Bold" 
    End Sub
    

    当您掌握了窍门后,学习(或再次询问)以编程方式选择文本的一些方法(使用 .Select 方法),您就会拥有所需的一切。 (例如,正如其他人所建议的那样,您将能够使用任何复杂的条件执行 .Find,结合 .Select,然后调用 WhatTheHeck()。

    注意:值得一提的是,VBA 中的许多真/假属性可以是真、假或 wdUndefined,也可能是其他值。通常,wdUndefined 表示“真假的组合”。我知道 Selection.Font.Hidden 属性也可以是 wdUndefined,意思是两者的组合。

    【讨论】:

    • 感谢您的回复,对不起,我没有早点回复,我没有收到任何有关答案的通知(我希望我会收到)并且从那以后就没有回到这里。我有搜索“^p”并将其替换为“^p^p”的代码,以在每个段落之间创建一个空格。从您所展示的内容来看,我如何为整个文档中的每个段落运行“If Selection.Font.Bold = True Then...”,以便它为每个段落进行搜索(以及随后的编辑/格式化)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多