VBA за всеки пример (кратка справка)

Този урок ще ви покаже примери за използване на For Every Loop във VBA. Щракнете тук, за да научите повече за контурите като цяло.

За всеки цикъл

За всеки цикъл ви позволява да преминете през цикъл всеки обект в колекция:

  • Всички клетки в диапазон
  • Всички работни листове в работна книга
  • Всички отворени работни книги
  • Всички форми в работен лист
  • Всички елементи в масив
  • и още!

За всеки: Основни примери

Тези примери ще демонстрират как да настроите за всеки цикъл да циклично преминава през различни типове обекти.

Цикъл през клетки

Тази процедура ще премине през всяка клетка в обхват A1: A10, като настрои клетката на нейната права, равна на себе си.

12345678 Sub ForEachCell ()Dim Cell As RangeЗа всяка клетка в листове ("Sheet1"). Диапазон ("A1: A10")Cell.Offset (0, 1) .value = Cell.valueСледваща клеткаEnd Sub

Циклични листове

Тази процедура ще премине през всеки лист в работна книга, разкривайки всеки лист.

12345678 Sub ForEachSheets ()Затъмнете като работен листЗа всеки ws в таблициws.Visible = ВярноСледващ листEnd Sub

Превъртане през работни книги

Тази процедура ще премине през всяка работна книга и ще затвори всяка.

12345678 Sub ForEachWorkbooks ()Dim wb Като работна книгаЗа всяка wb в работни книгиwb.ЗатвориСледваща wbEnd Sub

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

Тази процедура ще премине през всяка форма в Sheet1, като ще изтрие всяка.

12345678 Sub ForEachShape ()Dim Shp като формаЗа всеки Shp In Sheets ("Sheet1"). ФормиShp.DeleteСледващ ШпEnd Sub

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

Тази процедура ще премине през всяка диаграма в Sheet1, като ще изтрие всяка.

12345678 Sub ForEachCharts ()Dim cht As ChartObjectЗа всеки cht In Sheets ("Sheet1"). ChartObjectscht.DeleteСледващ chtEnd Sub

Превъртане през обобщени таблици

Тази процедура ще премине през всяка обобщена таблица в Sheet1, изчиствайки всяка една

12345678 Sub ForEachPivotTables ()Затъмнете pvt като обобщена таблицаЗа всеки pvt в таблици ("Sheet1"). Обобщени таблициpvt.ClearTableСледващ pvtEnd Sub

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

Тази процедура ще премине през всяка таблица в Sheet1, като ще изтрие всяка.

12345678 Sub ForEachTables ()Dim tbl като ListObjectЗа всеки tbl In Sheets ("Sheet1"). ListObjectstbl.DeleteСледващата tblEnd Sub

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

Тази процедура ще премине през всеки елемент в масив, ще покаже всяка стойност в съобщение,

12345678910 Sub ForEachItemInArray ()Dim arrValue като вариантЗатъмняване на елемент като вариантarrValue = Array ("Елемент 1", "Позиция 2", "Позиция 3")За всеки елемент в arrValueMsgBox елементСледващ елементEnd Sub

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

Тази процедура ще премине през всяко число в масив, ще покаже всяка стойност в съобщение,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 To 3) As IntegerDim num като вариантarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30За всеки номер In arrNumberMsgbox NumСледващ брEnd Sub

За всеки конструктор на контури

Примерите в тази статия са създадени с Loop Builder в нашата Добавка VBA: AutoMacro.

The Loop Builder улеснява генерирането на код за циклично преминаване на обекти. AutoMacro съдържа и много други Генератори на кодове, обширен Библиотека с кодове, и мощен Инструменти за кодиране.

За всеки - Ако

Можете също да използвате If Statements в рамките на Loops, за да проверите дали обектите отговарят на определени критерии, като извършвате само действия върху тези обекти, които отговарят на критериите. Ето пример за циклично преминаване през всяка клетка в диапазон:

За всяка клетка в обхвата - Ако

1234567891011121314 Sub If_Loop ()Dim Cell като диапазонЗа всяка клетка в обхвата ("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.Close SaveChanges: = ИстинаСледваща wbEnd 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.ShapesShp.DeleteСледващ ШпСледващата wsEnd Sub

Обновете всички обобщени таблици

Тази процедура ще опресни всички обобщени таблици на лист.

12345678 Sub RefreshAllPivotTables ()Затъмнете pvt като обобщена таблицаЗа всеки pvt в листове ("Sheet1"). Обобщени таблициpvt.RefreshTableСледващ pvtEnd Sub

Използване За всеки в Access VBA

Цикълът For For работи по същия начин в Access VBA, както в Excel VBA. Следващият пример ще премахне всички таблици в текущата база данни.

123456789 Sub RemoveAllTables ()Dim tdf As TableDefDim dbs като база данниЗадайте dbs = CurrentDbЗа всеки tdf в dbs.TableDefsDoCmd.DeleteObject tdf.NameЦикълЗадайте dbs = НищоEnd Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave