Объявление переменных пользовательского типа
Как и встроенные типы данных, пользовательский тип остается абстрактным понятием до тех пор, пока вы не объявите переменную соответствующего типа. Для этого не требуется что-то особенное- годится стандартный синтаксис объявления обычных переменных. Точно так же в объявлениях переменных пользовательского типа можно использовать ключевые слова Publiс, Private и Static. Вот пример объявления такой переменной с помощью стандартною оператора Dim:
Dim usrРаботник As Персона
Как видите, при этом не требуется объявлять элементы внутри пользовательского типа.
И хотя оператор Dim задает имя новой переменной, имена ее элементов фиксируются в объявлении соответствующею пользовательского типа.
Чтобы получить целую базу данных вашего пользовательскою типа, объявите массив с помощью оператора следующего вида:
Private Персонал( 1 То 25) As Перcона
Обработка информации, представленной пользовательским типом данных
После объявления переменной пользовательского типа ее можно "начинять" информацией. При этом необходимо присвоить значение каждому из элементов, составляющих тип.
А для этого нужно идентифицировать элемент с помощью имени переменной, за которым следую почка и имя элемента. Например:
usrРаботник.strФамилия = "Ёлкин"
При заполнении нескольких элементов сразу оператор With поможет сократить объемы необходимого печатания. Вот пример использования этого оператора:
"With из usrРаботник
.strФамилия = "Исаков"
.strИмя = "Василий"
.datДатаНайма - #12/9/48#
End With
Для присвоения данных элементам в массиве пользовательского типа используйте стандартные индексы массива. В следующем примере такой индекс задается переменной:
Персона ( intНомер).strИмя = "Марфа"
Работа с переменными пользовательского типа данных
Если переменная пользовательского типа хранит полный набор данных, можно присвоить ее содержимое другой переменной того же типа- все содержимое сразу, без копания в элементах, из которых состоят эти переменные. Например, чтобы присвоить содержимое переменной изгРаботник второй ячейке в массиве Персонал, используйте оператор
Персонал(2) = usrРаботник
Самое интересное, что этот трюк срабатывает также в случае чтения информации из файла и записи информации в файл на диске. Например, можно сохранить полную записей базу данных на диске с помощью программного кода следующего вида:
Sub WriteData()
Open "С:\Database\Сотрудники.dat" For Binary As #1
For i = 1 To intРазмерБазыДанных ' цикл по всем записям
Put #1, , Персонал(i)
Next i
Close #1 ' закрытие файла - обязательный шаг
End Sub
Чтение данных из файлов и запись данных в файлы на диске обсуждаются в главе 18.
Часть IV Профессиональная работа c VBA
В этой части...
B главах с 14 по 16 рассматривается использование VBA в Microsoft Office. В главе 14 вы познакомитесь с инструментами программирования, которые работают во всех приложениях Office, Сюда относятся приемы для настройки пользовательского интерфейса программирования Помощника по Office, который чаще всего появляется в лице Скрепыша, а также сохранения данных программы в должном формате.
В главах 15 и 16 мы детально остановится на программировании для Word u.Excel соответственно наиболее широко используемых VBA-приложений. В каждой из глав подробно рассматриваются важные средства и приемы программирования для работы с документами и их содержимым с помощью VBA.
Материал остальных глав настоящей части представляет , интерес для всех VBA -программистов, независимо от того, в каком приложении они работают.
В главе 17 мы поговорим о программировании для баз данных на VBA. В главе 18 мы рассмотрим не очень удобные, но более мощные не объектно-ориентированные способы работы с файлами, чем объектно-ориентированные способы, которые рассматриваются нами в главе 20, И наконец, в главе 19 я предлагаю вам расширенно рассмотреть VBA-формы.
Глава 14. VBA для Office.
В этой главе ...
~ Отображение пользовательских панелей инструментов и кнопок с помощью VBA
~ Программирование Помощника по Office
~ Сохранение значений переменных на диске
VBA полезен для создания полноценных приложений не меньше, чем небольших подручных средств. В настоящей главе я познакомлю вас с некоторыми приемами, которые позволят вам профессионально работать с приложениями Office.
Контроль над панелями инструментов и меню
Приложения Office позволяют пользователям настраивать панели инструментов, строки меню и контекстные меню, обходясь безо всякого программирования, поэтому для решения подобных задач в VBA необходимости нет. Однако, если вы хотите, чтобы окно VBA программы содержало определенный набор панелей инструментов или меню либо вам необходимо внести изменения в панели инструментов или меню при, например, запущенной программе, вам нужно написать программный код, который позволял бы в определенных условиях включать или отключать команды меню.
В последних версиях Office граница между панелями инструментов и меню стала исчезать: вы можете добавлять кнопки в меню или раскрывающиеся списка на любую панель инструментов. В VBA главная строка меню и остальные панели инструментов относятся к коллекции объектов CommandBars. Конечно же, каждая панель инструментов является отдельным объектом CommandBar.
Для работы с определенной панелью инструментов вам следует указать ее имя в коллекции CommandBars. Например, приведенный ниже фрагмент кода обращается к панели инструментов под названием VBA4Dummies:
Dim tbar As Toolbar
Set tbar = CommandBars("VBA4Dummies")
Отображение и размещение панелей инструментов
Для отображения или сокрытия панели инструментов предназначено свойство Visible. Приведенный ниже фрагмент кода отображает панель инструментов под названием VBA4 Dummies.
CommandBars("VBA4Dummies").Visible = True
Для сокрытия панели инструментов свойству Visible следует присвоить значение False.
Для переключения состояния отображения панели инструментов - отображения скрытой панели инструментов, и наоборот, следует использовать оператор Not (см. главу 11).
CommandBars("ReBar").Visible = _
Not (CommandBars("ReBar").Visible)
Если вы хотите изменить место расположения отображенной панели инструментов на экране, используйте такие ее свойства, как Position, RowIndex и Left. При необходимости используйте свойство Protection, чтобы исключить возможность перемещения панели инструментов пользователями. Подробные сведения о каждом из этих свойств приведены в следующей таблице.
Свойство |
Назначение |
Доступные настройки |
Position |
Определение того, прикреплена ли панель задач, и если так, определяется сторона, к которой она прикреплена |
MsoBarFloating (для неприкрепленной панели инструментов), msoBarTop, msoBarLeft, msoBarRight |
RowIndex |
Определение порядка закрепления панели инструментов по отношению к другим панелям инструментов, прикрепленным к той же стороне |
Целое число больше 0; msoBar RowFist или msoBar RowLast (длязакрепления панели инструментов первой или последней по порядку соответственно) |
Left |
Определяет расстояние от левого края панели инструментов до левого края экрана |
|
Protection |
Определяет способ защиты панели инструментов от действий пользователей |
msoBarNoProtection, msoBarNoCustoraize, msoBarNoResize. |