Как мне зациклить существующий макрос?

#vba #ms-word #repeat

#vba #ms-word #повторить

Вопрос:

У меня есть таблица в MS Word, состоящая из 2 столбцов по 1000 строк. Я создал макрос, чтобы,

  1. добавляет новую строку ниже текущей,
  2. объединяет две ячейки в новой строке,
  3. вырезает и вставляет текст из вышеуказанной ячейки в новую строку,
  4. перемещает изображение на один столбец и
  5. добавляет текст в ячейку. Как только он завершит эту строку событий, курсор будет в положении, чтобы сделать все это снова.

Нет условий, которые могут испортить его при запуске (например, пустые ячейки и т. Д.), Мне не нужен код для поиска конкретных вещей, мне просто нужно, чтобы он повторялся.

Что мне нужно добавить к этому существующему коду, чтобы это повторялось до конца документа (в частности, 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 цикл или.