background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Цикл For Each - Новый курс VBA (9)"

input logo icon
Теги видео
|

Теги видео

excel
vba
вба
эксель
for each
foreach
for
for loop
for each loop
цикл
цикл for
цикл фор
фор ич
Субтитры
|

Субтитры

00:00:00
[музыка]
00:00:05
Привет! Цикл For
00:00:07
это одна из самых важных конструкций
00:00:08
В VBA, которыми нужно обязательно уметь
00:00:10
пользоваться. В предыдущем видеоуроке мы
00:00:12
уже рассмотрели первый вариант этого
00:00:13
цикла, в котором используется переменная
00:00:15
счетчик. В этом же видео мы поговорим о
00:00:17
втором варианте цикла For.
00:00:19
Это For Each. Давай приступим! Итак, как
00:00:22
мы уже увидели в предыдущем видео, для
00:00:24
работы первого варианта цикла For нужно
00:00:26
объявить числовую переменную, и задав
00:00:28
диапазон значений для этой переменной,
00:00:30
прописать действия, выполняемые в рамках
00:00:32
этого цикла.
00:00:33
Также, по желанию, в подобных циклах можно
00:00:35
настроить шаг. Все эти пример мы уже
00:00:37
разобрали и если ты их ещё не видел, то
00:00:39
перед тем, как смотреть этот видеоурок,
00:00:41
предлагаю ознакомиться с предыдущим
00:00:42
видео.
00:00:43
В этом же видео мы поговорим о подвиде
00:00:45
цикла For - For Each. For Each предназначен
00:00:48
для проработки всех объектов
00:00:49
определенного типа из определенной
00:00:51
группы. Рассматривать данный цикл мы
00:00:53
будем опять-таки сразу на примере. Давай
00:00:55
приступим! Мы уже получается привели
00:00:57
пример использования цикла For.
00:00:59
Вот эта процедура поочередно выводит
00:01:01
значение всех ячеек из указанного
00:01:03
столбца. Мы же при этом можем произвести
00:01:05
те же самые действия, только намного
00:01:07
более изящнее и эффективнее, как ты
00:01:09
догадываешься, при помощи цикла For Each.
00:01:11
И прежде чем мы это сделаем, еще раз
00:01:13
выведем определение того, какую задачу
00:01:15
выполняет
00:01:16
этот цикл. For Each — это цикл, который
00:01:18
прорабатывает каждый элемент в
00:01:20
определенной группе элементов.
00:01:21
Исходя из этого определения мы будем
00:01:23
сейчас писать пример. Смотри, в этом коде
00:01:26
мы проходили по всем ячейкам из данной
00:01:27
области и выводили их значения Immediate
00:01:29
Window.
00:01:30
Если вернуться к определению цикла For
00:01:32
Each, то видим, что, во-первых, у нас есть
00:01:34
группа определенных одинаковых элементов,
00:01:36
это вот эта область на рабочем листе, и в
00:01:38
нашем цикле мы прорабатываем каждую
00:01:40
ячейку
00:01:41
из этой области, следовательно, объект
00:01:43
ячейка является тем самым упомянутым в
00:01:46
определении элементом. Всё, все составные
00:01:48
части нашего цикла определенны, и значит
00:01:51
пора создать сам цикл. Итак, во-первых
00:01:52
для цикла For Each нам опять-таки нужно
00:01:55
объявить переменную. Мы хотим
00:01:56
прорабатывать ячейки, поэтому именно
00:01:58
этого типа переменную и объявляем. Итак
00:02:01
пишем Dim,
00:02:02
сперва указываем приставку, говорящую нам,
00:02:04
какого типа данных переменная будет,
00:02:06
поэтому,
00:02:07
rg, то есть Range, ну и для циклов
00:02:11
For Each, в которых производится проход по
00:02:13
ячейкам, переменную я обычно называю
00:02:15
rgCellChecked,
00:02:16
то есть проверяемая ячейка, и указываем
00:02:19
тип – as Range. Отлично, переменную объявили и
00:02:23
теперь всё очень схоже с обычным циклом
00:02:25
For. Пишем For, не забываем прописать Each
00:02:28
и затем указываем переменную rg
00:02:32
cellChecked, то есть у нас выходит
00:02:35
«Для каждой проверяемой ячейки», и теперь
00:02:39
указываем группу ячеек, которые должны
00:02:40
быть проверены,
00:02:41
то есть вот этот столбец, поэтому пишем in
00:02:43
то есть в указываемый группе, и
00:02:49
сразу закрываем цикл всё. Как обычно вот
00:02:52
здесь посередине мы сейчас будем
00:02:54
прописывать действия. Супер!
00:02:56
Вот, фактически, мы воспроизвели то, что
00:02:58
делал данный код с обычным циклом For
00:03:00
Однако, наш код с For Each имеет
00:03:03
важное преимущество, во-первых, нам не
00:03:05
надо вообще заморачиваться с диапазоном
00:03:07
принимаемых значений для переменной-счетчика
00:03:08
как вот здесь, мы просто говорим,
00:03:10
какую область нужно проработать и на
00:03:12
этом все, во-вторых, здесь мы работаем с
00:03:14
объектами, каждый из, которых несет в себе
00:03:16
большое количество потенциально полезной
00:03:18
информации, которую в случае нужды проще
00:03:21
получить из переменной. Смотри, сейчас
00:03:23
когда мы будем выводить значение каждой
00:03:25
проверяемой ячейки, к ним будет намного
00:03:27
проще обращаться. Вписываю Debug.Print
00:03:29
и затем вписываем нашу переменную, и
00:03:32
обращаюсь к ее нужному свойству. Сперва
00:03:36
давай, например, укажем адрес,
00:03:37
а затем через запятую попросим вывести
00:03:41
значение. Небольшое напоминание: когда мы
00:03:45
вот так в Debug.Print ставим запятую,
00:03:47
указанные значения вписываются столбцами.
00:03:49
Итак, запускаю пошаговую процедуру. VBA,
00:03:52
как можно заметить, как и в обычном цикле
00:03:54
For постоянно прыгает вверх и
00:03:56
поочередно выводит значение каждой
00:03:57
проверяем ячейки в Immediate Window до тех
00:04:00
пор, пока не будет проработана каждая
00:04:01
ячейка.
00:04:02
Вот такие два значительных плюса. Кроме
00:04:05
того, смотри, в предыдущем видео мы
00:04:06
научились использовать вложенные циклы и
00:04:08
в качестве примера мы тогда проходили по
00:04:10
каждой ячейке не из одного столбца, а из
00:04:12
целой таблички. Для этого мы создавали
00:04:14
один цикл, который подсчитывал номер
00:04:16
строки и второй цикл, который подсчитывал
00:04:18
номер столбца. Таким образом, в итоге мы
00:04:21
получали проработку каждой ячейки в таблице.
00:04:23
С For Each получить подобный функционал
00:04:25
намного проще, то есть в случае вот с
00:04:28
подобной областью, которая состоит всего
00:04:29
из одного столбца всё просто. For Each
00:04:31
будет проходить каждую ячейку, начиная с
00:04:34
первой сверху и до последней снизу.
00:04:36
Теперь, давай приведем пример с табличкой.
00:04:38
В качестве примера рассмотрим
00:04:39
проработку каждой ячейки вот в этой таблице.
00:04:42
Уберем старую процедуру и очистим Immediate 0:04:44.510,0:04:48.590 Window, и оставим вот этот код.
00:04:47
Единственное, что нам нужно будет
00:04:48
поменять, это название рабочего листа,
00:04:50
потому, что наш табличка расположена на
00:04:52
втором листе.
00:04:53
Ну и также надо будет поправить саму
00:04:55
область, поэтому пишем B2 до D14.
00:04:59
В случае вот таких областей с множеством
00:05:01
строк и столбцов For Each прорабатывает
00:05:04
ячейки в том же порядке, в котором мы
00:05:05
читаем слова в книге, то есть от первой
00:05:07
ячейки слева сверху
00:05:09
идем вправо, доходим до конца, затем
00:05:11
переходим к следующей строке и вновь
00:05:13
также идем вправо, и так далее. В каждой
00:05:16
строке этот алгоритм повторяется. Отлично!
00:05:23
Ну и смотри, опять-таки наше определение
00:05:25
циклов For Each. Здесь, как помнишь
00:05:28
называется каждый прорабатываемый
00:05:30
элемент. Этим самым прорабатываемым
00:05:32
элементом в определенной группе
00:05:33
фактически может быть любой объект Excel.
00:05:36
Например, все графики на определенном
00:05:37
рабочем листе все рабочие листы
00:05:39
В определенной рабочей книге, все рабочий
00:05:41
книги в группе открытых рабочих книг и
00:05:43
так далее — вот такие группы объектов
00:05:45
определенного типа в VBA называются
00:05:47
коллекциями объектов. Давай приведем с тобой
00:05:50
пример в первую очередь с рабочими
00:05:51
листами. Сперва я напишу код,
00:05:54
который будет выводить имя каждого
00:05:55
имеющегося в данной рабочей книге
00:05:57
рабочего листа при помощи цикла For.
00:06:00
Всего рабочих листов у нас в этой рабочей
00:06:03
книге 6, поэтому от единицы до шести. Попробуем
00:06:07
прогнать код и все отлично работает.
00:06:14
Теперь, давай напишем эквивалентный код,
00:06:16
только с использованием цикла For Each.
00:06:19
Для этого, как мы уже и делали, объявляем
00:06:22
переменную типа Worksheet, поскольку будем
00:06:24
прорабатывать каждый рабочий лист. Опять-таки
00:06:26
назовём её по тому же принципу, то
00:06:28
есть wsWorksheetChecked. И вот теперь нам
00:06:32
надо указать, какую группу рабочих листов
00:06:34
мы будем прорабатывать.
00:06:35
Мы хотим проработать все рабочие листы
00:06:37
этой рабочей книге, в которой у нас
00:06:39
прописан код, поэтому пишем ThisWorkbook и
00:06:43
все ее рабочие листы хранятся в
00:06:46
коллекции Worksheets
00:06:47
поэтому, к этой коллекции и обращаемся.
00:06:50
Всё! ВБА сам поймет, что нужно
00:06:53
проработать каждый рабочий лист в этой
00:06:55
рабочей книге, если мы с тобой не укажем
00:06:56
здесь ThisWorkbook или, иначе говоря, не
00:06:59
скажем открыто VBA, что нужно
00:07:00
проработать рабочие листы
00:07:02
именно этой рабочей книги, то VBA
00:07:04
проработает активную или, иначе говоря
00:07:06
последнюю кликнутую рабочую книгу.
00:07:08
Более подробно об этом принципе я
00:07:10
рассказывал вот в этом видео. Ну и
00:07:12
приписываем действие. Мы хотели вывести
00:07:14
имена рабочих листов. Просто опять-таки
00:07:16
указываем нашу переменную, которая
00:07:19
циклируется, и обращаемся к имени.
00:07:22
Готово! Проверяем, запускаем процедуру и
00:07:27
все отлично работает. Супер! И по такому
00:07:30
принципу For Each работает и с другими
00:07:32
объектами. Именно, поэтому сделаем
00:07:34
следующее упражнение: открой несколько
00:07:36
рабочих книг с разными названиями. В
00:07:38
одной из них пропиши два макроса, которые
00:07:39
выводили бы в Immediate Window
00:07:41
имена всех открытых рабочих книг. Первый
00:07:43
макрос при этом пусть работает на основе
00:07:45
обычного цикла For, a второй на основе For
00:07:48
Each. Итак, я ставлю видео на паузу и
00:07:50
после паузы мы с тобой рассмотрим
00:07:51
предлагаемый мной вариант
00:07:53
[музыка]
00:07:57
Добро пожаловать обратно. Итак, давай я
00:08:00
представлю свое решение. Для этого я
00:08:02
открою штук 5-6 рабочих книг при помощи
00:08:04
комбинации Control+N. Итого у нас выходит
00:08:08
открыто семь рабочих книг,
00:08:09
Открываю VBA и вот здесь пропишу
00:08:13
сперва первое решение на основе обычного
00:08:15
цикла For.
00:08:18
Для этого, как всегда, объявляем числовую
00:08:20
переменную, её диапазон будет от единицы
00:08:25
до суммы открытых рабочих книг. Можно
00:08:27
конечно, посчитать вручную, сколько у нас
00:08:29
рабочих книг открыто,
00:08:30
то есть вот здесь мы видим то, что это
00:08:32
семь книг, но намного лучше сделать это
00:08:34
указание динамичным и автоматизированным.
00:08:36
Для этого обращаемся к коллекции всех
00:08:38
открытых рабочий книг Workbooks,
00:08:41
И к свойству этой коллекции Count. Всё — это
00:08:44
выражение и будет у нас принимать сумму
00:08:46
открытых рабочих книг. Закрываем цикл и
00:08:50
конечно, прописываем действие вывода
00:08:52
имени рабочей книги. Отлично, первая
00:08:58
процедура готова. Давай запустим и вот
00:09:00
название всех книг у нас выводится
00:09:02
в Immediate Window
00:09:03
Теперь, пропишем вторую процедуру на
00:09:05
основе For Each. Для этого переменную
00:09:09
объявляем типа
00:09:10
Workbook, так как мы будем проходить по
00:09:12
рабочим книгам и теперь открываем цикл.
00:09:16
Указываем переменную, группой проверяемый
00:09:19
будет коллекция рабочих книг Workbooks.
00:09:23
Отлично! На этом все и закрываем цикл. В
00:09:27
теле цикла теперь точно так же при
00:09:28
помощи использования переменной пишем
00:09:30
действия. Отлично, вот и второй код готов.
00:09:34
Давай его проверим – запускаем, название
00:09:37
всех рабочих книг точно также успешно
00:09:39
выводятся.
00:09:40
Супер! На этом все, если этот видеоурок
00:09:42
был для себя полезным, то ставь лайк,
00:09:44
подписывайся на канал и увидимся с тобой
00:09:46
в следующем видео. Пока!

Описание:

Привет! Цикл For – это одна из самых важных конструкций в VBA, которыми нужно обязательно уметь пользоваться. В предыдущем видеоуроке мы уже рассмотрели первый вариант этого цикла, в котором используется переменная счетчик. В этом же видео мы поговорим о подвиде цикла For - For Each. For Each предназначается для проработки всех объектов определенного типа из определенной группы.В этом видео ты узнаешь, как объявлять переменные для цикла For Each, а также как задавать нужный тип данным этим переменным. Мы посмотрим, в чём заключается различие между обычным циклом For и For Each, а также в каких случаях последний можно применить. Как обычно, закончится этот видеоурок практическим упражнением. Приятного просмотра! 😊 Хочешь поддержать мой канал? Это можно сделать с помощью функции «Спонсорство»: https://www.youtube.com/channel/UCVWD83UyE_wyWo1xuUQ0duA/join

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Цикл For Each - Новый курс VBA (9)"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Цикл For Each - Новый курс VBA (9)" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Цикл For Each - Новый курс VBA (9)"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Цикл For Each - Новый курс VBA (9)" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Цикл For Each - Новый курс VBA (9)"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Цикл For Each - Новый курс VBA (9)"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.