VBA для чайников
Шрифт:
Несмотря на то, что пользователи не могут изменять текст на элементах управления, когда программа запущена, можно изменить значение элемента управления Caption. Вам необходимо изменить всего одну строку в коде для того, чтобы изменить отображаемый текст.
Ниже показано, как это сделать:
LbllnspirationalMessage.Caption = "Laugh and be happy!"
Для того чтобы в элементе управления текстом сделать обрыв строки, используйте строковый литерал, связанный с символом возврата каретки в операторе присвоения. (Более подробная информация об объединении текста содержится в главе 11.)
Сбор
Когда необходимо собрать информацию о пользователе, используется текстовое поле.
Ваш код может извлекать все, что пользователь введет в данное текстовое поле. На рис. 10.15 показано подобное текстовое поле.
Рис. 10.15. Большое белое поле в центре данной формы является текстовым полем, в котором ктото ввел сообщение
Если вы попытаетесь создать диалоговое окно со всего одним текстовым полем для ввода информации о пользователе, вероятнее всего, вам не нужна вся форма. Вместо этого можно воспользоваться функцией Input Box (подробнее о ней я расскажу в главе 11). Элементы управления текстовым полем можно использовать вместо функции Input Box в следующих случаях.
* Вам необходимо сделать красивое или отвратительное диалоговое окно. В этом случае функцию Input Box использовать нельзя.
* Вам необходимо, чтобы в одном диалоговом окне, кроме текстового поля, находился еще один элемент управления.
* Вы хотите проверять правильность содержимого поля, когда пользователь вводит текст.
Используя текстовое поле, можно сделать программу с процедурой обработки событий, которая будет выполняться всякий раз, как пользователь нажмет любую клавишу на клавиатуре. При этом проверяется, соответствует ли нажатая клавиша установленным вами критериям. Используя функцию Input Box, вы можете только проверять содержимое и только после того, как пользователь закроет текстовое поле.
В текстовом поле можно разместить стандартный текст. При этом пользователю не придется вводить данные в текстовом поле, если содержащаяся в нем информация подходит для него. Для того чтобы ввести в текстовое поле стандартный текст, щелкните один раз в текстовом поле, выделив его, После этого повторно (но не два раза) щелкните в текстовом поле для того, чтобы перейти в режим ввода текста. Затем вводите текст. Также можно ввести текст в поле свойств Value в окне Properties Value (Свойства). (Запомните: текстовые поля не имеют заголовков.)
В действительности текстовое поле имеет как свойство Value, так и свойства Text. Оба эти свойства одинаковы для текстовых полей, однако многие другие элементы управления, такие как кнопки и полосы прокрутки, имеют только свойство Value, но не имеют свойства Text. Так как свойства Value и Text функционально одинаковы для текстовых полей, они равноценны. Я использую свойство Value только потому, что мне легче запомнить его параметры, а также потому, что многие другие элементы управления имеют это же свойство.
Для того чтобы обсудить использование свойства Value (или Text) на примерах, ознакомьтесь с разделами "Извлечение информации, введенной пользователем" и "Использование стандартных свойств элемента управления"
Извлечение информации, введенной пользователем
Для того чтобы выяснить, какой текст ввел пользователь в текстовом поле, программа должна извлекать свойства Value или Text. Обычно вы должны назначить свойства для строковой переменной с оператором, как показано ниже:
strText BoxText = txtMessageFromUser.Value
После запуска программы переменная strText BoxText теперь содержит любой тип пользователя в текстовом поле, которое называется xt MessageFromUser.
Использование стандартных свойств элемента управления
Многие элементы управления обладают стандартными свойствами, к которым относится свойство Value.
В случае текстового поля вы не должны явно указывать, какое свойство используется - Value или Text - для настройки и извлечения содержимого текстового поля в коде VBA.
Поскольку свойство Value является стандартным свойством текстового поля, можно его пропустить. Следующая инструкция размещает сообщение в текстовом поле:
txtRUListening = "Do as I say!"
В данном примере в текстовом поле размешается текст, который пользователь ввел в строковой переменной:
strWhatHeard = txtSoundOffTextBox
Создание автоматически изменяющихся текстовых полей
Текстовые поля имеют те же свойства AutoSize, Wordwrap и Text Align, что и элементы управления. Работают они почти так же. Более подробная информация об этих свойствах содержится в разделе "Отправка сообщений с надписями" раньше в настоящей главе. Однако свойство Wordwrap работает только в текстовых полях, состоящих из нескольких строк, о чем я расскажу в главе 19, "Еще о VBA-формах".
Использование кнопок
Если вы хотите что-либо сделать, и сделать именно сейчас, проще всего нажать кнопку и получить немедленный результат. Кнопки создают ощущение власти над программой.
Стандартная кнопка представляет собой серый объект, на котором находится поясняющий текст, например OK, Cancel или Guess Again, Friend. Если простой текст оскорбляет ваш изысканный вкус, на кнопку можно поместить небольшое изображение. Для того чтобы сделать это, в окне Properties (Свойства) в поле свойства Picture щелкните на небольшой кнопке, на которой изображены три точки. Вы получите доступ к диалоговому окну, которое позволит указать файл с рисунком. На рис. 10.16 показаны различные кнопки.
Рис. 10.16. Кнопки могут быть различного размера, формы и формата. На двух кнопках, расположенных в нижнем левом углу, вместо текста находятся рисунки
К сожалению, кнопки ничего не будут делать, если о них ничего не сказано в программе. Щелчком на кнопке вызывается событие Click, однако вы должны написать код для того, чтобы сказать VBA, какое действие должно произойти, когда происходит событие.
Выбор стандартных кнопок