Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

60

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

Отобразить форму на экране можно двумя способами.

1.Из окна проектирования формы UserForm щёлкнуть клавишей

F5.

2.Запустить процедуру, которая вызывает метод Show объекта UserForm. Если объект UserForm называется ПЛАН_ОТГРУЗКИ, то следующая процедура отобразит это пользовательское диалоговое окно.

Sub ПЛАН_ОТОБРАЗИТЬ() ПЛАН_ОТГРУЗКИ. Show End Sub

Эта процедура должна находиться в стандартном модуле VBA, а не в модуле формы!

Изменим свойство Font элемента управления Label: выделим элемент управления Label на форме, установим для него размер шрифта равным 14 и начертание – курсив. Кроме того, выделим форму и зададим свойству Name (имя формы) значение “ПЛАН_ОТГРУЗКИ” и свойству Caption (заголовок) – значение “План отгрузки. Клавишей F5 запустим модуль формы ПЛАН_ОТГРУЗКИ на выполнение. Тогда на экран будет выведена форма, представленная на рис. 19.

Примечания

1.Имя формы, как и имя любого объекта VBA, не может содержать символ “пробел”; вместо него рекомендуется использовать символ “подчёркивание” (_).

2.Свойство Caption может иметь любое значение, в том числе и совпадающее с именем объекта.

Рис. 19. Форма План_отгрузки

2.11.2.2. Элемент управления CommandButton (Кнопка)

Отображаемая пользовательская форма находится на экране до тех пор, пока она не будет скрыта или выгружена. Диалоговое окно UserForm автоматически выгружается из памяти при щелчке на кнопке в строке заголовка окна формы. Обычно в пользовательскую форму вставляют элемент управления CommandButton, который запускает процедуру закрытия формы. Эта процедура или выгружает пользовательскую форму с помощью оператора Unload, или скрывает пользовательскую форму с экрана с помощью метода Hide объекта UserForm. При вызове метода Hide диалоговое окно удаляется с экрана, но форма остаётся в памяти.

61

Щелчок по элементу управления вызывает событие, которое можно обработать процедурой формы. Эта процедура находится в модуле формы и имеет имя, состоящее из имени элемента управления с порядковым номером элемента в форме, и слова Click, разделённых символом “под-

чёркивание”, например, CommandButton1_Click.

При этом первый вставляемый в форму элемент данного типа имеет номер 1, второй – 2 и т.д. Имя элемента управления, определяемое параметром (Name), можно менять на смысловое в таблице свойств Propеrties, например, на Ок или Выйти. В этом случае процедура обработки события будет иметь имя соответственно Ок_Click и Выйти_Click.

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

UserForm, например,

Private Sub CommandButton1_Click()

End Sub

или

Private Sub Ok_Click()

End Sub

если имя формы было заменено в окне Propеrties на Ok. В эту процедуру нужно вставить операторы(инструкции) обработки события, например,

Private Sub Ok_Click()

Range(“A1”).Value = ShouКвартал.КВАРТАЛЫ.Value R = ShouКвартал.КВАРТАЛЫ.Value

End Sub

Private Sub Ok_Click() Unload Me

End Sub

При щелчке по кнопке Ok в первой процедуре ячейка A1 активного листа получит значение элемента управления КВАРТАЛЫ формы ShouКвартал, а вторая процедура вызовет выгрузку активной (текущей) формы.

Ключевое слово Me возвращает (указывает) имя активного окна.

Скрыть или выгрузить форму можно также при помощи стандартной процедуры, которую можно вызвать из любой другой процедуры, в том числе из процедуры формы. Приведённая ниже процедура ПЛАН_СКРЫТЬ скрывает форму ПЛАН_ОТГРУЗКИ, а процедура ПЛАН_УДАЛИТЬ удаляет форму ПЛАН_ОТГРУЗКИ из памяти.

Sub ПЛАН_СКРЫТЬ() ПЛАН_ОТГРУЗКИ.Hide End Sub

62

Sub ПЛАН_ УДАЛИТЬ ()

Unload ПЛАН_ОТГРУЗКИ

End Sub

Вместо операторов ПЛАН_ОТГРУЗКИ.Hide и Unload ПЛАН_ОТГРУЗКИ можно использовать операторы Me.Hide и Unload Me.

2.11.2.3. Элемент управления TextBox (Текстовое поле)

Текстовое поле используется:

для приема каких-либо текстовых данных, вводимых пользователем;

для вывода пользователю текстовых данных с возможностью их редактирования;

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

Наиболее часто используемые свойства этого элемента управления:

Value (или Text, эти два свойства для текстового поля идентичны) – то текстовое значение, которое содержится в этом поле. Используется для занесения исходного значения и для приема значения, введенного пользователем, в строковую переменную.

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

ControlSource – ссылка на источник текстовых данных для поля. Может ссылаться, например, на ячейку в Excel, на поле в Recordset и т.п. При изменении пользователем данных в текстовом поле автоматически изменится значение на источнике, определенном в ControlSource.

ControlTipText – текст всплывающей подсказки, которая появляется, когда пользователь наводит указатель мыши на элемент управления. Рекомендуется к заполнению для всех элементов управления (для самой формы не предусмотрена).

Enabled – если переставить в False, то текст в поле станет серым и с содержимым поля ничего сделать будет нельзя (ни ввести текст, ни выделить, ни удалить). Обычно это свойство используется (для всех элементов управления), чтобы показать пользователю, что этот элемент управления отключен до выполнения каких-либо условий.

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

MaxLength – максимальная длина значения, которое можно ввести в поле. Иногда можно использовать свойство AutoTab – при достижении определенного количества символов управление автоматически передается другому элементу управления.

63

MultiLine – можно ли использовать в текстовом поле несколько строк или необходимо обойтись одной. Если вам нужно текстовое поле для приема одного короткого значения, подумайте, нельзя ли вместо него обойтись функцией InputBox.

PasswordChar – указать, за каким символом будут «прятаться» вводимые пользователем значения. Используется, конечно, при вводе пароля. ScrollBars – будут ли показаны горизонтальная и вертикальная полосы прокрутки (в любом сочетании). Если текст может быть большим, без них не обойтись.

WordWrap – настоятельно рекомендуется включать в тех ситуациях, когда значение MultiLine стоит в True. В этом случае будет производиться автоматический переход на новую строку при достижении границы текстового поля.

Наиболее часто используемое событие для текстового поля – это событие Change, то есть изменение содержания поля. Обычно оно используется для проверки вводимых пользователем значений или синхронизация введенного значения с другими элементами управления, например, сделать доступной кнопку, изменить текст надписи и т.п.

На рис.20 представлена форма ПЛАН_ОТГРУЗКИ, в которой отображён элемент управления TextBox с установленным свойством MultiLine в True.

Рис. 20. Использование элемента управления TextBox

Форма ПЛАН_ОТГРУЗКИ загружается при выполнении процедуры “Надпись”:

Public Sub Надпись()

ПЛАН_ОТГРУЗКИ.Show End Sub

При внесении изменений в поле элемента управления, например, при вводе текста “Текстовое поле, введённое при помощи элемента управления TextBox”, выполняется процедура формы ПЛАН_ОТГРУЗКИ

TextBox1_Change:

Private Sub TextBox1_Change()

Range(“A2”).Value = ПЛАН_ОТГРУЗКИ.TextBox1.Value

End Sub