Excel VBA Loops

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

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

Ако не сте използвали VBA Script преди това, можете просто да отворите работна книга на excel и да натиснете Alt + F11 . Той ще отвори VBA проект.

Нека се задълбочим вътре.

Да предположим, че искахме да отпечатваме 1 до 10 числа на един кадър. Можем да го направим със следния код.

Код:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Ако можете да преминете през кода бързо, добавих Debug.Print едно по едно, за да отпечатате числа от 1 до 10. След пускане на кода можем да видим изхода в Незабавен прозорец. За да отворите незабавен прозорец, натиснете Ctrl + G навсякъде в Excel.

Изпълнете кода с помощта на клавиша F5 или ръчно, както е показано на снимката по-долу. Така че нека проверим изхода за този код.

Видове VBA контури в Excel

Като програмист, никога няма да имате желание да пишете повтарящи се редове, които са на път да дадат същия резултат. Бихте искали да го автоматизирате. Следователно ще видим различни VBA контури на Excel и как да ги използваме, използвайки някои примери.

Въведете номер 1 - VBA за следващ цикъл

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

код:

 Sub loop1 () За i = 1 до 10 клетки (i, 1) .Value = i Next i End Sub 

Този код дава абсолютно същия изход като предишния. Най-забележителното в този код обаче е намаляването на редица редове. Намалихме 12-редния код до просто код с 5 реда.

В този код, loop1 е името на макроса. Цикълът for започва от i = 1, той отпечатва стойността на i (т.е. 1) под excel клетка и при Next, отново преминава към началото на цикъла for и прави i = 2 отпечатва стойността на i (т.е. 2) в следващата клетка и т.н., докато кодът достигне последната си стойност т.е.

Изпълнете кода с помощта на клавиша F5 или ръчно. Така че можете да видите резултата както по-долу.

Тип # 2 - VBA за цикъл със стъпка напред

Както видяхте в предишния пример на цикъл, имах увеличение с 1 стъпка. По подразбиране стойността на стъпката се счита за 1 в VBA. Възможно ли е обаче да зададем своя крачка? Да предположим, че искате да видите само четните числа между 1 до 20. Как може да стане?

Както подсказва общата математика, числата, които са на разстояние 2 един от друг (Започвайки от първо четно число 2), се считат за четни числа, нали?

Ще приложим същата логика. Вижте по-долу код за справка.

Код:

 Sub ForwardStep () За i = 2 до 20 Стъпка 2 клетки (i, 1) .Value = i Next i End Sub 

За стойностите, започващи от 2, този цикъл дава възможност за отпечатване на 2, 4, 6, 8 … 20 в следващите клетки excel. Стъпка 2 изрично е дала, така че започвайки от номер 2, кодът ще премине към следващото число със стъпка 2 (т.е. 4 ще бъдат отпечатани) и така нататък. Този процес ще продължи, докато се появят 20 в клетка. Щом се появи 20 в клетка, цикълът ще бъде прекратен автоматично.

Изпълнете кода с помощта на клавиша F5 или ръчно. Така че можете да видите резултата както по-долу.

Тип # 3 - VBA за контур с стъпка назад

По същия начин, както при цикъл с стъпка напред, можем да използваме за цикъл с стъпка назад. Например, какво, ако зададем стъпка назад като -2 и пуснем a за цикъл от стойностите 20 до 2?

Ще видим как работи.

код:

 Sub BackwardStep () За i = 20 До 2 Стъпка -2 Debug.Print i Next i End Sub 

След стартиране на кода можем да видим изхода в незабавен прозорец. За да отворите незабавен прозорец, натиснете Ctrl + G навсякъде в Excel.

Тъй като сме дали начална точка на цикъла като 20 и крайна точка като 2 със стъпка -2, цикълът започва от 20 и в стъпка -2 преминава към следващото число, което е -18 и така нататък. Щом цикълът достигне стойност 2, той се прекратява автоматично и последната стойност ще бъде отпечатана като 2.

Тип # 4 - VBA вложен за цикъл

Можем също да Nest the цикъл. Не се препоръчва обаче да се внасят в един и същи цикъл повече от три пъти в код (Може да се счита за грешка в логиката).

Моля, вижте кода по-долу за вложен за цикъл.

Код:

 Под NestedFor () За i = 1 до 10 за j = 1 до 2 клетки (i, j) .Value = i * j Следващ j Следващ i край Sub 

В този пример, при i = 1 и j = 1, макрос поставя стойността на i * j (1 * 1) в пресечна точка на ред i = 1 и колона j = 1 (т.е. клетка A1) и отива за следващата стойност на j (2) поддържане i = 1. В пресечната точка на ред i = 1 и колона j = 2 (т.е. клетка B1) макрос въвежда стойността на I * j (1 * 2). Loop игнорира следващата стойност на j, тъй като j варира само от 1 до 2 и преминава към следващата стойност на i.

За i = 2 и j = 1, макросът въвежда стойността на i * j (2 * 1) в пресечната точка на 2- ри ред и 1- ва колона (т.е. клетка A2) и продължава. До обхвата на i и j.

Изпълнете кода с помощта на клавиша F5 или ръчно, както е показано на снимката по-долу. Така че можете да видите изхода както по-долу.

Тип № 5 - VBA Do while Loop

Do while loop е един от най-интересните цикли в VBA. Тя ви позволява да проверите състоянието и да напишете изхода (DO), когато е изпълнено определено условие или набор от условия (или условието / и е / са ИСТИНСКИ).

Вижте кода по-долу:

Код:

 Sub do_timeloop () Dim i As Integer i = 1 Do докато i <= 10 клетки (i, 1) .Value = i * ii = i + 1 Loop End Sub 

Този цикъл работи както по-долу:

За стойностите на i от 1 (първоначално i = 1) до 10, тя изчислява, i * i (т.е. стойност на квадрат за всяко цяло число на i) и я въвежда съответно под клетка 1 до 10. Резултатът не е нищо друго освен стойностите в квадрат от цели числа от 1 до 10. Моля, разгледайте по-подробно Loop под този код. Задължително е да го добавите, в противен случай системата ще изведе грешка.

Изпълнете кода с помощта на клавиша F5 или ръчно. Така че можете да видите резултата както по-долу.

Това са някои от примерите на VBA контур, които се опитах да се грижа в тази статия. Надявам се, че ще бъде достатъчно точно, за да изчистите някои концепции.

Неща, които трябва да запомните

  • Докато използвате за цикъл с обратна стъпка, уверете се, че началният ви номер трябва да е по-голям от крайния ви номер и обратно.
  • Под Do, докато цикъл, уверете се, че използвате Loop, за да затворите работата, преди да прекратите целия VBA код. В противен случай системата хвърля грешка в компилатора със съобщение за грешка „Do Without Loop“.

Можете да изтеглите този шаблон на VBA Loops Excel тук - VBA Loops Excel шаблон

Препоръчителни статии

Това е ръководство за Excel VBA Loops. Тук обсъдихме Видове Excel VBA контури и как да ги използвате заедно с някои практически примери и изтеглящ се шаблон на excel. Можете да разгледате и другите ни предложени статии -

  1. VBA функция в Excel
  2. VBA VLOOKUP функция
  3. Клавишни комбинации на Excel
  4. Excel Percentile Formula

Категория: