Применение стиля к определенным словам
Я использую поиск RegEx, чтобы найти конкретное слово в моем документе MS-Word, и результат поиска сохраняется в переменной. Моя проблема в том, что я хочу применить собственный стиль только для результата поиска
Вход: по всему миру [1,2]. До, во время или после [1,3,4][1,2,4,5] [1,2,6,7,8] [1,2] [1,2]
Я использую следующий код
Sub RegexReplaces()
Set matches = New regExp
Dim Sure As Integer
Dim rng As Range
matches.Pattern = "([\[\(][0-9, -]*[\)\]])"
matches.Global = True
Dim mat As MatchCollection
Set mat = matches.Execute(ActiveDocument.Range)
For Each m In mat
Sure = MsgBox("Are you sure?" + m, vbOKCancel)
If Sure = 1 Then
m.Style = ActiveDocument.Styles("Heading 1") 'this is the error line
Else
MsgBox "not1111"
End If
Next m
End Sub
1 ответ
Решение
For Each m In mat
цикл повторяется по каждому элементу в коллекции матов. М это не диапазон. Вам необходимо установить диапазон, начиная с m.FirstIndex и заканчивая m.FirstIndex + m.Length. Затем вам нужно выбрать диапазон и использовать Selection.Style, чтобы стилизовать диапазон.
Sub RegexReplaces()
Set matches = New regExp
Dim Sure As Integer
Dim rng As Range
matches.Pattern = "([\[\(][0-9, -]*[\)\]])"
matches.Global = True
Dim mat As MatchCollection
Set mat = matches.Execute(ActiveDocument.Range)
For Each m In mat
Sure = MsgBox("Are you sure?" + m, vbOKCancel)
If Sure = 1 Then
Set rng = ActiveDocument.Range(Start:=m.FirstIndex, End:=m.Length + m.FirstIndex)
rng.Select
Selection.Style = ActiveDocument.Styles("Heading 1")
Else
MsgBox "not1111"
End If
Next m
End Sub