Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вопрос 14. Команда Until работает точно так же, как и описанная выше команда While, их принципиальное отличие - в способе проверки условия окончания цикла




Loop

Пример.

Loop

Команда Until работает точно так же, как и описанная выше команда While, их принципиальное отличие - в способе проверки условия окончания цикла. Если цикл While повторяется, пока выполняется условие, то цикл Until перестает работать при первом же выполнении условия.

 

Для таблицы продаж, представленной на рис. 11.13, определить дату продажи товара «мандарин».

 

i = 2: X="мандарин"

Do Until Cells(i, 1) = X

i = i + 1

Cells(1, 10) = Cells(i, 2) ' Запись результата в ячейку J1.

 

В циклах Until счетчики итераций не предусмотрены, создавайте их самостоятельно, если не планируете получить «вечный цикл»!

 

 

Циклы VBA, конструкция For...Next, конструкция For Each...Next, выход из цикла по Exit For, конструкции Do While и Do Until, выход из цикла по Exit Do, конструкция While...Wend

Циклы используются в ситуациях, когда нам нужно выполнить какое-либо действие несколько раз. Первая ситуация — мы знаем, сколько раз нужно выполнить какое-либо действие, в этом случае используется конструкция For…Next:

For iCounter = 1 to 10

MsgBox "Счетчик: " & iCounter

Next

Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step:

For iCounter = 1 to 10 Step 2

MsgBox "Счетчик: " & iCounter

Next

Можно и уменьшать исходное значение счетчика:

For iCounter = 10 to 1 Step -2

MsgBox "Счетчик: " & iCounter

Next

Для безусловного выхода из конструкции For…Next используется команда Exit For.

VStop = InputBox (“Введите значение останова”)

VInput = CInt(VStop)

 

For iCounter = 1 to 10

MsgBox "Счетчик: " & iCounter

If iCounter =VInput Then Exit For

Next

 

Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементам коллекции или массива — перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т.п. Для того, чтобы пройти циклом по всем элементам коллекции, используется команда For Each … Next:

 

For Each oWbk in Workbooks

 

MsgBox oWbk.Name

 

Next

 

При использовании этого приема можно очень просто найти и получить ссылку на нужный нам объект:

 

For Each oWbk in Workbooks

 

If oWbk.Name = "Сводка.xls" Then

 

Set oMyWorkBook = oWbk

Exit For

End If

Next

В этом случае мы проходим циклом по всем элементам коллекции Workbooks (то есть открытым рабочим книгам в Excel), для каждой книги проверяем ее имя, и если мы нашли книгу с именем Сводка.xls, то мы получаем на нее ссылку и выходим из цикла. Коллекция рабочих книг — это специальная коллекция, которая умеет производить поиск в себе по имени элементов, поэтому в принципе можно было обойтись такой строкой:

Set oMyWorkBook = Workbooks("Сводка.xls")

Но для многих других коллекций без конструкции For Each не обойтись.

Еще одна ситуация — когда мы не знаем точно, сколько раз должна быть выполнена та или другая команда — это зависит от какого-либо условия. Используются конструкции Do While…Loop и Do Until…Loop.

 

Конструкция Do While означает: выполнять какое-либо действие до тех пор, пока условие истинно:

 

Do While MyVar < 10

MyVar = MyVar + 1

MsgBox “ MyVar = “ & MyVar

Loop

 

Внимание! Если вы случайно запустили в своей программе бесконечный цикл, нажмите на клавиши <Ctrl>+<Break>. Откроется окно, аналогичное представленному на рис. 3.1, в котором вы сможете продолжить выполнение, завершить его или открыть ваш код в отладчике.

 

Второй вариант — Do Until. Все выглядит точно так же, за одним исключением: цикл будет выполняться до тех пор, пока условие ложно.

 

Do Until MyVar >= 10

 

MyVar = MyVar + 1

 

MsgBox “ MyVar = “ & MyVar

 

Loop

 

Можно переписать цикл так, чтобы условие проверялось после завершения цикла:

 

Do

 

MyVar = MyVar + 1

 

WScript.Echo “MyVar = “ & MyVar

 

Loop While MyVar < 10

 

В этом случае цикл будет выполнен по крайней мере один раз.

Немедленный выход из цикла можно произвести по команде Exit Do.

В VBA имеется также конструкция While … Wend. Это — еще один вариант цикла, который оставлен для обратной совместимости с первыми версиями Visual Basic. Функциональные возможности — те же, что и у конструкции Do…While:

 

While My Var < 10

 

MyVar = MyVar + 1

 

WScript.Echo “MyVar = “ & MyVar

 

Wend




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 357; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.