вариантов выбора, которые должны находиться в списке или комбинированном списке. Вместо этого вы должны написать код для метода AddItem элемента управления или связать элемент управления с источником данных (он представляет собой электронную таблицу Excel или базу данных Access).

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

Private Sub UserForm_Activate()

cmbOptionPol l.AddItem "Over population"

cmbOptionPol l.AddItem "Global warming"

cmbOptionPol l.AddItem "No time to smell the roses"

cmbOptionPol l.AddItem "No roses to smell"

cmbOptionPol l.AddItem "Taxes on the rich too high"

cmbOptionPol l.AddItem "Too many social services"

cmbOptionPol l.AddItem "Inadequate social services"

cmbOptionPol l.AddItem "HMOs"

End Sub

Технические подробности размещения элементов из базы данных в списке или комбинированном списке выходят за пределы данной книги, однако вы должны знать, что это возможно.

Для того чтобы найти элемент, который пользователь выбрал или ввел в списке или комбинированном списке, используйте свойство объекта Value в коде. Назначьте свойству соответствующую переменную, как показано ниже: strOption = cmbOptionFoll.Value

Программирование форм

Добавлять элементы управления в формы несложно, а вот, чтобы заставить их делать то, что вам нужно, потребуется немного больше умственной работы и программирования. В этом разделе мы обсудим тонкости процесса программирования форм.

Покажите то, что имеете!

Решив добавить в свою VBA-программу пользовательские формы, вы неизбежно столкнетесь с необходимостью показать эти формы на экране. Иначе зачем эти, пусть даже самые лучшие в мире, формы нужны, если их никто не увидит?

Из-за того, что VBA-программа может при необходимости пользоваться интерфейсом содержащего ее приложения, программа не отображает никакую из ее форм автоматически. В этом отношении VBA отличается от своего собрата Visual Basic, где программа по сути является формой.

Так или иначе, чтобы отобразить форму и сделать ее доступной пользователю, в VBA-программе вам придется добавить программный код.

Загрузка и отображение форм

Процесс отображения формы в VBA состоит из двух шагов;

* загрузка формы в память;

* отображение формы на экране.

Оба этих шага можно осуществить с помощью одного оператора VBA, Но иногда полезно разделить эти шаги и использовать для них отдельные операторы.

Отображение форм осуществляется методом Show. Например, если именем формы является FormICa, то нужно просто напечатать:

FormICa.Show

Заметьте, что Show - это метод объекта Us er Form, поэтому метод добавляется к имени формы после точки-разделителя. Если указанная форма еще не загружена в память, метод Show сначала загрузит форму, а потом сделает ее видимой.

Чтобы загрузить форму в память перед отображением, используйте оператор Load. Load - это не метод, поэтому в данном случае синтаксис другой (по сравнению с использованием Show):

Load ФормАльДеГид

Зачем загружать форму, не отображая ее? Загрузка формы происходит намного дольше, чем ее отображение. Программа любой сложности выполняет немало процедур инициализации (типа чтения данных из файлов, вычисления начальных значений переменных и создания объектов), поэтому при запуске программы некоторая задержка весьма привычна. Если в это время вы загрузите и свои формы, пользователь отнесется к задержке благосклоннее, чем к такой же задержке во время работы программы. Единственный недостаток предварительной загрузки форм заключается в том, что для них нужна память, которая могла бы использоваться для других целей.

Можно загрузить форму и без оператора Load, выполнив оператор, в котором вызывается свойство либо метод формы или любого из помещенных в нее элементов управления. При этом можно вносить в форму изменения перед тем, как она отображается на экране, Хотя окно свойств редактора Visual Basic позволяет безо всякого программирования управлять тем, как форма будет выглядеть и вести себя на экране, здесь нужно отметить следующее: часто вообще нельзя узнать, как должна выглядеть и что должна делать форма (или ее элементы управления), пока программа не начнет выполняться.

Предположим, например, что в заголовке формы должны отображаться текущие дата и время. Вы не можете предугадать, когда именно пользователь запустит вашу программу, поэтому вам придется поручить VBA указать дату и время за вас. Это можно сделать, например, так:

Sub DisplayDateCaptionedForm()

DateCaptionedForm.Caption = Now

DateCaptionedForm.Show

End Sub

Аналогично можно заставить надпись или текстовое поле формы отображать информацию о том, что в данный момент выделено в VBA-приложении. На рис. 10.24 показано то, что можно увидеть в результате выполнения следующей процедуры VBA, связанной с подходящей формой в Visio:

Sub DisplayShowSelectionForm()

Dim ItemCount As integer, Message As String

Items = ActiveWindow.Selection.Count

Message = "Выделено объектов: " & CStr(Items) S "."

ShowSelectionForm.lblCountOfItems.Caption = Message

Вы читаете VBA для чайников
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату