Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
119
Добавлен:
16.04.2015
Размер:
2.54 Mб
Скачать

Панель элементов vba

Для создания средств пользовательского интерфейса VBA предоставляет следующие элементы:

Label - для создания надписей в UserForm , например, заголовка текстового окна;

TextBox - для ввода и вывода значений (строк текста и чисел);

Можно использовать TextBox для ввода пароля. Для того, чтобы в процессе ввода пароля вместо вводимых символов отображались, например, звездочки, нужно в окне свойства PasswordChar текстового окна ввести символ *.

Пример анализа пароля в программе:

If TextBox1.Text <> "TVS" Then

Exit Sub

End If

ComboBox - для хранения списка значений. Отображается только один элемент списка;

ListBox - для хранения и отображения списка значений. Из списка можно выбрать одно значение, которое будет использовано в программе, запускаемой нажатием командной кнопки;

CheckBox - для ввода одного из двух (True, False) или (если установить True свойства TripleState) одного из трех (True, False, Null) значений;

ToggleButton - выполняет те же функции, что и флажок;

OptionButton - выполняет те же функции, что и флажок, но, если в UserForm или в группе (группировка переключателей производится элементом Frame) переключателей несколько, в состояние True можно установить только один переключатель - остальные автоматически перейдут в состояние False;

Frame - для группировки элементов управления. Основное свойство рамки - Caption, позволяющее задать название группы элементов;

CommandButton - для запуска программы;

TabStrip - создаются в UserForm, элементы управления могут размещаться на вкладках, однако, вкладки не обладают свойствами контейнеров. Это значит, что элементы управления фактически будут связаны с UserForm и будут только "просвечивать" через все вкладки.

Можно сделать программным путем элементы управления видимыми на одних вкладках и невидимыми на других.

Пример.

Private TabStrip1_Change()

If TabStrip1.Value = 0 Then

CommandButton1.Visible=False

Else

CommandButton1.Visible=True

End If

End Sub

В результате действия этой процедуры кнопка CommandButton1 будет видна и будет действовать на вкладке 0 и не будет видна и не будет действовать на вкладке 1 и других.

Pages - создаются в UserForm, элементы управления могут размещаться на страницах. Страницы обладают свойствами контейнеров. Это значит, что элементы управления будут связаны с теми страницами, на которых они установлены, видны и действовать только на них;

ScrollBar - возвращает целое неотрицательное число.

Пример. При каждом нажатии кнопок ScrollBar или перемещении ползунка число в счетчике изменяется и выводится в TextBox.

Private Sub ScrollBar1_Change()

spin = ScrollBar1.Value

TextBox2.Text = CStr(Format(spin, "Fixed"))

End Sub

SpinButton - выполняет те же функции, что и ScrollBar, но не содержит ползунка.

Пример. При каждом нажатии кнопок SpinButton число в счетчике изменяется и выводится в TextBox

Private Sub SpinButton1_Change()

spin = SpinButton1.Value

TextBox2.Text = CStr(Format(spin, "Fixed"))

End Sub

Image - для "украшения" UserForm рисунком или мозаикой из рисунков (в последнем случае нужно установить True свойство PictureTiling);

RefEdit - используется для ввода ссылок на ячейки или диапазоны.

Для создания UserForm:

1. Сконструировать панель UserForm, т.е. разместить на этой панели нужные элементы и определить их свойства (вызвать контекстное меню и выбрать пункт “Properties”). Пример внешнего вида панели UserForm приведен на рис. 35.

2. Для кнопок “CommandButton” создать запускаемые ими процедуры на языке VBA. Для этого:

а) двойным щелчком на изображении кнопки CommandButton вызвать окно программы. В этом окне автоматически создается первая и последняя строка процедуры:

Private Sub CommandButtonN_Click()

End Sub

Рис. 35

б) ввести текст процедуры. Ниже приведен пример текста процедуры.

Private Sub CommandButton3_Click()

x = CDbl(TextBox2.Text)

Range("B3").Value = x

Range("B4").Formula = "=ACOS(B3)"

y = Range("B4").Value

TextBox1.Text = CStr(Format(y, "######0.0##############"))

End Sub

Дополнительные элементы пользовательского интерфейса, которые могут использоваться в программах на VBA:

  • всплывающие окна с комментариями к элементам управления в UserForm;

  • функции InputBox и MsgBox.

Всплывающие окна с комментариями могут создаваться программно или создаваться в окне свойств элемента.

Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода, кнопки "OK" и "Cancel". Устанавливается режим ожидания ввода текста пользователем или нажатие кнопки, затем функция возвращает из текстового окна значение типа String, содержащее текст, введенный в поле.

Синтаксис (возможный):

InputBox("<Текст>","<Название окна>")

Пример: Имя = InputBox("Введите Ваше имя", "Первый шаг")

Функция MsgBox выводит на экран диалоговое окно, содержащее сообщение, и одну или несколько кнопок управления (состав кнопок задается программно)

Функция возвращает число формата Integer, соответствующее тому, какая кнопка была нажата. Синтаксис:

MsgBox("<Текст>",[<имя набора кнопок>,]"<имя окна>")

Варианты имен наборов кнопок:

VbOKonly, VbOKCancel, VbAbortRetryIgnore, VbYesNoCancel, VbYesNo, VbRetryCancel.

Пример:

A = MsgBox ("Справку вывести?",vbOKCancel)

Select Case A

Case vbOK

MsgBox "<текст>"[,<значок сообщения>][,"<имя окна>"]

End Select

Возможные виды значков сообщения: vbInformation, vbCritical, vbQuestion, vbExclamation.

Отображение диаграмм

Из программы на VBA можно создавать диаграммы на основе данных в таблицах и отображать созданные диаграммы на панели UserForm в окнах Image. Для отображения диаграммы нужно вначале экспортировать диаграмму в рисунок в одном из графических форматов: bmp, jpg, gif и сохранить в файле, затем прочитать из файла и перенести в окно Image. Ниже приведен пример программы.

Private Sub CommandButton1_Click()

'Пометка строки с данными для графика

Range("A2:K2").Select

'Построение диаграммы. Перенесен текст макроса

ActiveSheet.Shapes.AddChart.Select

ActiveChart.SetSourceData Source:=Range("Лист1!$A$2:$K$2")

ActiveChart.ChartType = xlLineMarkers

'Преобразование диаграммы в изображение формата bmp и запись в файл

ActiveChart.Export Filename:="D:\graph1.bmp", FilterName:="BMP"

'Загрузка изображения из файла в окно Image1

Image1.Picture = LoadPicture("D:\graph1.bmp")

'Установка режима отображения Stretch в окне

Image1.PictureSizeMode = 1

End Sub

Соседние файлы в папке Word