#vba #text #macros #ms-word
#vba #текст #макросы #ms-word
Вопрос:
Я хочу поменять местами слова в документе Word следующим образом: «Текст elpmaS» становится «Образцом текста».
Я пробовал что-то вроде этого:
For Each word In ActiveDocument.Words
word = StrReverse(word)
Next word
Однако это не работает.
Как я могу это сделать?
Ответ №1:
Когда вы используете цикл for для каждого цикла, вы не можете изменить слово, поэтому используйте цикл for:
Dim i As Integer
For i = 1 To ActiveDocument.Words.Count Step 1
ActiveDocument.Words(i) = StrReverse(ActiveDocument.Words(i)) amp; " "
Next i
Комментарии:
1. Спасибо. Как мне это сделать для выделенного текста?
Ответ №2:
Sub ReverseSelectedWords()
Dim i As Integer
Dim oWords As Words
Dim oWord As Range
Set oWords = Selection.Range.Words
For i = 1 To oWords.Count Step 1
Set oWord = oWords(i)
''Make sure the word range doesn't include a space
Do While oWord.Characters.Last.text = " "
Call oWord.MoveEnd(WdUnits.wdCharacter, -1)
Loop
Debug.Print "'" amp; oWord.text amp; "'"
oWord.text = StrReverse(oWord.text)
Next i
End Sub