【问题标题】:Bolding part of paragraph with vba in ms wordms word中带有vba的段落的粗体部分
【发布时间】:2019-04-16 06:53:10
【问题描述】:

我无法在MS WORD 中将段落的一部分加粗。 我正在逐段构建文档。我只想在其中一个中加粗一个数字。该数字可能在文档中出现多次,但在此特定段落中应仅加粗一次。

例子:

我的第一段。

我的第二段。

我的号码是 123

我使用以下代码访问段落:

Dim paragraphN As Integer
paragraphN = 3
ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Range

我不知道如何仅指定此特定段落的一部分。 我试过了:

ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Range(Start:=14, End:=17).Font.Bold = True

ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Range.Characters(Start:=14, End:=17).Font.Bold = True

ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Characters(Start:=14, End:=17).Range.Font.Bold = True

ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Characters.Range(Start:=14, End:=17).Font.Bold = True

ActiveDocument.Sections(1).Range.Paragraphs(paragraphN).Range(14,17).Font.Bold = True

全部失败。这个问题看起来很简单,但我没有想法......

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    我能够使用稍微不同的方法让它工作:

       ActiveDocument.Range(ActiveDocument.Paragraphs(1).Range.Characters(5).Start, _
       ActiveDocument.Paragraphs(1).Range.Characters(10).End).Font.Bold = True
    

    您可以使用变量调整段落编号和字符编号。

    【讨论】:

    • 所以这意味着 Range 对象会因使用位置而有所不同,我说的对吗?
    【解决方案2】:

    接受的答案对我不起作用,因为我无法在没有错误的情况下执行 Range(x, y)。不过这对我有用...doc.Paragraphs(paragraphIndex).Range.Sentences(1).Font.Bold = True

    【讨论】:

    • 除了对你有用的东西对 OP 不起作用之外,你需要知道 VBA 不知道什么是语法句子。例如,考虑以下情况:Mr.史密斯在约翰博士的杂货店花了 1,234.56 美元购买: 10.25 公斤土豆; 10公斤鳄梨;和15.1公斤格林夫人的Mt. Pleasant澳洲坚果。 对你我来说,这就是一句话;对于 VBA,它计为 5 个句子。
    • 我带着同样的问题来谷歌搜索并来到这个页面。正如您所指出的,我的回答对某些有相同问题的人没有任何价值。但是接受的答案对我没有价值。 SO 的目标不是帮助有问题的个人,而是帮助以后有同样问题的成千上万的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多