Циклы в макросах word

Sub Макрос()

      Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=11, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=6
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=8, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveLeft Unit:=wdCharacter, Count:=69
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Size = 11
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=12
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend

        Do
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=11, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=6
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik2»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = «Antik3»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=8, Extend:=wdExtend
    Selection.Font.Name = «Antik4»
    Selection.MoveLeft Unit:=wdCharacter, Count:=69
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Size = 11
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=12
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend

    Loop Until Selection.Find.Execute = False

          End Sub

[свернуть]

  • Remove From My Forums
  • Question

  • What do I need to put before and after the code of the Macro I’d created, for running the Macro again and again all over the Document?

Answers

    • Marked as answer by

      Monday, December 3, 2012 4:57 AM

  • You don’t need a loop for either of those purposes.

    I didn’t understand you.

    Suppose, for example, I
    want to write ‘OK’ after every three
    words in the document.
    I’m recording a Macro: Ctrl
    +
    > three times and
    writes OK. (Or I write
    OK
    and three times Ctrl +
    >)
    Do I not need to do a loop?

    For that, you don’t need either a macro or a loop. A wildcard Find/Replace will do the job, where:
    Find = (<*>[ .,]{1,}<*>[ .,]{1,}<*>)([ .,]{1,})
    Replace = 1 OK2
    You could record the same as a macro and the resulting macro likewise wouldn’t contain a loop.


    Cheers
    Paul Edstein
    [MS MVP — Word]

    • Marked as answer by
      Quist Zhang
      Monday, December 3, 2012 4:57 AM

Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: сначала выполняется первый оператор в функции, затем второй и т. Д.

Содержание:

  • for цикл
  • Синтаксис
  • Диаграмма потока
  • пример
  • for … loop
  • Синтаксис
  • пример
  • while..wend loop
  • Синтаксис
  • Диаграмма потока
  • пример
  • Цикл do..while
  • Синтаксис
  • Диаграмма потока
  • пример
  • Альтернативный синтаксис
  • пример
  • do..intil loop
  • Синтаксис
  • Диаграмма потока
  • пример
  • Альтернативный синтаксис
  • Диаграмма потока
  • пример
  • Записи управления циклом
  • Контрольное заявление и описание
  • Выход для оператора
  • Синтаксис
  • Диаграмма потока
  • пример
  • Exit Do
  • Синтаксис
  • пример

Языки программирования предоставляют различные структуры управления, которые обеспечивают более сложные пути выполнения.

Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз. Ниже приведен общий вид оператора цикла в VBA.

VBA предоставляет следующие типы циклов для обработки требований циклирования. Нажмите следующие ссылки, чтобы проверить их детали.

Цикл for — это структура управления повторением, которая позволяет разработчику эффективно писать цикл, который необходимо выполнить определенное количество раз.

Синтаксис

Ниже приведен синтаксис цикла for в VBA.

For counter = start To end [Step stepcount]
   [statement 1]
   [statement 2]
   ....
   [statement n]
   [Exit For]
   [statement 11]
   [statement 22]
   ....
   [statement n]
Next

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

Ниже приведен поток управления в режиме Loop —

  • Первый шаг выполняется. Этот шаг позволяет инициализировать любые переменные управления контурами и увеличивать переменную счетчика шагов.
  • Во-вторых, условие оценивается. Если это правда, выполняется тело цикла. Если оно ложно, тело цикла не выполняется, и поток управления переходит к следующему оператору сразу после цикла For.
  • После выполнения цикла цикла For поток управления переходит к следующему оператору. Этот оператор позволяет вам обновлять любые переменные управления циклом. Он обновляется на основе значения счетчика шагов.
  • Условие теперь оценивается снова. Если это правда, цикл выполняется, и процесс повторяется (тело цикла, затем увеличивают шаг, а затем снова условие). После того, как условие становится ложным, цикл For заканчивается.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim a As Integer
   a = 10
   
   For i = 0 To a Step 2
      MsgBox "The value is i is : " & i
   Next
End Sub

Когда приведенный выше код компилируется и выполняется, он производит следующий результат.

The value is i is : 0
The value is i is : 2
The value is i is : 4
The value is i is : 6
The value is i is : 8
The value is i is : 10

Выполняет последовательность операторов несколько раз и сокращает код, управляющий переменной цикла.

for … loop

Для каждого цикла используется для выполнения оператора или группы операторов для каждого элемента в массиве или коллекции.

Для каждого цикла аналогичен For Loop; однако цикл выполняется для каждого элемента в массиве или группе. Следовательно, счетчик шагов не будет существовать в этом типе цикла. Он в основном используется с массивами или используется в контексте объектов файловой системы, чтобы работать рекурсивно.

Синтаксис

Ниже приведен синтаксис цикла For Each в VBA.

For Each element In Group
   [statement 1]
   [statement 2]
   ....
   [statement n]
   [Exit For]
   [statement 11]
   [statement 22]
Next

пример

Private Sub Constant_demo_Click()  
   'fruits is an array
   fruits = Array("apple", "orange", "cherries")
   Dim fruitnames As Variant
 
   'iterating using For each loop.
   For Each Item In fruits
      fruitnames = fruitnames & Item & Chr(10)
   Next
   
   MsgBox fruitnames
End Sub

Когда вышеуказанный код выполняется, он печатает все имена фруктов с одним элементом в каждой строке.

apple
orange
cherries

Это выполняется, если в группе есть хотя бы один элемент и повторяется для каждого элемента в группе.

while..wend loop

В цикле While While … Wend , если условие равно True, все операторы выполняются до тех пор, пока не встретится ключевое слово Wend.

Если условие ложно, цикл завершается, и элемент управления переходит к следующему оператору после ключевого слова Wend .

Синтаксис

Ниже приведен синтаксис цикла While..Wend в VBA.

While condition(s)
   [statements 1]
   [statements 2]
   ...
   [statements n]
Wend

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

Private Sub Constant_demo_Click()
   Dim Counter :  Counter = 10   
   
   While Counter < 15     ' Test value of Counter.
      Counter = Counter + 1   ' Increment Counter.
      msgbox "The Current Value of the Counter is : " & Counter
   Wend   ' While loop exits if Counter Value becomes 15.
End Sub

Когда вышеуказанный код выполняется, он выводит следующее в поле сообщения.

The Current Value of the Counter is : 11
The Current Value of the Counter is : 12
The Current Value of the Counter is : 13
The Current Value of the Counter is : 14
The Current Value of the Counter is : 15

Это проверяет условие перед выполнением тела цикла.

Цикл do..while

Do … while цикл используется, когда мы хотим повторить набор операторов, пока условие истинно. Условие может быть проверено в начале цикла или в конце цикла.

Синтаксис

Ниже приведен синтаксис цикла Do … While в VBA.

Do While condition
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop           

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется цикл Do … while для проверки состояния в начале цикла. Операторы внутри цикла выполняются, только если условие становится True.

Private Sub Constant_demo_Click()
   Do While i < 5
      i = i + 1
      msgbox "The value of i is : " & i
   Loop
End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 1
The value of i is : 2
The value of i is : 3
The value of i is : 4
The value of i is : 5

Альтернативный синтаксис

Существует также альтернативный синтаксис для Do … while loop, который проверяет состояние в конце цикла. Основное различие между этими двумя синтаксисами объясняется в следующем примере.

Do 
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop While condition

пример

В следующем примере используется цикл Do … while для проверки состояния в конце цикла. Заявления внутри цикла выполняются хотя бы один раз, даже если условие False.

Private Sub Constant_demo_Click() 
   i = 10
   Do
      i = i + 1
      MsgBox "The value of i is : " & i
   Loop While i < 3 'Condition is false.Hence loop is executed once.
End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11

Операторы do..While будут выполняться до тех пор, пока условие равно True. (Т. Е.) Петля должна повторяться до тех пор, пока условие не будет False.

do..intil loop

Do … intil цикл не будет использован, когда мы хотим повторить набор операторов, пока условие ложно. Условие может быть проверено в начале цикла или в конце цикла.

Синтаксис

Ниже приведен синтаксис цикла Do..Until в VBA.

Do Until condition
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop    

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Do … До цикла, чтобы проверить условие в начале цикла. Операторы внутри цикла выполняются только в том случае, если условие ложно. Он выходит из цикла, когда условие становится истинным.

Private Sub Constant_demo_Click() 
   i = 10
   Do Until i>15  'Condition is False.Hence loop will be executed
      i = i + 1
      msgbox ("The value of i is : " & i)
   Loop 
End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11
The value of i is : 12
The value of i is : 13
The value of i is : 14
The value of i is : 15
The value of i is : 16

Альтернативный синтаксис

Существует также альтернативный синтаксис Do … До цикла, который проверяет условие в конце цикла. Основное различие между этими двумя синтаксисами объясняется следующим примером.

Do 
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop Until condition

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Do … До цикла, чтобы проверить условие в конце цикла. Операторы внутри цикла выполняются хотя бы один раз, даже если условие равно True.

Private Sub Constant_demo_Click()  
   i = 10
   Do 
      i = i + 1
      msgbox "The value of i is : " & i
   Loop Until i more15 'Condition is True.Hence loop is executed once.
End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11

Операторы do..Until будут выполняться до тех пор, пока условие False. (Т. Е.) Петля должна повторяться до тех пор, пока условие не будет истинным.

Записи управления циклом

Операторы управления циклом изменяют исполнение из своей обычной последовательности. Когда выполнение выходит из области действия, все остальные операторы цикла не выполняются.

Контрольное заявление и описание

Выход для оператора

Выход for используется , когда мы хотим , чтобы выйти из For Loop на основе определенных критериев. Когда Exit For выполняется, управление переходит к следующему оператору сразу после цикла For Loop.

Синтаксис

Ниже приведен синтаксис Exit For Statement в VBA.

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Exit For . Если значение счетчика достигает 4, цикл For Loop завершается, и управление переходит к следующему утверждению сразу после цикла For Loop.

Private Sub Constant_demo_Click()
   Dim a As Integer
   a = 10
   
   For i = 0 To a Step 2 'i is the counter variable and it is incremented by 2
      MsgBox ("The value is i is : " & i)
      If i = 4 Then
         i = i * 10 'This is executed only if i=4
         MsgBox ("The value is i is : " & i)
         Exit For 'Exited when i=4
      End If
   Next
End Sub

Когда вышеуказанный код выполняется, он печатает следующий вывод в окне сообщений.

The value is i is : 0
The value is i is : 2
The value is i is : 4
The value is i is : 40

Завершает оператор цикла For и передает выполнение в оператор сразу после цикла

Exit Do

Exit Do Заявление используется , когда мы хотим , чтобы выйти из Do Loops на основе определенных критериев. Он может использоваться как в Do Do … While, так и Do … До циклов.

Когда Exit Do выполняется, управление переходит к следующему оператору сразу после Do Loop.

Синтаксис

Ниже приведен синтаксис выражения Exit Do в VBA.

пример

В следующем примере используется Exit Do . Если значение счетчика достигает 10, выходная линия Do завершается, и управление переходит к следующему оператору сразу после цикла For Loop.

Private Sub Constant_demo_Click()
   i = 0
   Do While i <= 100
      If i > 10 Then
         Exit Do   ' Loop Exits if i>10
      End If
      MsgBox ("The Value of i is : " & i)
      i = i + 2
   Loop
End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The Value of i is : 0
The Value of i is : 2
The Value of i is : 4
The Value of i is : 6
The Value of i is : 8
The Value of i is : 10

Завершает оператор Do While и передает выполнение в оператор сразу после цикла

 С уважением, авторы сайта Компьютерапия

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Окончить цикл макроса

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 14 ]

1 13.07.2016 16:36:17

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Тема: Окончить цикл макроса

Только начал знакомство с макросами. Пользую «Запись», а потом леплю чего-нить. Необходим макрос, который ищет параметры заголовка (в тексте это обычно «1 Заголовок», «2 Заголовок» или «1.1 Заголовок») и применяет к данному абзацу определённый стиль. С циклами я не освоился и мой прокручивает документ Over 1000000+ раз, т.к. условие соблюдается (меняется только стиль, а текст остаётся прежним). Подскажите пож, как его завершить при достижении конца документа?

Вот собсна текст:
Sub УстановитьВсеЗаголовки1Уровня()
‘ Работает до удаления лишних абзацев
    Selection.Find.ClearFormatting
    Do
    With ActiveDocument.Range.Find
        .Text = «^0013[0-9]^0032»
        .Replacement.Text = » «
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=2
    Selection.MoveEndUntil cset:=Chr(13)
    Selection.Style = ActiveDocument.Styles(«Headline1»)
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Loop
End Sub

И ещё такой бонусный вопрос — если макрос применять к документу, который поступает — он работает, но если я удалю лишние абзацы, то перестаёт. Это значит, что при удалении лишних абзацев необходимо указывать перед моим текстом поиска ещё и что-нибудь вроде *(любое число символов)? Или дело в другом?

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

2 Ответ от Alex_Gur 13.07.2016 17:37:49

  • Окончить цикл макроса
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Окончить цикл макроса

Попробуйте так:

Sub Macro1()
    Selection.find.ClearFormatting
    Selection.find.Style = ActiveDocument.Styles("Заголовок 1")
    Selection.find.Replacement.ClearFormatting
    Selection.find.Replacement.Font.Color = wdColorRed
    With Selection.find
        .Text = "(*[0-9A-Za-zА-яЁё])"
        .Replacement.Text = "1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.find.Execute Replace:=wdReplaceAll
End Sub

Макрос меняет цвет заголовков с именем стиля «Заголовок 1» на красный.
Цикл для замены по всему тексту не нужен.
Вместо цикла используется команда «Заменить все»:

Selection.find.Execute Replace:=wdReplaceAll

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

3 Ответ от yshindin 13.07.2016 22:42:30

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Окончить цикл макроса

Fck_This пишет:

Необходим макрос, который ищет параметры заголовка (в тексте это обычно «1 Заголовок», «2 Заголовок» или «1.1 Заголовок») и применяет к данному абзацу определённый стиль.

Видимо, вам следует перебрать все абзацы заголовков в документе. Как правило, такие абзацы имеют ненулевой атрибут OutlineLevel. Напр., можно было бы сделать так:
‘———————————————————————-
Sub ParseOutlineParagraphs()
Dim para as Paragraph
Dim pst As String
Dim ol As Long
For Each para In ActiveDocument.Paragraphs
    pst = para.range.Style.NameLocal
    ol = para.range.ParagraphFormat.OutlineLevel
    If (ol > 0) And (ol < 10) Then
        If ((Ucase$(pst) Like «*ЗАГОЛОВОК*)  Then
            ‘Обработка стиля абзаца
           para.style = «Style1»
        End If
    End If
Next
End Sub
‘———————————————————————-

4 Ответ от yshindin 13.07.2016 22:49:24

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Окончить цикл макроса

Поправка:
‘———————————————————————-
Sub ParseOutlineParagraphs()
Dim para As Paragraph
Dim pst As String
Dim ol As Long
For Each para In ActiveDocument.Paragraphs
    pst = para.Style
    ol = para.Range.ParagraphFormat.OutlineLevel
    If (ol > 0) And (ol < 10) Then
        If (UCase$(pst) Like «*ЗАГОЛОВОК*») Then
            ‘Обработка абзаца
           para.Style = «Style1»
        End If
    End If
Next
End Sub
‘———————————————————————-

5 Ответ от Fck_This 14.07.2016 11:07:21

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

Alex_Gur пишет:

Попробуйте так:

Sub Macro1()
    Selection.find.ClearFormatting
    Selection.find.Style = ActiveDocument.Styles("Заголовок 1")
    Selection.find.Replacement.ClearFormatting
    Selection.find.Replacement.Font.Color = wdColorRed
    With Selection.find
        .Text = "(*[0-9A-Za-zА-яЁё])"
        .Replacement.Text = "1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.find.Execute Replace:=wdReplaceAll
End Sub

Макрос меняет цвет заголовков с именем стиля «Заголовок 1» на красный.
Цикл для замены по всему тексту не нужен.
Вместо цикла используется команда «Заменить все»:

Selection.find.Execute Replace:=wdReplaceAll

Я так понял, что ваш код основывается на поиске абзацев определённого стиля, но дело в том, что стили абзацам не заданы. Здесь вся сложность именно в том, что привязать можно только к тексту.  smile И стиль-то и нужно задать. Макрорекодер обычно использует такую «шляпу», при поиске и замене.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

6 Ответ от Fck_This 14.07.2016 11:23:37

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

yshindin пишет:

Поправка:
‘———————————————————————-
Sub ParseOutlineParagraphs()
Dim para As Paragraph
Dim pst As String
Dim ol As Long
For Each para In ActiveDocument.Paragraphs
    pst = para.Style
    ol = para.Range.ParagraphFormat.OutlineLevel
    If (ol > 0) And (ol < 10) Then
        If (UCase$(pst) Like «*ЗАГОЛОВОК*») Then
            ‘Обработка абзаца
           para.Style = «Style1»
        End If
    End If
Next
End Sub
‘———————————————————————-

Вы явно ближе всего к истине) Но есть поправочка одна — текст заголовка может быть любой: «1 Кастрюля», «1.1 Ручка кастрюли», «1.2 Крышка кастрюли», «2 Лук репчатый».

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

7 Ответ от Fck_This 14.07.2016 11:35:35

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

Заглянул опять по ссылкам Гугла и осознал возможность сработать по маркеру «Библиография» или «Приложение А». Если кто-то надумает чего поумнее — буду весьма признателен (мало ли где-то маркера не окажется).

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

8 Ответ от yshindin 14.07.2016 12:09:45

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Окончить цикл макроса

Вы явно ближе всего к истине) Но есть поправочка одна — текст заголовка может быть любой: «1 Кастрюля», «1.1 Ручка кастрюли», «1.2 Крышка кастрюли», «2 Лук репчатый».

Если вас интересуют заголовки вообще (в моем понимании — это абзацы с ненулевым уровнем OutlineLevel), то уберите строки

If (UCase$(pst) Like «*ЗАГОЛОВОК*») Then
      и
End If

либо замените их на анализ других атрибутов абзаца или стиля.

9 Ответ от yshindin 14.07.2016 12:13:58

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Окончить цикл макроса

Fck_This пишет:

Вы явно ближе всего к истине) Но есть поправочка одна — текст заголовка может быть любой: «1 Кастрюля», «1.1 Ручка кастрюли», «1.2 Крышка кастрюли», «2 Лук репчатый».

Кстати, обратите внимание: в своем VBA-коде я не анализирую текст заголовка (который может быть любым), а анализирую стиль очередного абзаца.

10 Ответ от Fck_This 14.07.2016 14:52:42

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

yshindin пишет:

Fck_This пишет:

Вы явно ближе всего к истине) Но есть поправочка одна — текст заголовка может быть любой: «1 Кастрюля», «1.1 Ручка кастрюли», «1.2 Крышка кастрюли», «2 Лук репчатый».

Кстати, обратите внимание: в своем VBA-коде я не анализирую текст заголовка (который может быть любым), а анализирую стиль очередного абзаца.

На стиле нельзя основываться, т.к. стили не назначены. Документы разные приходят и уровень может быть и нулю равен sad

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

11 Ответ от yshindin 14.07.2016 15:00:09

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171

Re: Окончить цикл макроса

Fck_This пишет:

На стиле нельзя основываться, т.к. стили не назначены. Документы разные приходят и уровень может быть и нулю равен sad

Тогда пожалуйста дайте определение того, что в контексте вашего документа есть заголовок ))

12 Ответ от Fck_This 15.07.2016 13:21:58

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

yshindin пишет:

Fck_This пишет:

На стиле нельзя основываться, т.к. стили не назначены. Документы разные приходят и уровень может быть и нулю равен sad

Тогда пожалуйста дайте определение того, что в контексте вашего документа есть заголовок ))

Параметры текста и оступы могут быть абсолютно любыми, уровня у заголовка может не быть — им зачастую не назначают стиль. в 90% случаев это текст, только контекстуально отличающийся. И тем, что он пронумерован 1; 1.1; 1.1.1; 2; 2.1; 2.2; 3……. Вот такие пироги. smile

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

13 Ответ от yshindin 15.07.2016 20:35:14

  • yshindin
  • генерал-полковник
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 12.05.2012
  • Сообщений: 447
  • Поблагодарили: 171
  • За сообщение: 1

Re: Окончить цикл макроса

Fck_This пишет:

Параметры текста и оступы могут быть абсолютно любыми, уровня у заголовка может не быть — им зачастую не назначают стиль. в 90% случаев это текст, только контекстуально отличающийся. И тем, что он пронумерован 1; 1.1; 1.1.1; 2; 2.1; 2.2; 3……. Вот такие пироги. smile

Для облегчения решения вашей задачи я рекомендовал бы вести в документе нумерацию ваших заголовков таким образом, чтобы строка заголовка сразу была бы видна. Например, вы могли бы использовать поля {LISTNUM} или {SEQ} для ведения нумерации заголовков. Тогда бы при анализе в VBA-коде очередного абзаца можно было бы смотреть: если в данном абзаце есть поле LISTNUM в начале абзаца, то это абзац заголовка. И тогда применять к такому абзацу соответствующую обработку.
Другой подход — анализировать первое слово в абзаце по маске (с помощью оператора Like). Если это номер, отвечающий маске номера заголовка, то значит это абзац заголовка. Однако тут можно легко спутать абзац заголовка с обычным нумерованным абзацем.
В общем, пробуйте, успеха вам. ))

14 Ответ от Fck_This 18.07.2016 14:01:36

  • Окончить цикл макроса
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97

Re: Окончить цикл макроса

yshindin пишет:

Fck_This пишет:

Параметры текста и оступы могут быть абсолютно любыми, уровня у заголовка может не быть — им зачастую не назначают стиль. в 90% случаев это текст, только контекстуально отличающийся. И тем, что он пронумерован 1; 1.1; 1.1.1; 2; 2.1; 2.2; 3……. Вот такие пироги. smile

Для облегчения решения вашей задачи я рекомендовал бы вести в документе нумерацию ваших заголовков таким образом, чтобы строка заголовка сразу была бы видна. Например, вы могли бы использовать поля {LISTNUM} или {SEQ} для ведения нумерации заголовков. Тогда бы при анализе в VBA-коде очередного абзаца можно было бы смотреть: если в данном абзаце есть поле LISTNUM в начале абзаца, то это абзац заголовка. И тогда применять к такому абзацу соответствующую обработку.
Другой подход — анализировать первое слово в абзаце по маске (с помощью оператора Like). Если это номер, отвечающий маске номера заголовка, то значит это абзац заголовка. Однако тут можно легко спутать абзац заголовка с обычным нумерованным абзацем.
В общем, пробуйте, успеха вам. ))

Спасибо большое. Уже сам нашёл такие «штукендры» как поля — так гораздо удобнее smile

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

Сообщений [ 14 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Как проверить имя макроса?
  • Запись макроса макрорекодером
  • Добавление иконок для макроса.
  • Заказ макроса Word
  • Заказ макроса Word
  • Ошибка при запуске макроса
  • Ускорение работы макроса
  • Ищу разработчика Макроса для word

Окончить цикл макроса

Приглашаем на форум сайта Ворд Эксперт всех продвинутых пользователей замечательного редактора текстов Microcoft Word, и тех, кто стремится ими стать. На портале о Microsoft Office Word вы узнаете про: как создать многоуровневые списки о животных.
На форуме вы сможете поделиться своими секретами и узнать наработки других пользователей по оптимизации работы программы, настройкам Ворда, способом быстрого и качественного редактирования, оформления, форматирования и рецензирования текстов в приложении. На портале о Microsoft Office Word вы узнаете про: как сделать привязку названия к таблице.

Основное внимание уделено автоматизации, как типовых, так и очень специфических операций. Возможно, готовое решение вы найдете, даже не задавая вопросов. На портале о Microsoft Office Word вы узнаете про: таблица вылазиет за края в word.
При желании любую проблему и задачу можно обсудить в соответствующем подразделе или заказать ее решение в подфоруме заказов. Наш сайт о Microsoft Office Word даст ответ про: виды многоуровневого списка.

Отвечать в конференциях и заводить новые темы может любой участник, независимо от наличия регистрации на сайте 7я.ру.

Макросы в ворде. Нужен цикличный макрос.

Подскажите — как написать? В Ворде, для форматирования большого куска текста макросом, надо, чтобы внутри большого макроса работали еще пара «поменьше»… то есть сделать цикл. Цикл — от начала до конца файла (EOF). Кто-нибудь знает?

06.12.2005 11:20:41,

15 комментариев

Syntax

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop

Or, you can use this syntax:

Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]

One or more statements that are repeated while, or until, condition is True.


06.12.2005 14:42:47, 43684

СПАСИБО!!! получилось все :))))
08.12.2005 18:24:18, Amencia

пасиб! полезла разбираться ))
06.12.2005 14:51:35, Amencia

grumbler

Вызов функции из основной программы.
Вообще непонятно «форматирование большого куска» — насколько большого и в чем суть форматирования — прописать стили или убить двойные пробелы. :)

06.12.2005 13:57:20, grumbler

Там подборка статей. После форматирования шрифта, размера, убирания двойных пробелов, абзацев и лишних выражений необходимо до конца текста в каждой статье переставить первую строку на абзац ниже (то есть последовательность действий — выделить, вырезать, на абзац вниз, вставить) — от начала до конца файла; затем выделить первую строку каждой статьи (заголовок) bold. Между статьями два абзаца, ориентируюсь на них. На этом все заканчивается :)
Пока получается все это провернуть тремя макросами. Но знаю, что есть циклы. А писать их пока не умею….

06.12.2005 14:02:13, Amencia

grumbler

Думаю, что помочь не смогу, да и нужно оно Вам, если уже тремя макросами все задачи решаются? НО….
Теперь и мне становится интересно — как можно изменить начертание только первой строки абзаца на полужирное? И зачем вырезать/вставлять абзац ниже, а не проще поменять отбивку абзаца сверху?

06.12.2005 14:13:11, grumbler

:((
Я не совсем точно выразилась — полужирным не первую строку абзаца, а первый абзац… Заголовок статьи…)
Вырезать-вставить абзац — потому как в изначальном формате (из источника) абзац «X» стоит в самом начале статьи. По утвержденному формату он должен находиться после заголовка статьи. не перетаскивать же его ручками 100-150 раз :)))
А хочется сделать это все одним макросом, чтобы не ражимать на кнопочки 1+1хN+1хN количество раз, а только 1… )))
Ну и на будущее — чувствую, что потребуются они (циклы) мне еще не раз. Я почитала про цикличные макросы, но, к сожалению, там не было алгоритма действий.
Спасибо!

06.12.2005 14:21:00, Amencia

grumbler

:((((( почитайте про sub function call в хелпах — может разрешит Вашу проблему (вызовы процедур), у меня, правда остается стойкое ощущение именно того, что «цикличность» зациклится если не указывать предел (сколько раз), который в свою очередь зависит от количества статей в подборке и всякий раз неодинаков?
Так что если Вы вставите процедуру цикла (from to) получается, что второе число либо вводится вручную, либо считается другим макросом.
Мне кажется, что либоя недостаточно понимаю исходник, либо Вы не совсем правильно описываете себе алгоритм действий….

06.12.2005 14:36:12, grumbler

ага… попробую почитать… Может, я что-то не совсем верно представляю (как оно должно быть…) Все, с кем я тут у себя советовалась, сами не знают точно, но говорят, что такое есть и оно применимо :)
В принципе, в циклах есть варианты — цикл повторяется определенное количество раз; цикл повторяется до конца файла (end of file — EOF). И еще какой-то, моему пониманию недоступен совершенно…
В крайнем случае можно в самом начале ставить некий символ и потом этот символ принимать как стоп-знак.
Читала тут:
http://www.helloworld.ru/texts/comp/lang/vbasic/menu/vbhelp_051.html#_351
http://www.helloworld.ru/texts/comp/lang/vbasic/menu/vbhelp_051.html#_352

06.12.2005 14:45:37, Amencia

grumbler

Если честно, то я бы все статейки сделал бы ручками — 100 штук — не такое фатальное количество, а если есть возможность впихнуть их в столбцам в эксель (автоматическая разбивка параграфов в разные ячейки происходит при вставке), то задача становится тривиальной.
Если найдете ответ/алгоритм — поделИтесь, а? :)))

06.12.2005 15:16:04, grumbler

Если разберусь в этом деле — обязательно :)))
ммм… по 100 — 500 статей, да каждый день, да ручками… имхо, это просто не стоит моего времени :) Лучше я это время посижу и макрос помучаю — интеллектуально более приятно :)
С экселем — это хорошо :) с вордом-экселем я макросы для себя пишу, если нужен подсчет. Но итог данного задания должен быть в ворде, поэтому надо было б открывать пустой эксель рядом с вордом, и писать макрос с обращением к экселю.
А мне потом еще объяснять людям, как этим макросом пользоваться. Так что тут все должно быть минимизировано по действиям :))

06.12.2005 15:21:29, Amencia

grumbler

Да уж…
Из колхозного творчества
1. Замена символа параграфа на какой-то знак (я делал @@@ в качестве маркера) и создание долбицы (разделитель статей — @@@@@)
2. Экспорт в Access и генерация отчета в текст с перестановкой и форматированием первых двух полей.
Желаю успеха, по-любому….

06.12.2005 16:35:57, grumbler

Сделала!

После основного условия (поск «х») — условие (do while)
и после выполнения необходимых действий — loop.
Он зацикливается и будет повторяться до тех пор, пока не перестанет находить свое условие (у меня это условие, раз найденное, удаляется последующими действиями)))
получилось:
Selection.Find.ClearFormatting
With Selection.Find
……
….
End With
Do While Selection.Find.Execute
Selection.MoveLeft…
…..
…..
…..
Loop
End sub


08.12.2005 18:30:25, Amencia

grumbler

Умничка…
09.12.2005 16:55:45, grumbler

Спасибо! :)
06.12.2005 16:42:26, Amencia

Понравилась статья? Поделить с друзьями:
  • Цикл по строкам в word
  • Циклы в vba excel для ячеек
  • Цикл по колонкам excel
  • Циклы в excel для чайников
  • Цикл по всем записям excel