循环通过样式来更改 NextParagraphStyle 时出现问题 - 运行时错误 91 - Word vba
编辑:Tim Williams 发现了这个问题。我没有将 Set 用于对象变量。
我的宏是:
Sub StyleFollowingBodyText()
' Charles Kenyon 15 December 2024
' Set the following style for most QuickStyle paragraph styles to be Body Text
Dim StyleCount As Long
Dim thisStyle As Style
Dim iCount As Long
'
With ActiveDocument
Let StyleCount = .Styles.Count
For iCount = 1 To StyleCount
Let thisStyle = .Styles(iCount)
If thisStyle.QuickStyle = True Then
If thisStyle.Type = wdStyleTypeParagraph Or wdStyleTypeLinked Then
If thisStyle.NameLocal <> "Normal" Then
thisStyle.NextParagraphStyle = "Body Text"
End If
End If
End If
Next iCount
End With
End Sub
运行它时出现以下错误消息:
此错误消息似乎有点“包罗万象”,并没有多大帮助。正如 Tim Williams 指出的那样,问题不在于对对象变量使用 Set 命令。
它正在 停止Let thisStyle = .Styles(iCount)
。
宏的目的是将大部分段落 QuickStyles 更改为具有以下样式的正文样式。我试图更改 50 多个 [快速] 样式集,因为我不想让我的大部分文档使用普通样式。
例如:
我尝试丢弃问题陈述并且不为样式分配变量,但这样做却有效。
我只是使用.Styles(iCount)而不是变量StyleCount。
Tim Williams 对我的问题的评论非常准确,解释了我为什么会收到错误。我使用“Let”而不是“Set”作为对象变量。
我还发现了 Jay Freedman 编写的以下宏,用于处理 Normal 模板的样式。
我可能会采用这种结构,但我认为它也可以帮助其他人。他使用的是 For...Each 结构,而不是计数。