powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / while do или repeat until
5 сообщений из 5, страница 1 из 1
while do или repeat until
    #33598958
Nick-From
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Можно ли кроме цикла FOR NEXT организовать в макросе Excel какой-нить цикл типа WHILE DO do или REPEAT UNTIL (как в pascal) ?
Если такое возможно, киньте пожалуйста пример синтаксиса.
Спасибо!
...
Рейтинг: 0 / 0
while do или repeat until
    #33599046
5631
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из Help-а
...
Рейтинг: 0 / 0
while do или repeat until
    #33599058
Код: 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
while do или repeat until
    #33599060
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклы 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
while do или repeat until
    #33599128
Nick-From
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
все ясно как божий день :) !!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / while do или repeat until
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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