ВБА подржава још једну врсту петље у програму Екцел 2016: петљу кроз сваки објекат у колекцији објеката. Колекција се, као што можда знате, састоји од више објеката истог типа. На пример, Екцел има колекцију свих отворених радних свеска (колекција Воркбоокс), а свака радна свеска има колекцију радних листова (колекција Ворксхеетс).
Када треба да прођете кроз сваки објекат у колекцији, користите структуру Фор Евери-Нект. Следећи пример пролази кроз сваки радни лист у активној радној свесци и брише радни лист ако је празан:
Суб ДелетеЕмптиСхеетс()
Дим ВкСхт Ас Ворксхеет
Апплицатион.ДисплаиАлертс = Фалсе
За сваки ВкСхт у АцтивеВоркбоок.Ворксхеетс
Ако је ВорксхеетФунцтион.ЦоунтА(ВкСхт.Целлс) = 0 Онда
ВкСхт.Делете
Крај Ако
Следећи ВкСхт
Апплицатион.ДисплаиАлертс = Тачно
Енд Суб
У овом примеру, променљива ВкСхт је променљива објекта која представља сваки радни лист у радној свесци. Ништа није посебно у вези са именом променљиве ВкСхт; можете користити било које име променљиве које желите.
Код се креће кроз сваки радни лист и одређује празан лист пребројавањем ћелија које нису празне. Ако је тај број нула, лист је празан и брише се. Обратите пажњу да је поставка ДисплаиАлертс искључена док петља ради своје. Без те изјаве, Екцел искаче упозорење сваки пут када ће лист бити обрисан.
Ако су сви радни листови у радној свесци празни, добићете грешку када Екцел покуша да избрише једини лист. Обично бисте написали код за решавање те ситуације.
Ево још једног примера за сваки следећи. Ова процедура користи петљу за сакривање свих радних листова у активној радној свесци осим активног листа.
Суб ХидеСхеетс()
Дим Схт Ас Ворксхеет
За сваки Схт у АцтивеВоркбоок.Ворксхеетс
Ако Схт.Наме <> АцтивеСхеет.Наме Тхен
Схт.Висибле = клСхеетХидден
Крај Ако
Следећи Схт
Енд Суб
Процедура ХидеСхеетс проверава име листа. Ако није исто као име активног листа, лист је сакривен. Имајте на уму да својство Висибле није Боолеан. Ово својство заправо може да преузме било коју од три вредности, а Екцел обезбеђује три уграђене константе. Ако вас занима трећа могућност (клВериХидден), проверите систем помоћи.
Оно што се сакрије мора на крају постати нескривено, па ево макроа који открива све радне листове у активној радној свесци:
Суб УнхидеСхеетс()
Дим Схт Ас Ворксхеет
За сваки Схт у АцтивеВоркбоок.Ворксхеетс
Схт.Висибле = клСхеетВисибле
Следећи Схт
Енд Суб
Није изненађујуће што можете да креирате угнежђене петље Фор Евери-Нект. Процедура ЦоунтБолд петља кроз сваку ћелију у коришћеном опсегу на сваком радном листу у свакој отвореној радној свесци и приказује број ћелија које су форматиране подебљаним:
Суб Цоунт Болд()
Дим ВБоок Ас Воркбоок
Дим ВСхеет као радни лист
Дим Целл Ас Ранге
Дим Цнт Ас Лонг
За сваку књигу у радним свескама
За сваки ВСхеет у ВБоок.Ворксхеетс
За сваку ћелију у ВСхеет.УседРанге
Ако је Целл.Фонт.Болд = Тачно, онда је Цнт = Цнт + 1
Следећа ћелија
Следећи ВСхеет
Следећа књига
МсгБок Цнт & „пронађене подебљане ћелије“
Енд Суб