Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Создание событийных процедур

При разработке событийной процедуры нажатия на кнопку Go предусмотрим возможность выполнения анализа текста не только при нажатии на эту кнопку, но и при нажатии клавиши Enter сразу после ввода текста.

Для анализа текста напишем общую процедуру Text_Analysis, а в событийных процедурах запишем только команды вызова процедуры Text_Analysis. Процедура Text_Analysis анализирует введенный текст и при обнаружении пробела выводит найденное слово в элемент Out_Lab – поле вывода сообщений.

Private sub Text_Analysis()

a = Trim(Inp_Box) & " "

'удаление ведущих и концевых пробелов;

'для удобства добавить пробел в конце строки

n = Len(a)

i = 1

Do

j = InStr(i, a, " ") 'поиск пробела в строке

Out_Lab = Out_Lab & Mid(a, i, j – i) & vbLf

If j = n Then 'достигнут конец строки

Exit Sub

Else

i = j + 1

End If

Loop

End Sub

Private Sub Go_Click()

Text_Analysis

End Sub

Сообщение формируется из выделенных слов, которые располагаются на разных строках. Константа vbLf используется для перехода на новую строку в сообщении.

Элемент формы Inp_Box можно рассматривать как глобальную переменную: он принимает значение при вводе данных и его значение доступно во время выполнения формы всем процедурам процедурного листа формы.

Запустите форму. После ввода строки текста "Формы в VBA – это объекты организации интерфейса пользователя" нажмите кнопку Разбить на слова.

Рис. 7.10. Результат разбивки текста на слова

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

На процедурном листе формы выберите Inp_Box из списка объектов и событие KeyDown. Автоматически появится процедура нажатия на клавишу – процедура с параметром Keycode, который передает процедуре код нажатой клавиши. Значение этого параметра проверяется с использованием констант VBA: нажатию на клавишу Enter соответствует константа vbKeyReturn.

Private Sub Inp_Box_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = vbKeyReturn Then

Text_Analysis

EndIf

End Sub

В процедуру включен оператор If, который анализирует нажатую клавишу, и если нажата Enter, то разбивает на слова введенную строку, вызывая процедуру Text_Analysis.

Добавьте оставшиеся две кнопки с именами Ex и Sel_Sheet(см. таблицу выше). Нажатие на первую завершает работу с формой, нажатие на вторую вызывает вторую форму – форму для выбора рабочего листа и сохранения на нем выделенных из введенного текста слов. Установите свойства кнопок в соответствии с таблицей.

Для выравнивания добавленных кнопок по отношению к ранее созданной кнопке, а также для установки одинаковой высоты или ширины кнопок используйте команды Align и Make Same Size меню Format.

Событийная процедура нажатия на кнопку Ex выгружает форму Str_An и завершает пользовательское приложение.

Private Sub ex_Click()

Unload Me

End Sub

Private Sub Sel_Sheet ()

MsgBox "Sel_Sheet"

End Sub

Оператор Unload выгружает объект, освобождая занятую им оперативную память. Объект Me – это активная форма.

Событийная процедура нажатия на кнопку Sel_Sheet временно содержит единственный оператор, который высвечивает название нажатой кнопки.

Рекомендуется

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

Впоследствии по окончании разработки соответствующей событийной процедуры оператор MsgBox может быть закомментирован или удален.

Теперь процедурный лист формы Str_An содержит три событийные процедуры и общую процедуру Text_Analysis. Окно объектов (левое верхнее поле) содержит список всех объектов формы.

Рис. 7.11. Список объектов формы