For и For Each (Серия VBA 8)

Поділитися
Вставка
  • Опубліковано 28 вер 2018
  • Привет! В этом видео мы познакомимся с нашим первым, и пожалуй самым важным циклом в VBA - For и его подвидом For Each.
    Как обычно, видео-урок полон интересных и доступных примеров, в которых мы с Вами познакомимся с самым важным касательно темы циклов For и For Each.
    Конечно же подписывайтесь на канал, чтобы увидеть дальнейшие уроки из нашей серии изучения VBA. Приятного просмотра! :)

КОМЕНТАРІ • 56

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

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

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

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

  • @user-ix2so6pg7r
    @user-ix2so6pg7r 4 роки тому +14

    Отличный урок, наверное это самые лучшие уроки на UA-cam!

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

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

  • @Bah1918
    @Bah1918 5 років тому +20

    Добрый вечер.Спасибо ,что откликнулись.Ваши уроки действительно очень доступны.Начал понимать то чего раньше не мог понять.СПАСИБО!

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

      То, что Вы написали, Сергей, и является для меня главным стимулом к созданию видеоуроков. Очень рад, что смог помочь Вам, хорошего дня! :)

  • @Bah1918
    @Bah1918 5 років тому +16

    Все понятно и поучительно.Спасибо за уроки.

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

      Здравствуйте, Сергей! Очень рад, что Вам понравилось. На следующей неделе постараюсь снять следующий урок из серии о VBA. Если у Вас есть какие-либо вопросы/пожелания, можете смело писать. И с новым годом Вас, всего самого лучшего! :)

  • @user-jl3qy9dw9f
    @user-jl3qy9dw9f 2 роки тому +1

    09:20 "... порядок такой же, как мы с вами читаем книгу..." - это лучшее объяснение, что я слышал. 5 баллов!

  • @user-yi8wr8dz8t
    @user-yi8wr8dz8t 4 роки тому +12

    Здравствуйте. Спасибо за курс по vba. Гораздо понятнее, чем читать книги по данной тематике. Крутые видео! без лишнего, звук хороший. Вы молодец.

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

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

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

      Поищите еще в инете ряд Надстроек чужих - там часто исходный код не закрыт, можно почитать, подчерпнуть для себя многое.

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

    Я в восторге от этих уроков. Трудно даже представить более успешный и эффективный формат видеобучения по VBA. Моё почтение! 🧐

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

    По-мрему самый лучший курс по VBA. Все очень доходчиво и мало ненужной инфы. Спасибо!

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

    Благодарю! Всё попробовал повторить - всё понял, освоил. Отличное изложение материала!

  • @user-hz7nr8le3o
    @user-hz7nr8le3o 3 роки тому +1

    Спасибо! Всё ясно и понятно!

  • @user-xo8xj2sx9c
    @user-xo8xj2sx9c 4 роки тому +1

    Очень жалею, что не увидел раньше ваши видео. Отдельное спасибо за msgbox, очень наглядно, когда только начинал осваивать vba постоянно пользовался им

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

      Здравствуйте!
      Большое спасибо за Ваш комментарий! Очень рад, что видео Вам понравились :)
      Если будут какие-либо вопросы - всегда обращайтесь :)
      С уважением,
      Билял

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

    Спасибо, очень полезно!

  • @sergoa.8849
    @sergoa.8849 Рік тому

    Отлично!!! 5+

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

    Спасибо

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

    Большое спасибо!

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

      Здравствуйте, Ortah!
      Всегда пожалуйста, рад помочь 😊
      С уважением,
      Билял

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

      @@BilyalKhassenov Добрый день! Пожалуйста скажите где я в коде допустила ошибку... Мне это очень важно... Задача- Вычислить заданное целочисленное выражение для данных a, b в формате double, используя оператор if. Исходные данные и результат должны проверяться на область допустимых значений. Для решения задачи разработать функцию.тут еще система только я не смогла ее написать
      Function z2(a2 As Double, b1 As Double) As Double
      If a2 > b1 Then
      x = a2 * b1 - 3
      ElseIf a2 = b1 Then
      x = 2
      Else
      x = (a2 ^ 3 + 1) / b1
      End If


      End Function
      Sub ВЫПОЛНИТЬ()
      Dim n As Integer
      n = Cells(2, 5).Value
      Select Case n
      Case 2
      'решение задачи 2
      Dim a2 As Double
      Dim b1 As Double
      If Cells(5, 8).Value "" Then
      a2 = Cells(5, 8).Value
      Else
      Cells(5, 8).Value
      a2 = 0
      End If
      If Cells(6, 8).Value "" Then
      b1 = Cells(6, 8).Value
      Else
      Cells(6, 8).Value
      b1 = 0
      End If
      Cells(8, 10).Value = z2(a2, b1)

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

      @@immanvahidovna8566 Здравствуйте, Имман!
      Функция не работала, потому итоги вычислений «не вписывались» в неё: нужно было вместо x вписывать z2.
      Я точно не знаю поставленную перед Вами задачу и как выглядит Ваш рабочий лист, поэтому немного на уровне интуиции сделал следующие поправки. Попробуйте, надеюсь этот код поможет Вам:
      Function z2(a2 As Double, b1 As Double) As Double
      If a2 > b1 Then
      z2 = a2 * b1 - 3
      ElseIf a2 = b1 Then
      z2 = 2
      Else
      z2 = (a2 ^ 3 + 1) / b1
      End If

      End Function
      Sub ВЫПОЛНИТЬ()
      Dim n As Integer
      n = Cells(2, 5).Value
      Select Case n
      Case 2
      'решение задачи 2
      Dim a2 As Double
      Dim b1 As Double
      If Cells(5, 8).Value "" Then
      a2 = Cells(5, 8).Value
      Else
      'Cells(5, 8).Value 'Лишнее
      a2 = 0
      End If

      If Cells(6, 8).Value "" Then
      b1 = Cells(6, 8).Value
      Else
      'Cells(6, 8).Value 'Лишнее
      b1 = 0
      End If

      End Select

      Cells(8, 10).Value = z2(a2, b1)
      End Sub
      Узнать больше о темах функций и конструкции Select Case Вы можете в следующих видео:
      ua-cam.com/video/6AThedpXR7k/v-deo.html
      ua-cam.com/video/5B24hKE85hc/v-deo.html
      С уважением,
      Билял

    • @immanvahidovna8566
      @immanvahidovna8566 4 роки тому

      Билял Хасенов - Excel & VBA спасибо большое)

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

    Как только ты сказал For я тут же представил i. Это магия ))

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

      Здравствуйте!
      Вот-вот! Это как раз то, что я и имел ввиду под «интуицией» программирования в ответе на Ваш предыдущий комментарий 😊
      С уважением,
      Билял

  • @user-go4qq2lc4i
    @user-go4qq2lc4i 4 роки тому +1

    Я обычно смотрю ( как и встречают по одёжке) на картинку. Вижу какой то парень слащявый (Извиняюсь =) ). Ну думаю, давай расскажи какой ты там 10 лет разработчик, профессионал по VBA и т.д.
    Начал смотреть. Просто супер человек!!!! По делу, качественно, без всяких ооо, эээ, сейчас поправлю и тому подобное.
    Успехов, здоровья и всего самого хорошего!!!!!!!!!
    P.S. Еще бы Ваши видео по Word. Там как я понял там сложнее и больше отличий. Или я ошибаюсь?!

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

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

    • @user-go4qq2lc4i
      @user-go4qq2lc4i 4 роки тому +1

      @@BilyalKhassenov =)
      Если бы Вы сняли, так же как и про Exel - цены бы Вам не было.
      Ну главная мотивация - деньги.
      И к сожалению мало людей, кому интересно VBA (для Exel и Word). Многие проблемы решаются руками. Но когда сталкиваешься где без VBA не обойтись, начинаешь лезть на офф. Microsoft в документацию. Но там такая документация, будто пьяный человек просто тыкал по клавиатуре.
      Может какую нибудь группу или канал создать про Word VBA, собрать людей которым это интересно, собрать с людей копеечку (в умеренном кол-ве =) )
      Будет и полезно и Вам мотивация!
      Но! К сожалению люди буду все равно искать бесплатно...

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

    Спасибо большое за вашу работу. Начал вместе с вами изучать VBA. Я все вами показываемые макросы пробую на практике. Для удобства я их сохраняю в Личной книге макросов. Но часть макросов после сохранения в Личной книге макросов не запускаются, а если макрос сохранить прямо в книге, например, Лист1, то все работает.

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

      Возможно, это связано с ThisWorkbook. Сохранив макрос в личной книге с командой ThisWorkbook.... Вы его не запустите для работы в другой книге. Или замените на Activebook, или используйте обьектные переменные.

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

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

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

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

  • @captain_swan
    @captain_swan 5 років тому +3

    Добрый день! А как будет выглядеть код если добавлять нумерованные значения в таблицу? Спасибо 🙏🏻

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

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

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

      Эффективнее! Bill K. Спасибо что ответили! Необходимо при добавлении записи в таблицу через форму нумеровать ее!

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

      ​@@captain_swan, здравствуйте!
      Можно, конечно, по-разному решить эту задачу. Вот самый простой вариант (возможно, Вам придётся немного поправить его под себя):
      1. Создайте UserForm и вставьте в неё TextBox и CommandButton (не меняя стандартных названий, т.е. TextBox1 и CommandButton1). Название UserForm так же оставьте стандартным.
      2. Целиком скопируйте и вставьте этот код в модуль UserForm:
      Option Explicit
      Private Sub CommandButton1_Click()
      ' Это - процедура для Userform, которая вносит пронумерованные записи в базу данных.
      ' В форме, по условию, есть TextBox1, в который пользователь вписывает нужно значение,
      ' а также кнопка CommandButton1 - которая вносит указанное значение пронумерованным в базу данных.
      ' База данных находится на листе 1. Столбец A - Номер записи, Столбец B - Запись
      ' База данных должна иметь заголовки

      Dim lastRowInDatabase As Long ' Переменная для сохранения последней использованной строки в базе данных
      Dim lastRecordNumber As Long ' Переменная для сохранения номера последней записи в базе даных


      lastRowInDatabase = ThisWorkbook.Worksheets(1).Range("A" & ThisWorkbook.Worksheets(1).Rows.Count).End(xlUp).Row

      lastRecordNumber = ThisWorkbook.Worksheets(1).Range("A" & lastRowInDatabase)

      ThisWorkbook.Worksheets(1).Range("A" & lastRowInDatabase + 1) = lastRecordNumber + 1 'Внесение номера текущей записи
      ThisWorkbook.Worksheets(1).Range("B" & lastRowInDatabase + 1) = TextBox1 'Внесение содержания текущей записи
      End Sub
      Как говорилось, это самый простой вариант решения задачи. Мы еще, к сожалению, не дошли до изучения UserForms, поэтому на канале нет видео на эту тему. Надеюсь, смог Вам помочь. Если что, пишите :)
      С уважением,
      ХБ
      P.S. Я решил просто загрузить файл с прописанными выше действиями, чтобы Вам можно было быстрее и легче его посмотреть. Скачать файл можете по этой ссылке:
      drive.google.com/file/d/1KaQ5niiLLeqKr6agpEfLkGmUgzKNYUxf/view?usp=sharing
      Удачи! :)

    • @captain_swan
      @captain_swan 5 років тому +2

      Спасибо большое за уделённое время и за очень подробный ответ!!! Все получилось! 1000 лайков и 🍋подписчиков Вам!!!

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

      @@captain_swan Добрый день! Рад помочь :)
      Как уже говорилось, это наипростейшее решение. Обязательно посмотрите серии по UserForms (когда они появятся на канале), чтобы усовершенствовать своё решение :)
      С уважением,
      ХБ

  • @ramilz772
    @ramilz772 4 роки тому +3

    Привет! Все интересно и подробно, но не уловил в чем разница циклов.

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

      Привет. Начни писать реальные проекты, тогда все поймешь. Цикл For .. Next - это основной цикл, чаще всего используется в работе. Используется, когда можешь определить границы цикла. Например, пробежаться по строкам и выполнить определенные действия: удалить строки по определенному критерию (цикл выполняется в обратном порядке), присвоить значения ячейкам (например, пронумеровать) и т.д. For Each - удобный цикл для работы с объектами, коллекциями, массивами, диапазонами данных.

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

    Привет Билял. Спасибо за For each. Я все время пользовался For To, даже когда нужно было исследовать каждую ячейку в определенной области. Я проходил эту область с For To и двумя переменными по столбцам и строкам. А сейчас я написал макрос с For each, который проходит по всем листам книги (54 листа) и в каждом листе по ячейкам в Range(“B8:E52“) -138 ячеек на Value=0 Then ClearContents. Процес длится 10 мин. Это нормально, или что-то не в порядке?

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

    15 сен 2022

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

    Билял Хасенов - Excel, VBA & More: Скажите пожалуйста а как перебрать диапазон с конца в начало ?

  • @user-ke8gz6ck4s
    @user-ke8gz6ck4s 3 роки тому +1

    странно cells выдает ошибку run time eerror,а c Range все работает,может старая версия? из-за этого?!

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

      Вероятно вы по привычке сделали цикл с 0, а cells принимает от 1.

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

    VBA с Word вы не разбирали ?

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

    ths

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

    Слушаю на 0,75.

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

    Я не знаю, есть ли тут кто-то: подскажите, только у меня не работает Continue For в цикле For Each?