VBA для кожного прикладу (Короткий довідник)

Цей підручник покаже вам приклади використання циклу For Every Loop у VBA. Натисніть тут, щоб дізнатися більше про цикли загалом.

Для кожної петлі

Цикл "Для кожного" дозволяє виконувати цикл кожен об'єкт у колекції:

  • Усі клітини в діапазоні
  • Усі аркуші в робочому зошиті
  • Усі відкриті трудові книжки
  • Усі фігури на аркуші
  • Усі елементи в масиві
  • і більше!

Для кожного: основні приклади

Ці приклади продемонструють, як налаштувати цикли For Each для циклу через різні типи об’єктів.

Цикл через клітини

Ця процедура прокручуватиме кожну клітинку в діапазоні A1: A10, встановлюючи для неї осередок рівним самому собі.

12345678 Sub ForEachCell ()Dim Cell As RangeДля кожної клітинки в аркушах ("аркуш1"). Діапазон ("A1: A10")Ячейка.Зміщення (0, 1). Значення = Ячейка.значенняНаступна клітинаEnd Sub

Цикличні аркуші

Ця процедура прокручуватиме кожен аркуш у робочій книзі, відкриваючи кожен аркуш.

12345678 Sub ForEachSheets ()Затемнити як робочий аркушДля кожного ws у аркушахws.Visible = ПравдаНаступний аркушEnd Sub

Цикличні робочі зошити

Ця процедура буде повторювати кожну книгу, закриваючи кожну.

12345678 Sub ForEachWorkbooks ()Dim wb Як робочий зошитДля кожного wb у робочих зошитахwb.ЗакритиНаступна вбEnd Sub

Цикличні форми

Ця процедура прокрутить кожну фігуру в Sheet1, видаливши кожну з них.

12345678 Sub ForEachShape ()Dim Shp у форміДля кожної ШП у аркушах ("Лист1"). ФігуриШП.ВидалитиДалі ШпEnd Sub

Цикличні діаграми

Ця процедура прокручуватиме кожну діаграму у Sheet1, видаляючи кожну.

12345678 Sub ForEachCharts ()Затемнити як ChartObjectДля кожного cht In Sheets ("Sheet1"). ChartObjectscht.DeleteНаступний чтEnd Sub

Цикл зведених таблиць

Ця процедура прокручуватиме кожну зведену таблицю у Sheet1, очищаючи кожну з них

12345678 Sub ForEachPivotTables ()Затемнити pvt як зведену таблицюДля кожного pvt у аркушах ("аркуш1"). Зведені таблиціpvt.ClearTableНаступний pvtEnd Sub

Цикличні таблиці

Ця процедура прокручуватиме кожну таблицю у Sheet1, видаляючи кожну.

12345678 Sub ForEachTables ()Dim tbl як ListObjectДля кожного tbl In Sheets ("Sheet1"). ListObjectstbl.ВидалитиДалі таблEnd Sub

Циклічні елементи в масиві

Ця процедура прокручуватиме кожен елемент у масиві, відображатиме кожне значення в полі повідомлень,

12345678910 Sub ForEachItemInArray ()Dim arrValue As VariantЗатемнити елемент як варіантarrValue = Масив ("Пункт 1", "Пункт 2", "Пункт 3")Для кожного елемента в arrValueПункт MsgBoxНаступний пунктEnd Sub

Цикличні числа

Ця процедура прокручуватиме кожне число в масиві, відображатиме кожне значення в полі повідомлень,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 To 3) As IntegerDim num як варіантarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Для кожного числа У arrNumberНомер поштової скринькиНаступний номерEnd Sub

Для кожного конструктора циклів

Приклади в цій статті були побудовані за допомогою Конструктор циклів в нашому Надбудова VBA: AutoMacro.

The Конструктор циклів дозволяє дуже легко генерувати код для обходу об'єктів. AutoMacro також містить багато інших Генератори коду, обширна Бібліотека кодів, і потужний Інструменти кодування.

Для кожного - Якщо

Ви також можете використовувати оператори If у циклах, щоб перевірити, чи відповідають об’єкти певним критеріям, виконуючи лише дії над тими об’єктами, які відповідають критеріям. Ось приклад циклу через кожну клітинку в діапазоні:

Для кожної клітини в діапазоні - Якщо

1234567891011121314 Sub If_Loop ()Яскрава клітина як діапазонДля кожної клітини в діапазоні ("A2: A6")Якщо Cell.Value> 0 ТодіCell.Offset (0, 1) .Value = "Позитивний"ElseIf Cell.Value <0 ТодіCell.Offset (0, 1) .Value = "Негативний"ІнакшеCell.Offset (0, 1) .Value = "Нуль"Закінчити ЯкщоНаступна клітинаEnd Sub

Для кожного загального прикладу

Закрийте всі книги

Ця процедура закриє всі відкриті книги, зберігаючи зміни.

123456789 Sub CloseAllWorkbooks ()Dim wb Як робочий зошитДля кожного wb у робочих зошитахwb.Закрити SaveChanges: = ПравдаНаступна вбEnd Sub

Сховати всі аркуші

Ця процедура приховає всі аркуші.

12345678 Sub HideAllSheets ()Затемнити як робочий аркушДля кожного ws у аркушахws.Visible = xlSheetHiddenНаступний wsEnd Sub

Показати всі аркуші

Ця процедура покаже всі робочі аркуші.

12345678 Sub UnhideAllSheets ()Затемнити як робочий аркушДля кожного ws у аркушахws.Visible = xlSheetVisibleНаступний wsEnd Sub

Захистіть усі аркуші

Ця процедура захистить усі робочі листи.

12345678 Sub ProtectAllSheets ()Затемнити як робочий аркушДля кожного ws у аркушахws.Protect Password: = "…"Наступний wsEnd Sub

Зняти захист з усіх аркушів

Ця процедура зніме захист з усіх аркушів.

12345678 Sub UnprotectAllSheets ()Затемнити як робочий аркушДля кожного ws у аркушахws.Unprotect Password: = "…"Наступний wsEnd Sub

Видалити всі форми на всіх аркушах

Ця процедура видалить усі фігури в книзі.

123456789101112 Sub DeleteAllShapesOnAllWorksheets ()Затемнений аркуш як робочий аркушDim Shp у форміДля кожного ws у аркушахДля кожного Shp У ws.ShapesШП.ВидалитиДалі ШпНаступний wsEnd Sub

Оновіть усі зведені таблиці

Ця процедура оновить усі зведені таблиці на аркуші.

12345678 Sub RefreshAllPivotTables ()Затемнити pvt як зведену таблицюДля кожного pvt у аркушах ("аркуш1"). Зведені таблиціpvt.RefreshTableНаступний pvtEnd Sub

Використання для кожного в Access VBA

Цикл "Для кожного" працює так само в Access VBA, як і в Excel VBA. Наступний приклад видалить усі таблиці в поточній базі даних.

123456789 Sub RemoveAllTables ()Dim tdf як TableDefDim dbs як база данихВстановити dbs = CurrentDbДля кожного tdf у dbs.TableDefsDoCmd.DeleteObject tdf.NameПетляВстановити dbs = нічогоEnd Sub

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave