Цикли на VBA - Списък с най-добрите 4 вида цикли (с примери)

Съдържание

Цикли на Excel VBA

Циклите обикновено се използват във всички програмни езици, където има определена нужда или критерии, когато се нуждаем от определен код, за да стартираме определено време, използваме цикли за тези кодове, сега има много видове цикли във VBA като Do докато, Do до, За цикъл и За всеки цикъл, тези цикли помагат на кода да се изпълни, докато условието не бъде изпълнено.

Позволете ми да направя това изявление в самото начало. „Ако искате да овладеете във VBA, трябва да завършите основната концепция за цикли в макросите на VBA.“

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

Списък с най-добрите 4 вида VBA цикли

  1. За Next Loop
  2. За всеки цикъл
  3. Направете докато цикъла
  4. Правете до Loop

Нека да разгледаме всеки от тези типове в детайли.

Тип # 1 - За следващ цикъл

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

Пример

Например, ако искате да вмъкнете серийни номера от 1 до 10, по-долу е традиционният начин за вмъкване на серийни номера.

Подсериен номер ()

Обхват (“A1”). Стойност = 1
обхват (“A2”). Стойност = 2
обхват (“A3”). Стойност = 3
обхват (“A4”). Стойност = 4
обхват (“A5”). Стойност = 5
Обхват (“A6”). Стойност = 6
Обхват (“A7”). Стойност = 7
Обхват (“A8”). Стойност = 8
Обхват (“A9”). Стойност = 9
Обхват (“A10”). Стойност = 10

Крайна под

Изглежда добре, нали? Но проблемът тук е само 10 пъти, когато трябва да изпълним тази задача. Но представете си какво, ако искате да вмъкнете 100 или 1000 числа, можете ли да напишете кода 100 или 1000 реда. Невъзможно е и точно тук е полезна красотата на цикъла For Next.

Стъпка 1: Отворете макроса и декларирайте променливата i като Integer.

Sub Insert_Serial_Number ()

Dim i As Integer

Крайна под

Стъпка 2: Сега отворете For Loop . Тук споменете началото и края на цикъла, като използвате променливата i.

Стъпка 3: Сега напишете кода, който искате да изпълните. Трябва да вмъкнем числа от 1 до 10 в клетки от A1 до A10. Вместо да прилагате метода Range, приложете метода Cells.

Той иска номера на реда, тъй като първоначално вече сме декларирали променливата i като цяло число. Неговата стойност е 1. Така че говорим за аз , че номерът ви ред и 1, както си номер колона.

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

Сега натиснете клавиша F8, за да стъпвате един по един ред. Натиснете F8, докато достигне цикъл For.

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

Сега натиснете още веднъж клавиш F8 и поставете курсор върху i & сега стойността е 1.

Така че стойностите на i навсякъде сега са равни на 1. „ Клетки (I, 1) .value = I“ означава Клетки (1, 1) .value = 1.

Натиснете клавиша F8 и вижте стойността в клетка A1. Трябва да видите 1 в клетка A1.

Сега, ако натиснете клавиша F8, той ще се върне още веднъж към цикъла For, защото крайният лимит на променливата i е 10. Този път стойността I ще бъде 2.

За цикъл Next ще се изпълнява 10 пъти и ще се вмъкват серийни номера от 1 до 10

Тип # 2 - За всеки цикъл

За всеки цикъл във VBA е за цикъл през колекция от обекти. За следващия цикъл циклично преминава през клетките и изпълнява задачата, а за всеки цикъл циклира през обекти като работни листове, диаграми, работни книги, фигури.

Използвайки този цикъл, можем да преминем през всички работни листове и да изпълним някои задачи. Например, можете да преминете през всички работни листове, за да скриете и разкриете работни листове.

Пример # 1

Ако искате да скриете всички работни листове с изключение на листа, върху който работите, как ще го направите? Ако имате 20 листа в работната книга, това отнема много време. Но с FOR EACH loop можем да изпълним тази задача.

Имам 5 листа и искам да скрия всички листове, с изключение на листа „Основен“ по-долу кодът ще ми свърши задачата.

Sub To_Hide_All_Sheet ()

Затъмнете Ws като работен лист

За всеки Ws в ActiveWorkbook.Worksheets

Ако Ws.Name „Основно“ Тогава
Ws.Visible = xlSheetVeryHidden
End Ако

Следващ Ws

Крайна под

Пример # 2

Ако искате да покажете всички скрити листове, тогава кодът по-долу ще ви свърши работа.

Sub To_UnHide_Specific_Sheet ()

Затъмнете Ws като работен лист

За всеки Ws в ActiveWorkbook.Worksheets

Ws.Visible = xlSheetVisible

Следващ Ws

Крайна под

Тип # 3 - Do While Loop

Цикълът Do While изпълнява задачата, докато даденото условие е TRUE и след като условието стане FALSE, то ще спре да се повтаря. За разлика от другите два цикъла, Do While тества състоянието в края на цикъла, а не в началото.

Ще ви покажа примера за вмъкване на серийни номера с цикъл Do While.

Под Do_While_Example ()

Dim i As Integer

i = 1
Направете, докато i <11
клетки (i, 1). Стойност = i
i = i + 1
Loop

Крайна под

Горният цикъл ще работи, докато i е по-малко от 11 и продължава да вмъква серийни номера. В момента, в който стана по-голям от 11, той ще спре да се цикли.

Тип # 4 - Do Do Loop

За разлика от цикъла Do While, цикълът Do Do не работи, докато условието е TRUE; по-скоро той се завърта, докато условието не е FALSE. Например погледнете кода по-долу.

Под Do_Until_Example ()

Dim i As Integer

i = 1
Правете, докато i = 11
клетки (i, 1). Стойност = i
i = i + 1
Цикъл

Крайна под

Единствената разлика между цикъла Do While & Do Do е посоченият от нас оператор. В Do, Докато споменахме, че цикълът е изпълнен, докато i е по-малко от (<), 11, но в цикъл do do споменахме да изпълняваме цикъла, докато i е равно на (=) до 11.

Неща за запомняне

  • Има по-усъвършенстван пример за цикъл на VBA на Excel, но ние ще разгледаме подробно всеки от тях в отделна статия.
  • Всеки цикъл е за обектни променливи.
  • Въпреки че Do While & Do Do изглежда изглежда същото, споменаването на състоянието е много важно.
  • Циклите са много важни понятия.

Интересни статии...