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

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

Шрифт:

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:

  • Читать дальше
  • 1
  • ...
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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