|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Связь между объектами. Создание объектов. Использование и объявление переменных для объектовКроме использования и создания объектов в VBA можно организовать коммуникационную связь с другими приложениями и управлять их объектами из разрабатываемого приложения. Возможность совместного использования данных приложениями - одна из ключевых в операционной системе Windows. VBA предоставляет большую гибкость при организации взаимодействия с другими приложениями. Самый простой способ создать объект - щелкнуть два раза на элементе управления в Панели управления. Однако для реализации всех возможностей объектов, доступных в VBA и из других приложений, следует использовать программные возможности VBA для создания объектов во время выполнения: Можно создавать ссылки на объект с помощью переменных Можно создавать собственные объекты с самого начала с помощью модулей классов Можно создавать собственные наборы с помощью объекта collection (Набор.) Переменная может ссылаться на объекты. Присваивание объектов переменным выгодно по тем же причинам, что и присваивание переменным значений: Имена переменных, как правило, короче и их легче запомнить, чем значения, которые они содержат (или, как в данном случае, объекты, на которые они ссылаются) Во время выполнения кода переменные можно изменять, организуя ссылки на другие объекты Ссылка на переменную, содержащую объект, более эффективна, чем постоянная ссылка на сам объект Использование переменной для объекта аналогично использованию обычной переменной, но с одним дополнительным шагом - присваиванием объекта переменной: Сначала ее объявляют: Dim variable As class Затем ей присваивают объект: Set variable = object Переменные для объектов объявляют так же, как и другие переменные, с помощью операторов Dim, ReDim, Static, Private или public. Единственное отличие заключается в наличии необязательного ключевого слова New (Новый) и параметра class (класс), они обсуждаются ниже в этой главе. Синтаксис задания переменной для объекта следующий: (Dim | ReDim | Static | Private | Public} variable As [New] class Например, можно объявить переменную для объекта, которая ссылается на форму с именем frmMain в приложении: Dim FormVar As New frmMain ' Объявление объектной переменной типа frmMain. Можно также объявить переменную, которая может ссылаться на любую форму в приложении: Dim anyForm As Form ' Переменная родовой формы. Подобным же образом можно объявить переменную для ссылки на любое текстовое поле в приложении: Dim anyText As TextBox ' Может ссылаться на любое текстовое поле Можно объявлять переменные для объекта, которые ссылаются на элемент управления любого вида: Dim anyControl As Control ' Переменная родового элемента управления. Заметим, что можно объявлять переменную формы, которая будет ссылаться на конкретные формы в приложении, но нельзя объявить переменную элемента управления, которая будет ссылаться на конкретный элемент управления. Можно объявлять переменные, которые ссылаются на определенный тип элемента управления, например TextBox или ListBox, но не на конкретный элемент данного типа, например txtEntry или Listl. Но можно присвоить определенный элемент управления переменной соответствующего типа. Например, для формы со списком, имеющим имя istSample, можно написать код: Dim objDemo As ListBox Set objDemo = IstSample Назначение объектов переменным Назначить или присвоить объект переменной можно оператором Set: Set variable = object Этот оператор следует применять, если необходимо, чтобы переменная ссылалась на какой-то объект. Иногда можно использовать переменные для объектов, иногда переменные для определенного типа элементов управления, просто для того, чтобы сократить размер набираемого кода. Например: If frmAccountDisplay.txtAccountBalance.Text < 0 Then FrmAccountDisplay.txtAccountBalance.BackColor = 0 _ FrmAccountDisplay.txtAccountBalance.ForeColor = 255 End If Этот код можно значительно сократить, если применить переменную для элемента управления: Dim Bal As TextBox Set Bal = frmAccountDisplay.txtAccountBalance If Bal.Text < 0 Then Bal.BackColor = 0 Bal.ForeColor = 255 End If Типы конкретных и родовых объектов Переменные для конкретных объектов (specific object variables) должны ссылаться на один конкретный тип объекта или класса. Переменная для конкретной формы может ссылаться только на одну форму в приложении (хотя она может ссылаться на одну форму из множества экземпляров этой формы). Точно так же переменная для конкретного элемента управления может ссылаться только на один конкретный тип элемента управления в приложении, например, TextBox или ListBox. Чтобы посмотреть, как это делается, откроем новый проект и поместим на форму поле ввода. Добавим следующий код к форме: Private Sub Form_Click() Dim anyText As TextBox Set anyText = Textl anyText.Text = "Hello" End Sub Запустим приложение и щелкнем кнопкой мыши на форме. Свойство Text (Текст) поля ввода изменится на "Hello". Переменные для родовых объектов (generic object variables) могут ссылаться на один из многих конкретных типов объектов. Переменная для родовой формы, например, может ссылаться на любую форму в приложении; переменная для родового элемента управления может ссылаться на любой элемент управления на любой форме в приложении. Чтобы посмотреть, как это делается, откроем новый проект и поместим несколько элементов управления рамкой, меткой и кнопок управления на форму в произвольном порядке. Добавим следующий код к форме: Private Sub Form_Click() Dim anyControl As Control Set anyControl = Formi.Controls(3) anyControl.Caption = "Hello" End Sub Запустим приложение и щелкнем кнопкой мыши на форме. Надпись на элементе управления, помещенном на форму третьим, изменится на "Hello". В VBA существуют три типа родовых объектов: Form. Ссылается на любую форму в приложении control. Ссылается на любой элемент управления в приложении object. Ссылается на любой объект Переменные для родовых элементов управления полезны, если не известен конкретный тип объекта, на который будет ссылаться переменная во время выполнения. Например, в коде, который будет оперировать с любой формой в приложении, необходимо использовать переменную для родовой формы. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |