Вход/Регистрация
VBA для чайников
вернуться

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

Шрифт:

Проверить идентичность двух ссылок на объекты можно с помощью оператора 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

  • Читать дальше
  • 1
  • ...
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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