Смекни!
smekni.com

Основы программирования в среде Visual Basic for Application VBA (стр. 7 из 21)

Элемент управления TabStrip (набор вкладок) создается с помощью кнопки Набор вкладок (TabStrip) (рис. 2.25). Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект TabStrip и семейство Tabs обладают теми же свойствами и методами, что и объект MultiPage и семейство Pages.

Рисунок 2.25 Набор страниц в форме


2.9 Последовательность выбора элементов управления

Последовательность перехода от одного элемента управления к другому определяет порядок, в соответствии с которым активизируются эти элементы управления при нажатии клавиши <Таb>. Для установки последовательности перехода в пользовательской форме необходимо: 1 Находясь в редакторе Visual Basic выбрать команду Вид, Последовательность перехода (View, Tab Order). 2 В появившемся диалоговом окне Последовательность перехода (Tab Order) с помощью клавиш Вниз (Move Down) и Вверх (Move Up) изменить порядок выделенного элемента управления в зависимости от потребности (рис. 2.26).

Рисунок 2.26 Диалоговое окно Последовательность перехода

Другим способом задания последовательности перехода является определение свойства TabIndex элемента управления. При этом надо помнить, что начальному элементу соответствует значение свойства TabIndex, равное 0, второму – 1, третьему – 2 и т. д.

2.10 Диалоговые окна

2.10.1 Инициализация и отображение диалогового окна

Инициализировать и отобразить диалоговое окно на экране очень просто. Инициализация производится при помощи процедуры обработки события Initilize формы UserForm. Отображение диалогового окна на экране осуществляется методом Show. Инструкцию с методом Show обычно помещают в процедуру, которая связана с командой пользовательского меню, кнопкой панели инструментов или элементом управления, как правило, кнопкой диалогового окна.

Простой инициализации или обычного отображения диалогового окна часто бывает недостаточно, т. к. это приводит к появлению на экране функционально ненастроенного диалогового окна. Такое диалоговое окно можно сравнить с каркасом дома. В таком доме жить неприятно и в него совсем не хочется въезжать. Для того чтобы жить в доме было приятно и удобно, прежде чем в него вселяться, надо сделать много отделочных работ. Также и при инициализации диалогового окна необходимо предусмотреть огромное количество на первый взгляд мелочей, но без которых работать с диалоговым окном неудобно. В частности, при отображении диалогового окна на экране необходимо установить значения полей, применяемые по умолчанию, задать функции кнопок, назначить им комбинации клавиш, связать с элементами управления всплывающие подсказки, вывести в списках первоначально выводимые элементы списков, задать первоначальную установку флажков, переключателей, вывести в элементы управления формы требуемые рисунки и т. д. Приведем пример процедуры инициализации диалогового окна (рис. 2.27), в котором рассчитываются размеры периодических выплат при постоянной процентной ставке.

Рисунок 2.27 Диалоговое окно Периодических выплат


Private Sub UserForm_Initialize()

' Процедура инициализации и активизации диалогового окна‘

' Первоначальный выбор переключателя Гистограмма

OptionButton1.Value = True

' Назначение клавише <Enter> функции кнопки Вычислить

With CommandButton1

.Default = True

.ControlTipText = "Вычисление процентных ставок" & Chr(13) & _

"составление отчета на рабочем листе"

End With

CommandButton2.ControlTipText = "Кнопка отмены"

On Error GoTo Сообщение0

With Image1

' Установка такого же цвета границы элемента управления Рисунок,

' как и его фон

.BorderColor = .BackColor

' Загрузка рисунка, соответствующего переключателю Гистограмма

.Picture = LoadPicture("VBA3_F1.BMP") End With

UserForm1.Show

Exit Sub

' В случае отсутствия файла с рисунком отображается сообщение

Сообщение0:

If Err.Number Then

MsgBox "Нет графического файла “VBA3_F1.BMP." & Chr(13) &

"Работаем без картинки", vbCritical, "Выплаты"

End If

Resume Next

End Sub

2.10.2 Закрытие диалогового окна

В VBA диалоговые окна работают в режиме модального диалога. Это означает, что пользователь, прежде чем перейти к выполнению действий, не связанных с текущим активным диалоговым окном, должен его закрыть. Закрытие диалогового окна производится методом Hide. Следующая процедура является примером процедуры закрытия диалогового окна. Эта процедура активизируется при нажатии кнопки CommandButton2 диалогового окна UserForm1 и выполняет только одну инструкцию, осуществляющую закрытие этого диалогового окна.

Private Sub CommandButton2_Click()

‘ Процедура закрытия диалогового окна

UserForm1.Hide

End Sub

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

2.10.3 Отображение встроенных диалоговых окон

VBA позволяет отображать программно на экране встроенные диалоговые окна в Excel наряду с пользовательскими диалоговыми окнами. Все встроенные диалоговые окна в Excel образуют семейство Dialogs, индекс которого специфицирует активизируемое диалоговое окно. Отображение встроенного диалогового окна на экране осуществляется методом Show. Например, следующая процедура при нажатии кнопки активизирует диалоговое окно Открытие документа (Open) (рис. 2.28).

Private Sub CommandButton1_Click()

Application.Dialogs(xlDialogOpen).Show

End Sub

Рисунок 2.28 Диалоговое окно Открытие документа

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

XlDialogFindFile Диалоговое окно Открытие документа (Open) при поиске файла
xlDialogPivotTableWizard Диалоговое окно Мастер сводных таблиц (Pivot Table Wizard)Wizard)
xlDialogSaveAs Диалоговое окно Сохранить как (Save as)
xlDialogSaveWorkbook Диалоговое окно Сохранить (Save)
xlDialogPrint Диалоговое окно Печать (Print)

3. Типы данных, переменные и константы

3.1 Типы данных

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

В VBA имеются следующие основные типы данных:

Тип данных Размер (байт) Диапазон значений
Byte (байт) 1 От 0 до 255
Boolean (логический) 2 True или False
Integer (целое число) 2 От -32 768 до 32 767
Long (длинное целое число) 4 От -2 147 483 648 до 2 147 483 647
Single (число с плавающей запятой обычной точности) 4 От -3,402823Е38 до -1,401298Е-45 для отрицательных значений
Double (число с плавающей запятой двойной точности) 8 От -1,79769313486232Е308 до -4,94065645841247Е-324 для отрицательных значений;от 4,94065645841247Е-324 до 9769313486232Е308 для положительных значений
Decimal (масштабируемое целое число) 14 +/-79228162514264337593543950335 с 28 знаками справа от запятой;минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001
Date (даты и время) 8 От 1 января 100 г. до 31 декабря 9999г.
Object (объект) 4 Любой указатель объекта
String (строка переменной длины) 10 + длинастроки От 0 до приблизительно 2 миллиардов
String (строка постоянной длины) длинастроки От 1 до приблизительно 65 400
Variant (числовые подтипы) 16 Любое числовое значение вплоть до границ диапазона для типа Double
Variant (строковые подтипы) 22+длина строки От 0 до приблизительно 2 миллиардов
Тип данных, определяемый пользователем (с помощью ключевого слова Туре) Объём определяется элементами Диапазон каждого элемента определяется его типом данных

3.2 Описание переменных

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

Синтаксис:

Dim [WithEvents] ИмяПеременной[([Индексы]]] [As [New] Тип] __[, [WithEvents] ИмяПеременной [([Индексы] I ] [As[New] Тип]] . . .

Аргументы:

WithEvents Ключевое слово, указывающее, что аргумент ИмяПеременной является именем объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX (т. е. объектом, который может быть открыт для других приложений и средств программирования).
ИмяПеременной Имя переменной, удовлетворяющее стандартным правилам именования переменных
Индексы Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента Индексы используется следующий синтаксис:[Нижний То] Верхний [, [Нижний То] Верхний] ...Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base- Если отсутствует инструкция option Base, нижняя граница массива равняется нулю
New Ключёвое слово, включающее возможность неявного создания объекта. Если указано ключевое слово New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на него, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set
Тип Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As тип

Переменные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне процедуры, доступны только в данной процедуре.