Курсив для многих фраз в Word - PullRequest
0 голосов
/ 29 апреля 2018

Я работал над кодом, который находит и заменяет слова, чтобы сделать их курсивом. Однако я не могу понять, как сделать это более эффективным, используя массив. В настоящее время мой код выглядит так: я просто продолжаю копировать и вставлять цикл with:

    Sub ItalicsText()
'
' ItalicsText Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = True
    With Selection.Find
        .Text = "Lord of the Rings"
        .Replacement.Text = "Lord of the Rings"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Selection.EscapeKey
End Sub

Тем не менее, я хотел бы сделать так, чтобы у меня был такой массив:

vFindText = Array("Lord of the Rings", "blah", "blah")

Я хочу сделать это, потому что у меня есть сотни проверяемых фраз, и я хочу, чтобы я быстрее их кодировал.

1 Ответ

0 голосов
/ 29 апреля 2018

Непроверенные:

Sub AllTexts()
    Dim vFindText, v
    vFindText = Array("Lord of the Rings", "blah", "blah")
    For Each v in vFindText 
        ItalicsText v
    Next v
End Sub


Sub ItalicsText(findWhat)

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = True
    With Selection.Find
        .Text = findWhat
        .Replacement.Text = findWhat
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.EscapeKey
End Sub
...