#vba #ms-word #repeat
#vba #ms-word #повторить
Вопрос:
У меня есть таблица в MS Word, состоящая из 2 столбцов по 1000 строк. Я создал макрос, чтобы,
- добавляет новую строку ниже текущей,
- объединяет две ячейки в новой строке,
- вырезает и вставляет текст из вышеуказанной ячейки в новую строку,
- перемещает изображение на один столбец и
- добавляет текст в ячейку. Как только он завершит эту строку событий, курсор будет в положении, чтобы сделать все это снова.
Нет условий, которые могут испортить его при запуске (например, пустые ячейки и т. Д.), Мне не нужен код для поиска конкретных вещей, мне просто нужно, чтобы он повторялся.
Что мне нужно добавить к этому существующему коду, чтобы это повторялось до конца документа (в частности, 1000 раз).
Я видел код для Excel, но я не видел кода для просмотра таблицы в Word.
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.InsertRowsBelow 1
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.Cells.Merge
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.Font.Size = 4
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.Font.Size = 3
Selection.TypeText Text:="Unique specimen identifier not a property tag"
Selection.MoveDown Unit:=wdLine, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Все, что я ожидаю, это иметь возможность запускать код один раз и повторять его до тех пор, пока он не попадет в конец документа, и, если возможно, повторить конкретно 1000 раз.
Я надеюсь, что это не слишком «широко», поскольку у меня есть код, и я задаю конкретный вопрос.
Ответ №1:
Вы можете повторить свой набор инструкций, заключив его в For...Next
цикл, который является довольно стандартным для приложений VBA. Этот код создает цикл и переменную ‘index’, а затем сообщает ему пройти через этот индекс ровно 1000 раз.
For index As Integer = 1 To 1000
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.InsertRowsBelow 1
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.Cells.Merge
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.Font.Size = 4
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.Font.Size = 3
Selection.TypeText Text:="Unique specimen identifier not a property tag"
Selection.MoveDown Unit:=wdLine, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Next
Если вам когда-нибудь понадобится выполнить цикл что-то неопределенное количество раз, например, при выполнении определенного критерия, вместо этого вы должны использовать Do...While
Do...Until
цикл или.