Искате ли да автоматизирате повтарящи се задачи в Excel с помощта на VBA? Научете как да използвате цикъла For Every за ефективно манипулиране на данни във вашите електронни таблици.

Циклите и VBA вървят заедно и има основателна причина. Когато работите с обекти на Microsoft Office като работни книги, работни листове и диапазони, циклите могат да ви помогнат да превключвате между всеки от тях с относителна лекота.

Макар повече или по-малко всички цикли на VBA да работят добре с обекти, цикълът "за всеки" е една от най-добрите опции за работа с колекции от обекти. Ако не сте запознати с Excel VBA и искате да овладеете цикъла за всеки, можете да научите бързо от някои от тези примери. Ето всичко, което трябва да знаете за този типичен цикъл.

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

Синтаксисът на цикъла за всеки е доста подобен на обичайния цикъл for в Excel VBA. Ето синтаксиса:

За всяко variable_name в object_collection

[изявление]

[изявление]

[изявление]

Следващо име_на_променлива

Цикълът започва с ключовата дума "за всеки"; можете да използвате всяко име на променлива, последвано от колекцията от обекти. Обектът в цикъла за всеки може да бъде клетки, диапазони, листове и дори работни книги. Такава е красотата на този цикъл; това ви дава гъвкавостта да работите с различни колекции на Excel.

instagram viewer

Цикълът преминава през всяка стойност на колекцията и съхранява препратката в дефинираното име на променлива. След изпълнение VBA изпълнява съхранените оператори в рамките на цикъла и преминава към следващия обект в колекцията ( следващия ключова дума е полезна тук). Нека разберем структурата на кода с основен пример.

Как да използвате цикъла за всеки в Excel VBA

Да предположим, че искате да отпечатате число в клетки от A1 до A10. Най-добрият подход е да използвате цикъла for each с функцията range и да оставите кода да свърши необходимото. Ето как можете да направите тази проста задача:

  1. Отворете редактора на VBA код, като натиснете Alt + F11.
  2. Вмъкнете модул, като щракнете върху Модул опция в рамките на Поставете раздел.
  3. Създайте подпрограма с помощта на командата sub() в прозореца на модула за редактор на код. Уверете се, че сте присвоили смислено име на подпрограмата. За този пример можете да използвате името за_всеки_цикъл.

Сега, когато основите са изчерпани, е време да започнете да пишете кода. В рамките на подпрограмата въведете следните команди:

Дим клетка като диапазон

За всяка клетка в Листи("Лист1").Обхват("A1: A10")

клетка.стойност = 10

Следваща клетка

Когато кодът се изпълни, ° С променлива ще съхранява стойността на A1. След това, докато преминава към оператора в рамките на цикъла, той оценява командата и въвежда стойност 10 в дефинираната клетка, т.е. клетка A1.

Накрая, докато се придвижва към ключовата дума Next, се премества към следващата стойност, т.е. клетка A2. Цикълът се изпълнява, докато достигне клетка A10. Това е крайният резултат:

Използване на цикъла с обекти: клетки, листове и работни книги

Excel има три основни типа обекти, с които работите редовно. Това са клетки, листове и работни книги. Ето как можете да използвате цикъла и с трите типа обекти.

Работа с клетки и цикли заедно

Да предположим, че искате да добавите стойност и някои условия за форматиране към диапазон от клетки в Sheet1. Като първа стъпка трябва да дефинирате условията в цикъла, последвани от командите за форматиране.

Въведете следния код в рамките на подпрограма.

Sub for_each_loop()

Dim c Като Обхват

За всеки c в листове ("Лист1").Обхват("A1: A10")

с ° С

.Стойност = 10

.Шрифт. Цвят = vbRed

.Шрифт. Получер = Вярно

.Шрифт. Зачертано = Вярно

Крайс

Следваща c

Край Под

The с е полезна, когато изпълнявате множество функции с един конкретен обект. Тъй като искате да изпълните поредица от задачи с променливата c, можете да ги комбинирате всички, като използвате функция with..end with.

Цикълът приравнява стойността на c към всяка стойност на клетка и въвежда стойността като 10. Освен това променя цвета на клетката на червено, удебелява стойността и я зачертава. След като завърши всички стъпки, той преминава към следващата дефинирана стойност в диапазона.

Използване на цикъла за контролни листове

Подобно на горния пример, можете да използвате цикъла за всеки, за да контролирате листове. Какво ще кажете за промяна на името на Sheet1 на Sheet3 с помощта на VBA?

Можете да използвате следния код, за да преименувате съществуващ работен лист в Excel с помощта на VBA:

Sub for_each_loop_sheets()

ЗавсекиshtвТази работна книга.Листи

Ако sht. Име = "Лист1" Тогава

sht. Име = "Лист3"

КрайАко

Следваща sht

Край Под

Кодът преминава през всеки лист в работната книга и проверява името на всеки лист. Ако срещне името Sheet1, то го променя на Sheet3. Той напредва през останалите листове, ако има такива, в работната книга. След като изпълнението на кода достигне последния лист, той излиза от цикъла и подпрограмата.

Сред някои други общи употреби можете обединете множество работни листове с помощта на VBA и актуализирайте съдържанието в един лист с помощта на цикли.

Превключвайте между работни книги с цикъла

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

Можете да използвате команди на VBA, за да добавите три нови работни книги и да затворите всички отворени заедно. Ето как можете да го направите:

Под loop_wrkbook()

Затъмнен работен тефтер като работна книга

Работни тетрадки.Добави

Работни тетрадки.Добави

Работни тетрадки.Добави

За всяка работна книга в работни тетрадки

работна книга.Близо

Следваща работна книга

Край Под

Горният код също ще затвори вашата работна книга с макроси; уверете се, че сте запазили вашите кодове, преди да стартирате този код.

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

Използване на вложен оператор IF с цикъла

Подобно на горния пример, можете да използвате оператор IF в рамките на цикъла, за да проверите за конкретни условия. Нека променим цвета на фона на клетката въз основа на стойностите на клетката.

Има няколко произволни числа в клетки A1:A20. Можете да напишете цикъл за преминаване през всяка дадена клетка в диапазона; ако стойността на клетката е по-малка от 10, цветът на клетката трябва да се промени на червен. Ако стойността на клетката надвишава 10, тя трябва да стане зелена. Използвайте следния код за тази цел:

Sub loop_w_if()

Dim c Като Обхват

За всеки c в листове ("Лист4").Обхват("A1: A20")

Ако° С.Стойност < 10 Тогава

° С. Интериор. Цветов индекс = 3

Друго: ° С. Интериор. Цветен индекс = 4

КрайАко

Следваща c

Край Под

Ето как изглежда изходът:

Използване на цикли в Excel VBA

Excel VBA не е ограничен само до цикъла за всеки. Има различни полезни цикли, които ви позволяват да изпълнявате различни функции с лекота. Сбогувайте се с обикновените ръчни задачи, тъй като циклите на VBA като for цикъла, do while и do until се намесват, за да улеснят живота ви.