Поменять выделенные слова в одной строке местами - VBA
Формулировка задачи:
в word нужно поменять местами слова!
пример:
есть строка: яблоко-1 + тыква2 + м-малина + вишня*
нужно чтоб получилось следующее:
вишня* + м-малина + тыква2 + яблоко-1
есть код но он делает просто слова : яблоко + тыква + вишня > вишня + тыква + яблоко
Листинг программы
- Sub popa()
- w = Selection.Words.Count
- Selection.InsertAfter vbCrLf
- For i = w To 1 Step -1
- Selection.InsertAfter Selection.Words(i)
- 'добавим пробел, если его нет в конце слова
- If Right(ActiveDocument.Words(i), 1) <> " " Then Selection.InsertAfter " "
- Next i
- End Sub
Решение задачи: «Поменять выделенные слова в одной строке местами»
textual
Листинг программы
- Sub Chexarda_Lite()
- 'переставляет слова (разделённые пробелами) в обратном порядке - в выделенном тексте одного абзаца'
- Dim bytWcount As Byte, bytWnumber As Byte
- With Selection
- If Right(.Text, 1) = Chr(11) Or Right(.Text, 1) = Chr(13) Then .MoveLeft Extend:=wdExtend
- End With
- If Len(Selection) < 2 Then Exit Sub
- Selection = StrReverse(Selection) 'сначала переворачиваем выделенный текст
- bytWcount = Selection.Range.ComputeStatistics(wdStatisticWords)
- Do
- With Selection.Find
- .Text = "[! ^0011^0013]{1;}" 'слово (из одной буквы и длиннее)
- .Wrap = wdFindStop
- .MatchWildcards = True 'подстановочные знаки - это флажок в окне по Ctrl-h (в Word)
- .Execute 'выполнили поиск (и выделение) очередного слова
- bytWnumber = bytWnumber + 1 'сосчитали слово
- End With
- Selection = StrReverse(Selection) 'найденное слово переворачиваем снова!
- Loop Until bytWnumber = bytWcount 'ВЫХОД из цикла - когда поиск нашёл последнее слово
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д