Овај водич ће вам показати примере коришћења Фор Евери Лооп у ВБА. Кликните овде да бисте сазнали више о петљама уопште.
За сваку петљу
Фор Евери Лооп вам омогућава да прођете кроз петљу сваки објекат у колекцији:
- Све ћелије у опсегу
- Сви радни листови у радној свесци
- Све отворене радне свеске
- Сви облици на радном листу
- Све ставке у низу
- и још!
За сваки: Основни примери
Ови примери ће показати како да подесите петље За сваку петљу да пролазе кроз различите врсте објеката.
Петља кроз ћелије
Ова процедура ће проћи кроз сваку ћелију у опсегу А1: А10, постављајући ћелију на њено право једнаку са собом.
12345678 | Суб ФорЕацхЦелл ()Дим Целл Ас РангеЗа сваку ћелију у листовима ("Лист1"). Распон ("А1: А10")Целл.Оффсет (0, 1) .валуе = Целл.валуеСледећа ћелијаЕнд Суб |
Прођите кроз листове
Ова процедура ће проћи кроз сваки лист у радној свесци, откривајући сваки лист.
12345678 | Суб ФорЕацхСхеетс ()Дим вс Ас ВорксхеетЗа сваки вс у листовимавс.Висибле = ТачноСледећи листЕнд Суб |
Прођите кроз радне свеске
Ова процедура ће проћи кроз сваку радну свеску, затварајући сваку.
12345678 | Суб ФорЕацхВоркбоокс ()Дим вб Као радна свескаЗа сваку вб у радним свескамавб.ЦлосеНект вбЕнд Суб |
Петље кроз облике
Ова процедура ће проћи кроз сваки облик у Схеет1, бришући сваки.
12345678 | Суб ФорЕацхСхапе ()Дим Схп Ас СхапеЗа сваки Схп Ин Схеетс ("Схеет1"). ОблициСхп.ДелетеСледећи ШпЕнд Суб |
Лооп Тхроугх Цхартс
Ова процедура ће проћи кроз сваки графикон у листу 1, брисањем сваког.
12345678 | Суб ФорЕацхЦхартс ()Дим цхт Ас ЦхартОбјецтЗа сваки цхт Ин Схеетс ("Схеет1"). ЦхартОбјецтсцхт.ДелетеНект цхтЕнд Суб |
Прођите кроз изведене табеле
Ова процедура ће проћи кроз сваку изведену табелу у Схеет1, бришући сваку
12345678 | Суб ФорЕацхПивотТаблес ()Дим пвт Ас ПивотТаблеЗа сваки пвт у табелама („лист1“). Заокретне табелепвт.ЦлеарТаблеНект пвтЕнд Суб |
Петље кроз табеле
Ова процедура ће проћи кроз сваку табелу у листу 1, бришећи сваку.
12345678 | Суб ФорЕацхТаблес ()Дим тбл Као ЛистОбјецтЗа сваки тбл Ин Схеетс ("Схеет1"). ЛистОбјецтстбл.ДелетеНект тблЕнд Суб |
Петље кроз ставке у низу
Ова процедура ће проћи кроз сваку ставку у низу, приказати сваку вредност у пољу за поруке,
12345678910 | Суб ФорЕацхИтемИнАрраи ()Дим аррВалуе Ас ВариантПригуши ставку као варијантуаррВалуе = Поље ("Ставка 1", "Ставка 2", "Ставка 3")За сваку ставку у аррВалуеМсгБок ИтемСледећа ставкаЕнд Суб |
Петља кроз бројеве
Ова процедура ће проћи кроз сваки број у низу, приказати сваку вредност у пољу за поруке,
12345678910111213 | Суб ФорЕацхНумберИнНумберс ()Дим аррНумбер (1 То 3) Ас ИнтегерДим нум Ас ВариантаррНумбер (1) = 10аррНумбер (2) = 20аррНумбер (3) = 30За сваки број У аррНумберМсгбок НумНект нумЕнд Суб |
За сваког градитеља петљи
Примери у овом чланку направљени су помоћу Лооп Буилдер у нашем ВБА додатак: АутоМацро.
Тхе Лооп Буилдер чини веома лаким генерисање кода за пролаз кроз објекте. АутоМацро садржи и многе друге Генератори кодова, опсежан Библиотека кодова, и моћан Алати за кодирање.
За сваку - Ако
Такође можете користити Иф наредбе унутар петљи за тестирање да ли објекти задовољавају одређене критеријуме, само извођење радњи на оним објектима који испуњавају критеријуме. Ево примера проласка кроз сваку ћелију у опсегу:
За сваку ћелију у домету - Ако
1234567891011121314 | Суб Иф_Лооп ()Дим Целл ас РангеЗа сваку ћелију у домету ("А2: А6")Ако је Целл.Валуе> 0 ТадаЦелл.Оффсет (0, 1) .Валуе = "Позитивно"ЕлсеИф Целл.Валуе <0 ЗатимЦелл.Оффсет (0, 1) .Валуе = "Негативно"ИначеЦелл.Оффсет (0, 1) .Валуе = "Нула"Крај АкоСледећа ћелијаЕнд Суб |
За сваки уобичајени пример
Затворите све радне свеске
Ова процедура ће затворити све отворене радне свеске, чувајући измене.
123456789 | Суб ЦлосеАллВоркбоокс ()Дим вб Као радна свескаЗа сваку вб у радним свескамавб.Цлосе СавеЦхангес: = ТачноНект вбЕнд Суб |
Сакриј све табеле
Ова процедура ће сакрити све радне листове.
12345678 | Суб ХидеАллСхеетс ()Дим вс Ас ВорксхеетЗа сваки вс у листовимавс.Висибле = клСхеетХидденНект всЕнд Суб |
Откриј све табеле
Ова процедура ће открити све радне листове.
12345678 | Суб УнхидеАллСхеетс ()Дим вс Ас ВорксхеетЗа сваки вс у листовимавс.Висибле = клСхеетВисиблеНект всЕнд Суб |
Заштитите све листове
Ова процедура ће заштитити све радне листове.
12345678 | Суб ПротецтАллСхеетс ()Дим вс Ас ВорксхеетЗа сваки вс у листовимавс.Протецт Пассворд: = "…"Нект всЕнд Суб |
Уклоните заштиту са свих табела
Ова процедура ће уклонити заштиту са свих радних листова.
12345678 | Под УнпротецтАллСхеетс ()Дим вс Ас ВорксхеетЗа сваки вс у листовимавс.Унпротецт Пассворд: = "…"Нект всЕнд Суб |
Избришите све облике на свим радним листовима
Овај поступак ће избрисати све облике у радној свесци.
123456789101112 | Суб ДелетеАллСхапесОнАллВорксхеетс ()Затамњени лист као радни листДим Схп Ас СхапеЗа сваки вс у листовимаЗа сваки Схп У вс.СхапесСхп.ДелетеСледећи ШпНект всЕнд Суб |
Освежите све изведене табеле
Ова процедура ће освежити све изведене табеле на листу.
12345678 | Суб РефресхАллПивотТаблес ()Дим пвт Ас ПивотТаблеЗа сваки пвт у табелама („Лист1“). Заокретне табелепвт.РефресхТаблеНект пвтЕнд Суб |
Коришћење За сваког у Аццесс ВБА
Петља Фор Еацх функционише на исти начин у Аццесс ВБА као и у Екцел ВБА. Следећи пример ће уклонити све табеле у тренутној бази података.
123456789 | Суб РемовеАллТаблес ()Дим тдф Ас ТаблеДефДим дбс као база податакаСет дбс = ЦуррентДбЗа сваки тдф У дбс.ТаблеДефсДоЦмд.ДелетеОбјецт тдф.НамеЛоопПоставите дбс = НиштаЕнд Суб |