Выбрать главу

Объявление переменных пользовательского типа

Как и встроенные типы данных, пользовательский тип остается абстрактным понятием до тех пор, пока вы не объявите переменную соответствующего типа. Для этого не требуется что-то особенное- годится стандартный синтаксис объявления обычных переменных. Точно так же в объявлениях переменных пользовательского типа можно использовать ключевые слова 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.