Problema ao percorrer os estilos para alterar NextParagraphStyle - Erro de tempo de execução 91 - Word vba
EDIT: Tim Williams percebeu o problema. Eu não estava usando Set para uma variável de objeto.
Minha macro é:
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
e recebo esta mensagem de erro ao executá-lo:
Esta mensagem de erro parece ser um pouco "pega-tudo" e não é muito útil. Conforme apontado por Tim Williams, o problema não é usar o comando Set para uma variável de objeto.
Está parando em Let thisStyle = .Styles(iCount)
.
O propósito da macro é alterar a maioria dos QuickStyles de parágrafo para ter o estilo Body Text como o estilo a seguir. Estou tentando alterar mais de 50 [Quick] Style Sets porque prefiro não ter a maior parte dos meus documentos usando o estilo Normal.
Por exemplo:
Tentei descartar a declaração do problema e não atribuir uma variável ao estilo e funcionou.
Eu simplesmente usei .Styles(iCount) em vez da variável StyleCount.
O comentário de Tim Williams à minha pergunta é certeiro quanto ao motivo pelo qual eu estava recebendo o erro. Eu estava usando "Let" em vez de "Set" para uma variável de objeto.
Também encontrei a seguinte macro de Jay Freedman lidando com os estilos do modelo Normal.
Provavelmente adotarei essa estrutura, mas pensei que poderia ajudar outros aqui também. Ele está usando a estrutura For...Each em vez da count.