Объявление переменных для объектов

Переменные для объектов объявляют так же, как и другие переменные, с помощью операторов 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 ThenFrmAccountDisplay.txtAccountBalance.BackColor = 0 _FrmAccountDisplay.txtAccountBalance.ForeColor = 255 End If

Этот код можно значительно сократить, если применить переменную для элемента управления:

Dim Bal As TextBoxSet Bal = frmAccountDisplay.txtAccountBalanceIf Bal.Text < 0 ThenBal.BackColor = 0Bal.ForeColor = 255 End If

Типы конкретных и родовых объектов

Переменные для конкретных объектов (specific object variables) должны ссылаться на один конкретный тип объекта или класса. Переменная для конкретной формы может ссылаться только на одну форму в приложении (хотя она может ссылаться на одну форму из множества экземпляров этой формы). Точно так же переменная для конкретного элемента управления может ссылаться только на один конкретный тип элемента управления в приложении, например, TextBox или ListBox. Чтобы посмотреть, как это делается, откроем новый проект и поместим на форму поле ввода. Добавим следующий код к форме:

Private Sub Form_Click()Dim anyText As TextBoxSet anyText = TextlanyText.Text = "Hello" End Sub

Запустим приложение и щелкнем кнопкой мыши на форме. Свойство Text (Текст) поля ввода изменится на "Hello".

Переменные для родовых объектов (generic object variables) могут ссылаться на один из многих конкретных типов объектов. Переменная для родовой формы, например, может ссылаться на любую форму в приложении; переменная для родового элемента управления может ссылаться на любой элемент управления на любой форме в приложении. Чтобы посмотреть, как это делается, откроем новый проект и поместим несколько элементов управления рамкой, меткой и кнопок управления на форму в произвольном порядке. Добавим следующий код к форме:

Private Sub Form_Click()Dim anyControl As ControlSet anyControl = Formi.Controls(3)anyControl.Caption = "Hello" End Sub

Запустим приложение и щелкнем кнопкой мыши на форме. Надпись на элементе управления, помещенном на форму третьим, изменится на "Hello".

В VBA существуют три типа родовых объектов:

Form. Ссылается на любую форму в приложении

control. Ссылается на любой элемент управления в приложении

object. Ссылается на любой объект

Переменные для родовых элементов управления полезны, если не известен конкретный тип объекта, на который будет ссылаться переменная во время выполнения. Например, в коде, который будет оперировать с любой формой в приложении, необходимо использовать переменную для родовой формы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: