应用ApplyListTemplate后,Word样式会更改

时间:2011-07-21 08:39:32

标签: vba ms-word word-vba word-style

我有一个包含像这样的编号列表的Word文档

  1. 第1项
  2. 第2项
  3. 第3项
  4. 列表样式是“List Paragraph”。 “List Paragraph”的左缩进是0.5“。如果我们运行以下代码重新应用样式”List Paragraph“,则样式的左缩进现在为0.75”

    Dim t As ListTemplate
    Set t = ActiveDocument.Styles("List Paragraph").ListTemplate
    t.ListLevels(1).ResetOnHigher = True
    Selection.Range.ListFormat.ApplyListTemplate t, False, wdListApplyToWholeList
    

    结果,列表向右移动0.25“。 我想知道为什么方法ApplyListTemplate更改样式“List Paragraph”的左缩进。

    在应用代码之前和之后,样式的描述是

    "Indent:
    Left:  0.5"
    Hanging:  0.25", Numbered + Level: 1 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at:  0.75" + Indent at:  1", Style: Quick Style, Priority: 35
    Based on: Text"
    
    "Indent:
    Left:  0.75"
    Hanging:  0.25", Outline numbered + Level: 1 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at:  0.75" + Indent at:  1", Style: Quick Style, Priority: 35
    Based on: Text"
    

    我在Office 2003和2010中都发现了相同的行为

1 个答案:

答案 0 :(得分:0)

我无法测试您的确切代码,因为我收到运行时错误5941,其中显示“所请求的集合成员不存在。”

话虽这么说,无论如何,Word都会倾向于“修改”列表的缩进,只要对其格式进行更改。可能有一个设置告诉Word停止“修复”列表,但我建议只需在代码末尾添加以下内容:

With Selection.ParagraphFormat
    .LeftIndent = InchesToPoints(0.75)          ' Left indent
    .RightIndent = InchesToPoints(0)            ' Right indent
    .FirstLineIndent = InchesToPoints(-0.25)    ' First line indent
End With

这将给你一个0.5英寸的左缩进和0.25英寸的悬挂缩进(即使数字可能看起来有点奇怪)。您不需要以 .RightIndent = 开头的中间行,但我想我会在您想要更改它的情况下将其包括在内。