Чтение онлайн

ЖАНРЫ

VBA для чайников

Каммингс Стив

Шрифт:

Знакомство с пользовательскими типами данных

Пользовательский тип данных VBA представляет собой, так сказать, поселившуюся под одной крышей компанию выбранных вами типов данных. Определив пользовательский тип данных, вы получаете возможность объявлять переменные этого типа точно так же, как переменные встроенных типов.

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

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

Для

объявления пользовательского типа данных используется оператор Туре, как в следующем типичном примере:

Туре Персона

intНомер As Integer ' номер работника

strФамилия As String

strИмя As String

strAдpec As String

lngТелефон As Long

datДатаНайма As Date

End Type

Здесь объявляется новый пользовательский тип данных Персона. Как ясно показывают строки с отступами, этот тип состоит из целого значения, трех строковых значений, длинного целого и даты. (Обратите внимание на то, что при объявлении типа необходимо назначить каждому элементу имя - простого указания типа данных недостаточно.) Когда вы объявите переменную типа Персона, в этой переменной автоматически будет предусмотрено место для всех шести элементов, перечисленных в объявлении типа.

Обратите внимание и на то, что для оператора type требуется оператор End Туре, завершающий блок объявления. Если вы забудете об этой завершающей строке, компьютер будет ругать вас.

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

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

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

Поделиться с друзьями: