Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / while do или repeat until / 5 сообщений из 5, страница 1 из 1
14.03.2006, 11:55:01
    #33598958
Nick-From
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
while do или repeat until
Добрый день!
Можно ли кроме цикла FOR NEXT организовать в макросе Excel какой-нить цикл типа WHILE DO do или REPEAT UNTIL (как в pascal) ?
Если такое возможно, киньте пожалуйста пример синтаксиса.
Спасибо!
...
Рейтинг: 0 / 0
14.03.2006, 12:26:13
    #33599046
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
while do или repeat until
Из Help-а
...
Рейтинг: 0 / 0
14.03.2006, 12:30:13
    #33599058
while do или repeat until
Код: plaintext
1.
2.
3.
4.
    Do [{While | Until} condition]
        [statements]
        [Exit Do]
        [statements]
    Loop

Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim lngI As Long
    
    lngI =  1 
    
    Do Until IsEmpty(Range("A" & lngI))
        Debug.Print Range("A" & lngI)
        lngI = lngI +  1 
    Loop
...
Рейтинг: 0 / 0
14.03.2006, 12:31:00
    #33599060
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
while do или repeat until
Циклы Do While
Оператор Do While — еще один тил циклической структуры, представленной VBA отличие от цикла For-Next, цикл Do While выполняется до тех лор, пока удов ряется заданное условие. Цикл Do While может иметь один из двух представлений синтаксисов:

Do [While условие]
[ инструкции]
[Exit Do]
[инструкции]
LOOP
ИЛИ
Do
[ инструкции]
[Exit Do]
[инструкции]
Loop [While условие]
Как видите, VBA позволяет проверять условие While в начале или в конце цикла Разница между этими двумя синтаксисами связана с моментом, когда оценивается условие В первом синтаксисе содержимое цикла может вообще не выполнятся. Во втором содержимое цикла всегда выполняется (как минимум один раз).
Следующий пример демонстрирует цикл Do Whi lee первым синтаксисом:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub DoWhi1eDemo()
    Do While Not IsEmpty(ActiveCell)
        ActiveCell.Value =  0 
        ActiveCell.Offset( 1 ,  0 ).Select
    Loop
End Sub

Данная процедура использует активную ячейку! как точку отсчета и просматривает значения вниз по столбцу, вставляя ноль в активную ячейку. При каждом повторении цикла активной становится следующая ячейка в столбце. Цикл продолжается, пока функция VBA IsEmpty не определит, что активная ячейка пуста.
Далее покажем работу второго синтаксиса цикла Do While. Цикл всегда будет выполнен хотя бы один раз, даже если исходно активная ячейка пуста:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub DoWileDemo2()
    Do
        ActiveCell.Value =  0 
        ActiveCell.Offset(l,  0 ).Select
    Loop While Not IsEmpty(ActiveCell)
End Sub
Ниже следует еще один пример цикла Do While. Эта процедура открывает текстовый файд, считывает каждую строку, преобразует текст в верхний регистр, а затем сохраняет его на активном листе, начиная с ячейки А1, и продолжает перемещаться вниз по столбцу. Представленная процедура использует функцию VBA EOF, возвращающую True, если достигнут конец файла. Последний оператор закрывает текстовый файл.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub WhileDemol()
    Open "c:\data\textfile.txt" For Input As # 1 
    LineCt =  0 
    Do While Not EOF( 1 )
    Line Input # 1 , LineOfText
    Range("A1").Offset(LineCt,  0 ) = UCase(LineOfText)
    LineCt = LineCt +  1 
    Loop
    Close # 1 
End Sub
Цыклы Do Until
Структура цикла Do Until имеет много общего с конструкцией Do While. Разница заключается лишь в том, как проверяется условие цикла. В варианте Do While цикл выполняйся до тех пор, пока выполняется условие. В цикле Do Until цикл выполняется, пока условие не станет выполняться.
'Структура Do Until может быть представлена двумя видами синтаксиса:
Do [Until условие]
[инструкции]
[Exit Do]
[инструкции]
Loop
ИЛИ
Do
[ инструкции)
[Exic Do] .
[инструкции]
Loop [Until условие]
Пример, приводимый далее, уже был продемонстрирован для цикла Do While, но теперь он изменен для иллюстрации возможностей цикла Do until. Единственное отличие
строка с оператором Do, Этот пример делает программу несколько понятнее, так как не используется отрицание, необходимое в примере Do While:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub DoUntilDemolÎ()
    Open "c:\data\textfile.txt" For Input As # 1 
    LineCt =  0 
    Do Until EOF( 1 )
        Line Input # 1 , LineOfText
        Range("Al").Offset(LineCt,  0 ) = UCase(LineOfText)
        LineCt = LineCt +  1 
    Loop
    Close # 1 
End Sub
...
Рейтинг: 0 / 0
14.03.2006, 12:48:37
    #33599128
Nick-From
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
while do или repeat until
Большое спасибо!
все ясно как божий день :) !!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / while do или repeat until / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]