Најједноставнији тип петље у Екцел ВБА програмирању је Фор-Нект петља. Петља се контролише променљивом бројача, која почиње на једној вредности и зауставља се на другој вредности. Наредбе између изјаве Фор и Нект су изјаве које се понављају у петљи.
Фор-Нект пример
Следећи пример користи Фор-Нект петљу да сабере првих 1000 позитивних бројева. Променљива Тотал почиње као нула. Затим долази до петље. Променљива Цнт је бројач петље. Почиње као 1 и сваки пут се повећава за 1 кроз петљу. Петља се завршава када је Цнт 1.000.
Овај пример има само једну наредбу унутар петље. Ова изјава додаје вредност Цнт променљивој Тотал. Када се петља заврши, МсгБок приказује збир бројева.
Суб Адд Нумберс()
Дим Тотал Ас Доубле
Дим Цнт Ас Лонг
Укупно = 0
За Цнт = 1 до 1000
Укупно = Укупно + Цнт
Следећи Цнт
МсгБок Тотал
Енд Суб
Пошто је бројач петље нормална променљива, можете написати код да бисте променили његову вредност унутар блока кода између Фор и Нект изјава. Ово је, међутим, веома лоша пракса.
Фор-Нект примери са кораком
Можете да користите вредност корака да бисте прескочили неке вредности бројача у петљи Фор-Нект. Ево претходног примера, преписаног да се зброје само непарни бројеви између 1 и 1000:
Суб АддОддНумберс()
Дим Тотал Ас Доубле
Дим Цнт Ас Лонг
Укупно = 0
За Цнт = 1 до 1000 Корак 2
Укупно = Укупно + Цнт
Следећи Цнт
МсгБок Тотал
Енд Суб
Овог пута, Цнт почиње као 1, а затим поприма вредности од 3, 5, 7 итд. Вредност корака одређује како се повећава бројач. Приметите да се горња вредност петље (1000) заправо не користи јер ће највиша вредност Цнт бити 999.
Ево још једног примера који користи вредност корака 3. Ова процедура ради са активним листом и примењује светлосиво сенчење на сваки трећи ред, од реда 1 до реда 100.
Суб СхадеЕвериТхирдРов()
Дим и Ас Лонг
За и = 1 до 100, корак 3
Редови(и).Интериор.Боја = РГБ(200, 200, 200)
Затим сам
Енд Суб
Погледајте резултат покретања овог макроа.
Коришћење петље за примену сенчења позадине на редове.
Фор-Нект пример са наредбом Екит Фор
Фор-Нект петља такође може укључити један или више Екит Фор наредби унутар петље. Када ВБА наиђе на ову изјаву, петља се одмах завршава.
Следећи пример демонстрира наредбу Екит Фор. Ова рутина је процедура функције, намењена да се користи у формули радног листа. Функција прихвата један аргумент (променљиву под називом Стр) и враћа знакове лево од прве нумеричке цифре. На пример, ако је аргумент „КБР98З“, функција враћа „КБР“.
Функција ТектПарт(Стр)
Дим и Ас Лонг
ТектПарт = „“
За и = 1 до Лен(Стр)
Ако је Нумерички(средина(Стр, и, 1)) Онда
Изађи за
Иначе
ТектПарт = ТектПарт & Мид(Стр, и, 1)
Крај Ако
Затим сам
Енд Фунцтион
Петља Фор-Нект почиње са 1 и завршава се бројем који представља број знакова у низу. Код користи ВБА-ову Мид функцију да издвоји један знак унутар петље. Ако се пронађе нумерички карактер, извршава се наредба Екит Фор и петља се прерано завршава.
Ако знак није нумерички, он се додаје враћеној вредности (која је иста као назив функције). Једини пут када ће петља испитати сваки знак је да стринг прослеђен као аргумент не садржи нумеричке знакове.
Угнежђени пример Фор-Нект
Можете имати било који број исказа у петљи и угнездити Фор-Нект петље унутар других Фор-Нект петљи.
Следећи пример користи угнежђену петљу Фор-Нект за уметање случајних бројева у опсег ћелија од 12 редова по 5 колона. Приметите да рутина извршава унутрашњу петљу (петљу са бројачем редова) једном за сваку итерацију спољашње петље (петља са бројачем Цол). Другим речима, рутина извршава наредбу Целлс(Ров, Цол) = Рнд 60 пута.
Ове ћелије су попуњене коришћењем угнежђене Фор-Нект петље.
Суб ФиллРанге()
Дим Цол Ас Лонг
Дим Ров Ас Лонг
За Цол = 1 до 5
За ред = 1 до 12
Ћелије (Ров, Цол) = Рнд
Следећи ред
Следећи пуковник
Енд Суб
Следећи пример користи угнежђене Фор-Нект петље за иницијализацију тродимензионалног низа са вредношћу 100. Ова рутина извршава наредбу у средини свих петљи (наредба о додели) 1000 пута (10 * 10 * 10), сваки пут са различитом комбинацијом вредности за и, ј и к:
Суб НестедЛоопс()
Дим МиАрраи(10, 10, 10)
Дим и Ас Лонг
Дим ј Ас Лонг
Дим к Ас Лонг
За и = 1 до 10
За ј = 1 до 10
За к = 1 до 10
МиАрраи(и, ј, к) = 100
Следећи к
Следећи ј
Затим сам
' Остале изјаве иду овде
Енд Суб
Ево последњег примера који користи угнежђене Фор-Нект петље, са вредношћу Степ. Ова процедура креира шаховницу променом боје позадине наизменичних ћелија.
Коришћење петљи за креирање шаблона шаховнице.
Бројач редова се креће од 1 до 8. Конструкција Иф-Тхен одређује коју угнежђену Фор-Нект структуру користити. За редове са непарним бројем, Цол бројач почиње са 2. За редове са парним бројем, Цол бројач почиње са 1. Обе петље користе вредност корака од 2, тако да утиче на алтернативне ћелије. Два додатна исказа чине ћелије квадратним (баш као права шаховница).
Суб МакеЦхецкербоард()
Дим Р Ас Лонг, Ц Ас Лонг
За Р = 1 до 8
Ако ВорксхеетФунцтион.ИсОдд(Р) Онда
За Ц = 2 до 8, корак 2
Ћелије (Р, Ц). Унутрашњост. Боја = 255
Следећи Ц
Иначе
За Ц = 1 до 8, корак 2
Ћелије (Р, Ц). Унутрашњост. Боја = 255
Следећи Ц
Крај Ако
Следећи Р
Редови(“1:8”). Висина реда = 35
Колоне(“А:Х”).Ширина колоне = 6,5
Енд Суб