Читаем VBA для чайников полностью

Данный пример не иллюстрирует, что вы можете использовать значения, возвращаемые свойствами или методами объекта, в условных операторах и других выражениях. Например, во внешнюю структуру With можно было бы добавить следующий фрагмент программного кода:

IntНовыйЦвет = InputBox (" Введите число, задающее " _

& "цвет первого объекта в блоке " & .Name)

If .Count > 12000

MsgBox "Да этот блок просто гигант!"

End If

Вообще-то, управляющем структурам VBA (группам операторов, предназначенных для управления потоком выполнения программы) посвящена глава 8, но одну из таких структур мы рассмотрим здесь, потому что она используется только с объектами. Как аналог идеи цикла For. .Loop, в VBA структура For Each. . .Next представляет множество операторов, относящихся ко всем объектам в некоторой коллекции. Правда, хотя обе структуры выглядят очень похоже, между ними есть существенные различия по сути, и For

Each. . . Next проще в использовании. Вот синтаксис:

For Each элемент In группа

(операторы для выполнения при каждом проходе цикла)

Next элемент

Ключевым различием в использовании For Each. . .Next и For. . .Next является то, что здесь вам не требуется указывать число повторений выполнения цикла- это за вас выяснит VBA. В операторе For Each с помощью переменной элемент определяется тип объекта в коллекции, а с помощью аргумента группа задается коллекция, с которой нужно работать.

Следующий простой пример работает в AutoCAD, где коллекция Blocks является коллекцией объектов Block и каждый объект Block содержит неограниченное число графических объектов типа Cone (конус) или 3DFace (трехмерная поверхность). В этом фрагменте программного кода всего лишь отображается имя каждого объекта Block из коллекции Blocks:

Dim objB As Block

For Each objB In Blocks

Debug.Print objB.Name

Next objB

Ясно, что этот пример мир не переворачивает, но вы должны видеть его потенциальную мощь. Структура For Each. . .Next может вызывать любую комбинацию действий, доступных после вызова методов и свойств объектов, входящих в коллекцию.

Когда вам нужна определенная игла в коробке с иглами, другие иглы вас не интересуют.

Чтобы выполнить определенные действия по отношению к одному конкретному объекту в коллекции, используйте внутри структуры For Each. . .Next оператор If. . .Then.

Когда условие If... Then обнаружит объект вашей мечты, дальше искать станет бессмысленно, и тогда быстрый выход из цикла обеспечит оператор Exit For.

Снова обратившись к коллекции Blocks из AutoCAD, рассмотрим следующий пример:

Dim objК As Block

For Each objK In Blocks

If objK.Name = "Ерунда"

objK.Delete

Exit For

End If

Next objK

В этом примере вложенная конструкция If. . . Then используется для того, чтобы обнаружить объект Block с именем "Ерунда" среди всех объектов Block в коллекции Blocks.

После того- и только после того- как нужный Block найден, выполняются операторы внутри структуры If... Then. "Выполняются" здесь относится, главным образом, к первому из операторов, который удаляет объект Block. Миссия завершена. Цикл больше не нужен, поэтому Exit For прерывает его, и программа может продолжить свою работу.

<p>Глава 13. Тонкости хранения данных: массивы и коллекции.</p>

В этой главе ...

~ Использование массивов для управления наборами элементов одного и того же типа

~ Многомерные массивы

~ Объект Collection как альтернатива массивам

~ Создание своих собственных типов данных для работы с информацией, состоящей из родственных данных различных типов

К этому моменту вы должны чувствовать себя уверенно при работе с переменными хранящими данные любых типов, - от обычных чисел и строк текста до сложных, имеющих мощный потенциал, объектов. Но бывает, что ни один из встроенных типов данных VBA разработчика не устраивает. Часто необходимо работать с некоторым набором однотипных данных как с единым целым. В таких случаях используются массивы - структурированные боксы для хранения множеств элементов данных одинакового типа.

Работать с множествами элементов различных типов позволяют объекты Collection (коллекции), которые создаются на основе соответствующего встроенного класса VBA, При некоторых ограничениях использование коллекций бывает целесообразнее, чем применение массивов.

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных