Цикл Do Loop (While/Until) - (Серия VBA 10)

Поділитися
Вставка
  • Опубліковано 20 жов 2018
  • Всем привет! Сегодняшний видео-урок посвящен теме цикла Do Loop в VBA. В этом видео мы с Вами:
    • Познакомимся с двумя методами объявления условий в цикле Do Loop- While и Until
    • Узнаем, где и как объявлять условия в цикле Do Loop
    • Поговорим о методе Exit Do
    • Узнаем, что делать если случайно создали бесконечный цикл, который не заканчивается (как While, так и For)
    • получим новое домашнее задание, решение которого будет представлено в следующем видео-уроке
    Всем приятного просмотра и успехов в VBA! Если это видео было для Вас полезным - ставьте лайк, а если Вы еще не подписаны на канал, то подписывайтесь :)

КОМЕНТАРІ • 54

  • @user-uj4zl3wv3s
    @user-uj4zl3wv3s 4 роки тому +23

    Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!!!

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +2

      Здравствуйте, Андрей!
      Со своей стороны точно также не поленюсь и поблагодарю Вас за этот приятный комментарий под каждым видео точно так же :)
      С уважением и хорошего Вам дня,
      ХБ

  • @krakoziabratv5543
    @krakoziabratv5543 2 роки тому +4

    Вы с Большой буквы Учитель !!! Продолжайте плииииз. Я ребенка на Ваших уроках приобщаю к развитию

  • @SNS_2104
    @SNS_2104 Рік тому

    Билял, спасибо за ваши видеоуроки! Смотреть одно удовольствие: без воды, четкая речь, красивые видео с замедлениями, где это нужно, с увеличением... Просто 🔥🔥🔥! Знаю, что повторяю слова других подписчиков, но невозможно удержаться! Спасибо огромное!!! Удачи вам во всех ваших делах!!!

  • @komtick
    @komtick 3 роки тому +3

    Отлично рассказываете, все понятно! И очень круто, что даёте домашку) чтобы не просто посмотрели и забыли, но и научились применять полученные данные! Продолжайте в том же духе!)

  • @vladimirk.5371
    @vladimirk.5371 5 років тому +6

    Спасибо огромнейшее в очередной раз!
    Самое главное усвоить для себя:
    Do While - делать, пока равно/не равно/ больше/ меньше для какого-то значения.
    Do Until - делать, пока не станет равно /не равно/больше/меньше какого-то значения.
    Вот домашняя работа двумя способами:
    Sub hw4()
    Dim i As Long
    Dim warning As String
    warning = "да"
    i = 1
    Do While warning = "да"
    warning = InputBox("Продолжаем выполнение цикла?" & vbCrLf & "№ цикла равен " & i)
    If warning "да" Then
    MsgBox ("Действие остановлено на цикле под номером " & i)
    End If

    i = i + 1
    Loop
    End Sub
    --------------------------------------------------------------------------------------------------------------------------------
    Sub hw5()
    Dim i As Long
    Dim warning As String
    i = 1
    Do
    warning = InputBox("Не продолжаем выполнение цикла?" & vbCrLf & "№ цикла равен " & i)
    If warning "нет" Then
    MsgBox ("Действие остановлено на цикле под номером " & i)
    End If

    i = i + 1
    Loop Until warning = "да"
    End Sub

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +1

      Здравствуйте, Владимир!
      Большое спасибо Вам тоже! Очень здорово, что Вы тренируетесь и для решения поставленных задач используете интересные подходы -так держать :)
      Кроме того, в своём комментарии Вы очень здорово, в короткой форме суммировали принцип работы Do Loop! :)
      Хорошего Вам дня, Владимир!
      С уважением,
      ХБ

    • @user-zj4ub3cx3z
      @user-zj4ub3cx3z 4 роки тому

      поставьте в один из примеров vbNewLine вместо vbCrLf будет еще круче)

  • @grigorymoroz8055
    @grigorymoroz8055 3 роки тому +2

    Ставлю лайки на твои видео ещё перед началом просмотра, чтобы не забыть это сделать после, спасибо за труд)

  • @user-of9yz6ov1s
    @user-of9yz6ov1s 5 років тому +11

    Спасибо за уроки! Очень интересно смотреть и делать домашние задания. Больше примеров (если это возможно). Жду продолжения!

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +1

      Здравствуйте, Дмитрий!
      Большое спасибо за Ваш комментарий! Рад, что видео было для вас полезным. Следующий урок уже на стадии разработки и скоро появится на канале, так что stay tuned :)
      Хорошего Вам вечера :)
      P.S. Постараюсь включить в следующие видеоуроки больше примеров и домашних заданий :)

  • @user-wr5rc5pp8r
    @user-wr5rc5pp8r 4 роки тому +5

    Реально годный материал. Особенно для анализа по временным периодам.

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +1

      Здравствуйте, Герман!
      Спасибо за Ваш комментарий :)
      С уважением и хорошего Вам вечера,
      ХБ

  • @pilot39938
    @pilot39938 3 роки тому +2

    отличные уроки, смотрю с удовольствием! огромное спасибо!

  • @user-tr7js9dy2q
    @user-tr7js9dy2q 5 років тому +8

    Привет! Спасибо за урок! Жду продолжения!

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +4

      Здравствуйте, Сергей! На этих выходных постараюсь снять и загрузить следующее видео. Пока думаю над его темой (вероятно, сниму либо о Array, либо о Collection). Возможно у Вас есть предложения/пожелания, касательно того, что Вы хотели бы увидеть в следующем видео? Если да, можете смело поделиться ими в комментариях :)

  • @Tsynade1
    @Tsynade1 3 роки тому +1

    Здорово когда получается, спасибо Вам большое !

  • @user-sj3wm8fg1p
    @user-sj3wm8fg1p 2 роки тому

    Не знал, что так можно обозначить диапазон с переменной, всегда пользовался cell. Билял молодец! Теперь смогу писать более короткие коды.

  • @dvinorey
    @dvinorey 2 роки тому

    знаний из этих 10 уроков мне хватило, чтобы написать программу, которая вычисляет выборочный коэффициент корреляции, а потом проверяет его на значимость при заданном уровне значимости, спасибо!

  • @mariadergausova8412
    @mariadergausova8412 3 роки тому +2

    Супер! Спасибо

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov 3 роки тому +1

    Билял, благодарю! Ура! Я справился с ДЗ самостоятельно )

  • @user-bh9ys8mj3w
    @user-bh9ys8mj3w 3 роки тому +11

    В очередной раз спасибо. ДЗ ниже
    Sub DZ_DO()
    Dim z As String
    Dim i As Long
    i = 1
    Do Until z = "OK"
    z = InputBox("Не вводите 'OK' для повторения цикла" & Chr(10) & "Номер цикла: " & i)
    i = i + 1
    Loop
    End Sub

    • @user-qg2nv7vv4x
      @user-qg2nv7vv4x Рік тому

      Добрый день, а что означает Chr(10) ?

    • @user-bh9ys8mj3w
      @user-bh9ys8mj3w Рік тому +1

      @@user-qg2nv7vv4x это символ абзаца

  • @Dima_Melnikov
    @Dima_Melnikov 2 роки тому

    Желаю развития вашему каналу

  • @AxelUgl
    @AxelUgl 3 роки тому

    Отличные видео, для тех, кто только начинает, с нужными и наглядными примерами! Молодец
    Можно где-нибудь с вами общаться?

  • @ppr8117
    @ppr8117 4 роки тому +4

    Молодец! Видно, что стараешься! Это первый урок, когда в редакторе я увидел одновременно несколько процедур - это порадовало. Стесняюсь спросить. Почему бы, для пошаговой проверки кода, не использовать F8 вместо MsgBox...? Было бы нагляднее
    А заодно и использовать переключатель "Procedure View" - "Full Module View".
    Но, всё равно молодец!!!

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +5

      Здравствуйте!
      Спасибо за Ваш комментарий!
      Одной из причин, почему я использовал в начальных видео Msgbox для пошаговой проверки кода - это большая простота и наглядность для людей, только знакомящихся с VBA. Кроме того, в начальных видео подобный метод, как мне кажется, лучше показывает новичку, что VBA по-настоящему делает что-то в рабочем файле, давая пользователю возможность интерактивно работать с процедурой (пусть и на столь банальном примере с диалоговым окном). Хотя, безусловно, Вы правы в том, что F8 в комбинации с Watch Window является намного более продуктивным методом - и именно исключительно данный метод я буду использовать в дальнейших видеоуроках.
      Хороших Вам выходных и еще раз спасибо за комментарий! :)
      С уважением,
      ХБ

    • @fayzullomarufov8717
      @fayzullomarufov8717 4 роки тому +1

      @@BilyalKhassenov Вы, совершенно правы, Msgbox дает большую наглядность! Спасибо большое за ценные видео уроки!

  • @elizabeht2492
    @elizabeht2492 3 роки тому

    Привет! Уроки потрясающие, спасибо! Есть ли случайно видео о двойных циклах, когда есть внутренний и внешний в одной задачке?

  • @AraimRenmazuo
    @AraimRenmazuo 2 роки тому

    Большое спасибо за уроки, недавно их нашел и очень доволен. Моя версия Д/З:
    Sub Homework()
    Dim checker As String
    Dim Number As Long
    Number = 0
    Do Until checker = "OK"
    checker = InputBox("Не пишите 'OK' для повторения цикла! Количество пройденных циклов " & Number)
    If checker "OK" Then
    Number = Number + 1
    End If
    Loop
    End Sub
    PS: Почему -то слетает русская кодировка при копировании кода в комментарий

  • @user-kz4lb1jt2r
    @user-kz4lb1jt2r 3 роки тому

    Добрый день! Спасибо за уроки! Скажите пожалуйста, что за вкладка ACROBAT у Вас в EXCEL?

  • @yellowmoonishka1725
    @yellowmoonishka1725 5 місяців тому

    спс

  • @mikek679
    @mikek679 2 роки тому

    Niletto красавчик

  • @user-sp5up6kp8j
    @user-sp5up6kp8j 4 роки тому

    разъясните пожалуйста vbCrLf и NewLine, ответ на домашку смотрел в коментах и очень благодарен что выложили ответ

  • @user-ji3nc4yj6x
    @user-ji3nc4yj6x Рік тому

    Здравствуйте! В первую очередь хотел бы поблагодарить Вас за Ваши труды и за то, как легко и доступно Вы преподносите информацию. По Вашему курсу очень легко заниматься и информация усваивается отлично. Хотел задать Вам вопрос по поводу этого урока. на 12:09 Вы показали пример преждевременного выхода из цикла Do Until. В его структуре сначала идёт условие прекращения цикла, затем в ячейку вписывается значение, соответствующее переменной, а уже после проводится проверка на выполнение условия досрочного выхода. Разве не правильнее было бы расположить условие проверки на досрочный выход до того, как в ячейку впишется значение переменной? Иначе по логике получается, что, допустим, фраза "Stop" была бы в ячейке А1, но программа, не проверив условие досрочного выхода, заменила бы эту фразу на номер строки и благополучно продолжила свою работу.

  • @azatamanow6761
    @azatamanow6761 2 роки тому

    Билял у меня не получается с DoLoop. Выходит такая надпись "Compile error: Syntax error".

  • @user-qn5by5iv7u
    @user-qn5by5iv7u 3 роки тому +2

    2021

  • @IshayahuLastov
    @IshayahuLastov 2 роки тому

    Ну вообще until и while вполне взаимозаменяемы, только надо знак сравнения изменить

  • @user-xf7du1dk9b
    @user-xf7du1dk9b 2 роки тому

    я нажимаю ок и все ни чего не происходит, обратно закрывается, почему? Как у вас не получается?
    do Until наоборот, ок и на анг, и на русс нажимала , не уходит этот окно ?? боже , что делать? ......

  • @SuperRienzi
    @SuperRienzi Рік тому

    Друзья, помогите пожалуйста!
    Пишу код у меня выдает ошибку - вообще не представляю, что с этим делать.
    Sub описание_оценки
    Dim i As Range
    For Each i In Range ("B2:B6")
    If i = 3 Then i.Offset (0,1) = " удовлетворительно"
    Elseif i = 4 Then i.Offset (0,1) = "хорошо"
    End if
    Next i
    End sub
    Компилятор доходит до Elseif и пишет, что ошибка в том, что нет if. Если исправить Elseif просто на Else все то же самое. Если просто убрать второе условие, то просто if работает. Уже всю голову сломал. Буду очень признателен за помощь

    • @SuperRienzi
      @SuperRienzi Рік тому

      Все нашел решение на одном из форумов - нужно после Then писать с новой строки. В жизни бы до этого не додумался

  • @kandratiykalavratiy4333
    @kandratiykalavratiy4333 9 місяців тому

    А почему цикл выполнялся бесконечно? Разве ячеек в excel не конечное значение?

  • @user-nl9fs7qc9k
    @user-nl9fs7qc9k 2 роки тому

    Если честно, until кажется немного бесполезной вещью в цикле do, можно ведь поступить так
    do while ... ...
    ...
    ...
    ...
    loop
    И еще смешная вещь получается:
    do until some_p "some_t" 'Это фактически равно фразе do while some_p = "some_t"
    ...
    loop

  • @user-xw1it4od4o
    @user-xw1it4od4o 3 роки тому

    помогите решить задачу
    Богатый дядюшка подарил мне 1 доллар в мой первый день рождения. В
    каждый следующий день рождения он удваивал сумму подарка и прибавлял к
    ней столько долларов, сколько лет мне исполнилось. Написать программу,
    указывающую к какому дню рождению сумма подарка превысит 100
    долларов.

  • @Tsynade1
    @Tsynade1 3 роки тому +1

    Sub lesson10_doloop_homeWork()
    Dim checker As String
    Dim i As Long
    i = 1
    Do Until checker = "ОК"
    checker = InputBox("Не пишите 'ОК' для повторения цикла!" & " Номер цикла: " & i)
    i = i + 1
    Loop
    End Sub

  • @haymie94
    @haymie94 4 роки тому +1

    Билял, ролики шикарные ,очень доступно. Но, блин. Слово "данный" это канцеляризм, нельзя его в таких количествах совать. В 90% его просто можно выбросить не теряя смысл, еще в каких-то случаях заменить.

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +1

      Здравствуйте, Влад!
      Полностью с Вами согласен! Сейчас, пересматривая свои первые ролики, точно так же вижу определенные моменты, которые можно было бы организовать более оптимальным образом. С другой стороны, таков процесс - все мы с чего-то начинаем и со временем совершенствуем свои навыки, в том числе и в области записи видеоуроков.
      С уважением и хороших Вам выходных,
      Билял
      P.S. Когда-нибудь я думаю снять вторую версию курса по VBA с нуля, в которой учёл бы все недо-статки первого курса, еще более насытил бы эти новые уроки полезным материалом, сохраняя при этом так же и короткий хронометраж плейлиста 😊

    • @haymie94
      @haymie94 4 роки тому +2

      @@BilyalKhassenov у вас редкая способность понятно объяснять 👍

  • @vbaexcel2514
    @vbaexcel2514 2 роки тому

    Автор ничего не сказал о принципиальном отличии конструкции
    Do While/Until ...
    Loop
    от конструкции
    Do
    Loop While/Until ...
    В первом варианте цикл при определённых условиях может НИ РАЗУ не передать управление телу цикла, то есть вообще не выполняться.
    Во втором варианте управление будет передано телу цикла по крайней мере ОДИН РАЗ НЕЗАВИСИМО от условий цикла, поскольку НИКАКИЕ условия при входе в цикл НЕ проверяются.
    Именно поэтому (и только поэтому!) в язык VBA (и в VB) введены ЭТИ ДВЕ синтаксические конструкции, НИЧЕМ ДРУГИМ друг от друга не отличающиеся.
    Жаль - досадное упущение автора урока.