Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

Dim objМойМалыш As Glide

Set objМойМалыш = ActivePresentation. Slides .Add 1, _

ppLayoutTextAndClipart

В иных случаях для создания объектов используются другие приемы. Вот несколько вариантов на выбор.

* Создание новой копии объекта, уже существующего в проекте.

* Использование объекта из другого приложения или компонента ActiveX (COM).

* Создание экземпляра объекта на основе класса, созданного вами в модуле класса.

В зависимости от ситуации, при этом используется либо ключевое слово New в объявлении переменной или операторе Set, либо функция Create Object. Здесь я не собираюсь объяснять, как конкретно используется такая техника - она относится к тонким вопросам программирования и обсуждается в главах 10 и 19. Я только обращаю ваше внимание на существование ключевого слова Mev,- и функции CreateObjеct с помощью которых создаются обычные объекты.

Раз уж вы собираетесь использовать переменные для хранения ссылок на объекты, наступит время, когда вы захотите выяснить, ссылается ли данная переменная на тот же объект, что и другая переменная или объектное выражение.

Проверить идентичность двух ссылок на объекты можно с помощью оператора Is. Значением соответствующего выражения будет True, если ссылки идентичны, и False, если ссылки указывают на разные объекты. Вот фрагмент программного кода, иллюстрирующий использование оператора Is:

Dim objObject l As Object, objOb]ect2 As Object

If objObjectl Is objObject2 Then

MsgBox "Это тот же самый объект!"

Else

MsgBox "Это разные объекты."

End If

С помощью оператора Is можно сравнить объектную переменную и с объектным выражением, например, так:

If objObiect3 Is ThisDocument.Pages(2).Shapes(3) Then

Обратите внимание, оператор Is (как и любой другой оператор) нельзя использовать для выяснения идентичности содержимого двух объектов.

Эффективная работа с объектами в программе

Для упрощения работы с объектами в программе в VBA можно использовать две многострочные программные конструкции, называемые операторами With и Each . . .Next.

Использование оператора With

И когда для ссылки на объект используется мнемоническая переменная с коротким именем, и когда используется вполне инструктивное объектное выражение, их приходится вводить снова и снова. Но, оказывается, даже этого можно избежать.

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

With objПолнаяОбъективность

.Name = "Опрос общественного мнения" ' установка свойства Name

.DisplayName ' вызов метода DisplayName

sngРегион = .Area ' выяснение значения свойства Area

intПодтасовка = .Rotate(60) ' вызов метода Rotate (Поворот)

' и сохранение возвращаемого им значения в переменной

End With

Как видите, конструкция With. . .End With может включать операторы, в которых читаются и устанавливаются свойства, вызываются методы. Обратите внимание на то, что данная конструкция не задает цикл - входящие в нее операторы выполняются только один раз.

Конструкции, использующие With, можно вкладывать одну в другую. Это удобно, когда нужно выполнить ряд действий и по отношению к некоторому объекту, и по отношению к одному из содержащихся в нем объектов. Пример предоставляет следующий фрагмент программного кода. В нем выполняются самые различные действия с объектом Block в AutoCAD. Во вложенной структуре With обрабатывается один из графических объектов, содержащихся в объекте Block.

Разобраться в деталях вам помогут комментарии.

With Block.Item("Монстр")

' Объект Block с именем "Монстр" делает следующее:

' переименовывает Block с помощью свойства Name

.Name = "Душечка"

' Выясняет число объектов в нем, с помощью свойства Count

intЧислоОбъектов = .Count

' Вызывает метод AddCircle

' для центра = 0 и для радиуса = 5

AddCircle (0#, 5#)

With.Item (1)

' эта вложенная структура With ссылается на первый

' графический объект в объекте Block

' графический объект перемещается с помощью метода Move

.Move (15, 20)

' изменяется свойство Color этого графического объекта

.Color = 221

End With

End With

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

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

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

If .Count > 12000

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

End If

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

Поделиться:
Популярные книги

На границе империй. Том 10. Часть 7

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 7

Андер Арес

Грехов Тимофей
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Андер Арес

Третий. Том 2

INDIGO
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 2

Я до сих пор князь. Книга XXII

Дрейк Сириус
22. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор князь. Книга XXII

Шайтан Иван 4

Тен Эдуард
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Шайтан Иван 4

Матабар VIII

Клеванский Кирилл Сергеевич
8. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар VIII

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Неучтенный элемент. Том 5

NikL
5. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 5

Кодекс Охотника. Книга VIII

Винокуров Юрий
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII

Кодекс Императора VI

Сапфир Олег
6. Кодекс Императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Императора VI

Технарь

Муравьёв Константин Николаевич
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Технарь

Хроники Тириса. Книга 1

Маханенко Василий Михайлович
1. Хроники Тириса
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
6.00
рейтинг книги
Хроники Тириса. Книга 1

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Газлайтер. Том 19

Володин Григорий Григорьевич
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 19