Формирование или корректировка запроса в режиме конструктора
5. Создание формы
На рисунке 9.3 форма Затраты изображена справа, вверху. Если в таблице мы видим сразу много записей, то в форме видны поля только одной записи, но зато сразу видны все поля – даже если запись очень длинная. Кроме того, в форму Затраты можно включить поля не только из таблицы Затраты, но и из других таблиц, если, например, мы хотим видеть в форме не только коды (объекта, вида работ, организации), но и соответствующие названия (см. рис. 9.3). Для этого и потребовалось перед созданием формы создать схему данных.
Для создания формы Затраты в окне базы данных выберем тип объекта – Формы и нажмем кнопку Создание формы с помощью Мастера. После этого откроется диалоговое окно, позволяющее выбирать таблицы (или запросы), а из них – поля, включаемые в форму. Далее форма создается автоматически, почти без участия пользователя. При вводе данных с помощью формы для перехода к очередной, предыдущей, к первой или последней записи таблицы используется навигатор – как и при работе с таблицей. Важно понимать, что форма – это не самостоятельный информационный объект, а только удобный способ визуализации записей таблиц, ввода в них данных и их корректировки. Конструкцию формы можно изменить после ее создания – в режиме конструктора. Например, поля Объект, Работа, Организация можно передвинуть, поместив их рядом с соответствующими кодами, справа от них.
6. Создание запросов
Запросы создаются с целью отбора данных из таблиц по некоторым критериям. Например, создадим запрос Затраты за период, содержащий данные о затратах за любой период, который выберет пользователь с помощью параметров Дата1 и Дата2. Чтобы создать запрос, в окне базы данных выберем тип объекта – Запросы и нажмем кнопку Создание запроса с помощью конструктора. В следующем диалоговом окне выберем таблицы, из которых собираемся отбирать данные, и получим окно, изображенное на рис. 9.3, внизу. В этом окне в полях со списками Имя таблицы и Поле надо выбрать поля, включаемые в запрос, ниже можно выбрать вариант сортировки записей и указать условия их отбора. Закрыв окно, можно запомнить созданный запрос. При его просмотре мы видим виртуальную таблицу (представление [12]), включающую только те данные, которые мы отобрали. Если изменить данные в исходных таблицах, то результат просмотра запроса также изменится.
Результаты запроса удобно использовать в качестве источника информации для составления отчета.
7. Формирование отчетов
На рис. 9.4 показан отчет Затраты по объектам за первый квартал 1998 года. В этот отчет включены данные из запроса Затраты за период. Отчет получен с помощью мастера отчетов. В окне базы данных надо выбрать тип объекта – Отчеты и нажать кнопку Создать отчет с помощью мастера, далее выбрать запрос Затраты за период – в качестве источника данных. После этого, делая выбор в предлагаемых диалогах, остается уточнить перечень полей, включаемых в отчет, вариант группировки и сортировки записей, вариант вывода итоговых строк и ориентацию страниц. Отчет в сочетании с запросом позволяет отобрать из базы данных требуемую информацию, сгруппировать итоговые записи (на рис. 9.4 группировка выполнена по объектам) и автоматически получить итоговые строки. Отчет можно напечатать, выбрав пункт меню Сервис/Связи с Office/Публикация в Microsoft Office Word. Наконец, в отчет нетрудно внести редакционные изменения, но не в режиме создания с помощью мастера отчетов, а в режиме конструктора. Так в нашем примере слово Sum, которое процедура Мастер отчетов вставляет в итоговые строки, заменено на слово Сумма. Вообще в режиме конструктора можно изменять и таблицы, и формы, и запросы, и отчеты.
Завершая краткое рассмотрение СУБД Access, подчеркнем важную роль запросов. Именно с помощью запросов в любой СУБД можно отбирать данные по многим критериям, сортировать записи и, вообще, выполнять многие операции манипулирования данными. В основе этих операций – инструкции языка структурированных запросов (SQL). Когда мы создаем запрос, используя через процедуру Конструктор его визуальное конструирование, Access формирует текст этого запроса на языке SQL. Этот текст можно увидеть и при желании изменить в момент просмотра запроса. Для просмотра запроса мы нажимаем в окне базы данных кнопку Запросы и двойным щелчком мыши открываем запрос. Эти действия приводят к появлению на экране сначала предложений по вводу значений параметров, а затем виртуальной таблицы, являющейся результатом выполнения запроса. Если теперь в меню приложения Access выбрать пункт Вид/Режим SQL, то мы увидим наш запрос не в виде таблицы отобранных данных, а в виде SQL-инструкций. Эти инструкции можно изменить и с помощью пункта меню Запрос/Запуск или кнопки Запуск на панели инструментов (красный восклицательный знак) выполнить запрос и получить новую таблицу с отобранными данными.
Основные инструкции (команды) языка SQL мы считаем полезным рассмотреть, т. к. представление о языке SQL позволяет лучше понять возможности манипулирования данными, имеющиеся в современных СУБД. В русских переводах компьютерной литературы инструкции SQL и других языков программирования часто называют операторами. В англоязычных изданиях применяются термины statement или instruction.

Рис. 9.4. Типичный вид отчета, получаемого с помощью СУБД Access
10. Введение в программировние. Создание приложений на языке Visual Basic for Applications
10.1. Основные понятия
Программирование – это теоретическая и практическая деятельность, связанная с созданием программ. Иногда программирование определяют более узко, представляя дело так, что одни люди ставят задачи, другие разрабатывают алгоритмы их решения, а третьи записывают эти алгоритмы на языках программирования. В действительности такое деление довольно-таки условно. Просто эрудированные и опытные специалисты в области создания ПО, вместе со специалистами в конкретной предметной области, определяют круг задач будущего приложения, решают вопросы организации данных, теоретически обосновывают методы решения задач, разрабатывают алгоритмы, а к созданию интерфейса приложения и процедур привлекают менее квалифицированных программистов. Но надо обязательно подчеркнуть, что программирование – это не кодирование, а весь комплекс работ по созданию приложения: от постановки задач до отладки программного продукта и создания документации. Поэтому программист (в широком смысле слова) должен иметь хорошую математическую подготовку и некоторые знания в той предметной области для которой он создает программный продукт.
Этот раздел не претендует на то, чтобы сделать из читателя программиста. Каждый, кто любит строгую логику, и имеет склонность к формализованному мышлению, может сам стать программистом, но для этого требуется желание и продолжительная практика. В этом отношении обучение программированию очень похоже на обучение шахматам: кроме знания теории и типовых приемов, необходимо накопить опыт и натренировать мозг, сформировав в нем множество “хранимых процедур”. В шахматах это процедуры принятия решений во многих сходных позициях, реализации множества уже встречавшихся комбинаций и т. п. В программировании это процедуры организации циклов, работы с данными различных типов и многие другие. Поэтому цель этого раздела – помочь читателю вступить в мир программирования, научить его делать первые шаги, познакомив с современными инструментальными средствами и методами создания программ. Эти знания, во-первых, должны облегчить понимание логики готовых приложений, а, во-вторых, должны дать возможность разрабатывать собственные, пусть небольшие, но необходимые в практической деятельности программы.
В качестве инструмента для создания приложений в данной работе выбран VBA –Visual Basic for Applications (Visual Basic для приложений). Этот выбор объясняется следующими причинами:
· VBA – это интегрированная среда визуального программирования, позволяющая создавать современные событийно-объектно-ориентированные приложения с унифицированным графическим интерфейсом (см. раздел 2);
· языковые средства VBA по гибкости и полноте не уступают языковым средствам других современных систем программирования и, следовательно, позволяют освоить типовые методы и приемы разработки программных процедур;
· VBA является общей языковой платформой для всех приложений MS Office и позволяет в создаваемых программах работать с объектами Word, Excel, Access, Power Point, OutLook, Binder; мы будем рассматривать VBA во взаимосвязи с Excel, размещая на листах Excel исходные данные и результаты решения задач.
Последняя из перечисленных причин чрезвычайно важна. Дело в том, что среда программирования VBA, в отличие от VB (Visual Basic), работает только совместно с другим, основным приложением, например, Excel. Создаваемое приложение в этом случае встраивается в книгу Excel. Эта особенность в значительной мере определяет область применения VBA. Если надо создать автономное многофункциональное приложение, то лучше использовать VB, Delphi или Си++. Если же мы хотим расширить возможности основного приложения, например, Excel или преследуем учебные цели, то лучше VBA трудно что-нибудь придумать. Ведь VBA, как мы увидим, дает возможность моментально создать интерфейс пользователя, Excel предоставляет средства для оперирования табличными данными, и, следовательно, все внимание можно сосредоточить на реализации событийных и общих процедур (см. раздел 2), т. е. на алгоритмизации и, собственно, программировании. Немаловажно также то, что среда разработки VBA встроена в MS Office, и поэтому на компьютерах в учебных классах не требуется установка и поддержка дополнительных средств программирования.
Предварительные сведения о создании приложений с помощью инструментальных сред визуального программирования уже приводились в подразделе 6.2. Здесь мы рассмотрим создание интерфейса пользователя, а также переменные, константы, инструкции и другие языковые конструкции Бейсика, с помощью которых строятся событийные и общие процедуры.
10.2. Создание интерфейса пользователя
Рассмотрим создание интерфейса пользователя на простом примере. Пусть на листе Excel размещены столбцы чисел. Требуется, чтобы проектируемое приложение позволяло пользователю выбрать столбец для сортировки, выбрать вариант сортировки (по возрастанию или по убыванию) и, наконец, выполнить саму сортировку. Из поставленной задачи следует, что наше приложение надо “оснастить” элементами управления (см. подраздел 2.2) для выбора номера столбца (поле во взаимосвязи со счетчиком), варианта сортировки (переключатели) и для запуска событийной процедуры сортировки (командная кнопка). С помощью VBA эти элементы управления можно разместить или прямо на листе Excel (рис. 10.1), или же на диалоговой форме, которая будет появляться в диалоговом окне (поверх листа Excel) при нажатии на кнопку Сортировать – кнопку целесообразно оставить на листе Excel и в этом случае. Рассмотрим первый вариант.
С помощью пункта меню Вид/Панели инструментов/Visual Basic разместим панель инструментов VBA рядом с другими панелями инструментов Excel (см. рис.10.1). На этой панели нас будут интересовать два значка: Элементы управления (значок в виде молоточков) и Редактор Visual Basic (соседний слева). Второй значок нам понадобится позже, во время разработки процедур, для переключения на окно редактора. А нажатие на кнопку с первым значком приведет к появлению в пределах листа Excel окна, содержащего палитру элементов управления (на рис. 10.1 – справа) и три кнопки: Режим конструктора, Свойства и Исходный текст.
Первая из этих кнопок позволяет перейти в режим конструктора. В этом режиме работа пользователя с таблицей Excel блокируется, но есть возможность создавать приложение VBA. Вторая кнопка позволяет открыть окно Свойства – оно показано на рисунке для счетчика, имеющего имя SpinButton1 (он выделен щелчком мыши). Третья кнопка позволяет переключиться в окно редактора, причем именно на процедуру обработки события, связанного с выделенным элементом управления – на рис.10.2 это событийная процедура, срабатывающая в тот момент, когда пользователь изменяет значение счетчика.
Итак, теперь на листе Excel имеется весь необходимый инструментарий для создания интерфейса приложения. Само создание интерфейса сводится к выбору элемента управления из палитры (на рис. 10.1 – справа), к размещению этого элемента с помощью мыши на листе Excel, к установке свойств элемента и к написанию событийной процедуры, если она требуется для данного элемента управления. В интерфейс нашего приложения включены следующие элементы управления:
· Надпись со статическим текстом, для которой установлено свойство Caption (Заголовок) – Номер столбца;
· поле, для которого установлено свойство Value (Значение) – 1; если пользователь не изменит это значение, то сортироваться будет первый столбец;
· счетчик; для него установлены свойства Min=1, Max=100, Value=1;
· переключатели, для которых установлены свойства Caption и Value; у одного из переключателей заголовок - По возрастанию, а у второго – По убыванию; у одного свойство Value=True (истина – истинным считается утверждение о выборе этого переключателя), у второго Value=False (ложь);
· командная кнопка; для нее установлено свойство Caption=Сортировать.
Каждому элементу управления VBA присваивает имя по умолчанию. Например, первому переключателю – OptionButton1, второму – OptionButton2, счетчику – SpinButton1, т. е. берется английское название элемента, и к нему присоединяется порядковый номер. Имя можно изменить, как всякое свойство объекта. Например, переключатели можно назвать короче: Option1, Option2. Имена элементов управления участвуют в образовании имен событийных процедур. Так, при двойном щелчке мышью по элементу SpinButton1 произойдет переключение на окно Visual Basic (Рис. 10.2), в котором автоматически появится пустая событийная процедура:
Private Sub SpinButton1_Change( )
End Sub
Правила записи процедур мы рассмотрим в следующих подразделах. Сейчас важно понять, что процедура SpinButton1_Change будет автоматически выполняться, как только пользователь изменит значение счетчика (Change – изменять).
Панель инструментов
![]()
|
|
![]() |
Visual Basic
|
|
Вторая событийная процедура в нашем примере связывается с командной кнопкой CommandButton1, имеющей заголовок Сортировать. При двойном щелчке по этой кнопке в окне редактора VBA автоматически возникнет пустая процедура:
Private Sub CommandButton1_Click( )
End Sub
Ее имя образовано из имени элемента управления (CommandButton1) и имени события (Click – щелчок).
Переключение на окно Excel


Создание формы
Рис. 10.2. Окно Visual Basic, в нем окна проекта и редактора
Приведенный пример показывает, что создание интерфейса приложения, которое было трудной работой в более ранних системах программирования, в современных средах визуального программирования выполняется моментально – и это можно утверждать без преувеличений. Но поясним еще вариант размещения элементов управления не на листе Excel, а на отдельной форме. В этом варианте на лист Excel поместим только кнопку CommandButton1 с тем же заголовком Сортировать, а остальные элементы управления и дополнительно кнопку Ok поместим на диалоговую форму с именем Dialog1 и заголовком Параметры сортировки. Для создания этой формы надо переключиться в окно Visual Basic и с помощью кнопки на панели инструментов или через пункт меню Вставка/UserForm создать пустую форму. Она появится в окне Visual Basic. При щелчке мышью по форме появляется также окно Панель элементов, содержащее палитру элементов управления. Теперь остается с помощью кнопки на панели инструментов раскрыть в окне Visual Basic еще окно свойств, установить свойства формы и разместить на ней требуемые нам элементы управления точно так же, как это было сделано на листе Excel (Рис. 10.3). Такой подход почти освободит лист Excel от элементов управления, но потребует дополни
тельных усилий при разработке приложения.
Рис. 10.3. Окно Visual Basic во время создания диалоговой формы
Во-первых, теперь в начало событийной процедуры CommandButton1_Click (ее мы будем рассматривать позже) надо вставить команду для показа формы: Dialog1.Show. В этой инструкции записывается имя объекта (имя, присвоенное нами форме) и, через точку, имя метода – показать. Следовательно, как только пользователь нажмет командную кнопку на листе Excel, поверх этого листа появится диалоговое окно (Рис. 10.4). В нем пользователь выберет параметры сортировки и нажмет кнопку Ok.
Во-вторых, надо написать событийную процедуру для кнопки Ok. Эта процедура должна содержать команду Dialog1.Hide - скрыть форму Dialog1.
В-третьих, в процедурах, принадлежащих листу Excel, а не форме Dialog1 (см. процедуру CommandButton1_Click на рис. 10.2), изменится обращение к свойствам элементов управления. Так, теперь надо писать не TextBox1.Value, а Dialog1.TextBox1.Value – так указывается свойство Value (значение) объекта TextBox1 (редактируемое поле), принадлежащего форме Dialog1.
Приведенные сведения о конструировании интерфейса пользователя вполне достаточны для создания не слишком сложных приложений. При установке свойств элементов управления, кроме значений таких свойств, как Caption, Value, обычно изменяют еще некоторые свойства, предлагаемые по умолчанию, например, те, что определяют дизайн интерфейса: Font (шрифт), BorderStyle (стиль рамки – отсутствует, одинарная и т. п) и др. Теперь перейдем к рассмотрению основных конструкций и команд (инструкций) языка Visual Basic. Его знание необходимо для разработки событийных и общих процедур.
![]() |
Рис. 10.4. Интерфейс приложения, созданный с применением диалоговой формы
10.3. Модули, процедуры, функции
Приложение, созданное на VBA, имеет модульную структуру. Это означает, что процедуры, входящие в приложение, группируются в модули. Когда в подразделе 10.2 мы создавали интерфейс приложения, размещая все элементы управления на листе Excel, приложение содержало только один модуль, который, подобно рамке, включал в себя все процедуры приложения (см. рис. 10.2). Этот модуль относился к объекту Excel, имеющему имя Лист1. Когда был применен второй вариант конструирования интерфейса (вариант с диалоговым окном Dialog1), наш проект (разрабатываемое приложение) стал содержать два модуля – переключаться на их тексты удобно с помощью пункта меню Окно (см. рис. 10.2, 10.3).
Первый модуль по-прежнему относится к объекту Лист1, а второй к форме Dialog1. В составе первого модуля осталась событийная процедура CommandButton1_Click( ), не имеющая параметров (в скобках – пусто), и общая процедура Mrows(I1 As Integer, J1 As Integer, M As Integer), которая определяет номер M последней занятой ячейки в столбце J1, причем проверки ячеек столбца начинаются с ячейки I1. При вызове этой процедуры для конкретизации ее функций используются 3 параметра. Параметр I1 введен, чтобы расширить область применимости процедуры: ведь в общем случае столбцы чисел могут размещаться не с первой, а с любой другой строки таблицы Excel.
Второй модуль относится к форме Dialog1 и содержит процедуры, реагирующие на события, происходящие с элементами управления, размещенными на диалоговой форме. Первая из этих процедур реагирует на изменение счетчика:
Private Sub SpinButton1_Change( )
TextBox1.Value = SpinButton1.Value
End Sub
Смысл этой процедуры в том, что при изменении свойства Value счетчика, это изменение надо отобразить в поле TextBox1, изменив и его свойство Value. Вторая событийная процедура диалоговой формы реагирует на нажатие кнопки Ok:
Private Sub ButtonOk_Click( )
Dialog1.Hide
End Sub
Эта процедура делает диалоговую форму скрытой, невидимой.
Те процедуры, которые начинаются со слова Private, являются собственностью модуля, в который они включены: к ним нельзя обратиться из других модулей. Процедуры, перед названием которых указано только слово Sub (сокращение от Subroutine – подпрограмма), доступны и из других модулей. Таким образом, процедура – это подпрограмма, имеющая заголовок, содержащая команды VBA (тело процедуры) и завершающаяся инструкцией End Sub. Заголовок процедуры определяет ее тип, имя и параметры, конкретизирующие ее функции. Поясним синтаксис процедуры на примере общей процедуры Mrows - ее параметры были пояснены выше. Эта процедура имеет вид:
Sub Mrows(I1 As Integer, J1 As Integer, M As Integer)
‘ J1 – номер столбца,
‘ M – определяемый номер последней непустой ячейки в столбце
M = I1 ‘ I1 – номер (по вертикали) первой проверяемой в столбце J1 ячейки
Do Until IsEmpty(Cells(M, J1)) ‘начало цикла
‘ цикл, завершающийся инструкцией Loop, выполняется, пока ячейка (M, J1) не пуста
M = M + 1 ‘ наращивание M – это переход к следующей ячейке столбца
Loop ‘конец цикла
M = M - 1
End Sub
Параметры процедуры описываются в скобках, в строке заголовка, с указанием типов через ключевое слово As (как, в качестве). В эту процедуру вставлены комментарии – начинаются с апострофа. В каждой строке записывается одна или несколько инструкций. В последнем случае инструкции разделяются двоеточием (см. первую процедуру на рис. 10.2). Общую процедуру можно вызывать из других процедур. Так, с помощью процедуры Mrows событийная процедура CommandButton1_Click (см. рис. 10.2) определяет количество чисел в столбце, подлежащем сортировке.
Кроме подпрограмм-процедур, обозначаемых ключевым словом Sub, применяются подпрограммы-функции, обозначаемые ключевым словом Function. Так, вместо процедуры Mrows можно было написать функцию Mrows:
Function Mrows(I1 As Integer, J1 As Integer) As Integer
Dim i As Integer
i = I1 - 1
Do
i = i + 1
Loop Until IsEmpty(Cells(i, J1))
Mrows = i - 1
End Function
Подпрограмму оформляют в виде функции, если результатом является единственное значение. Если же надо сразу получить более одного результата, например, найти число непустых строк и столбцов таблицы, то можно использовать только процедуру Sub. Функция отличается от процедуры не только первой и последней инструкциями, но и присваиванием результата ей самой (см. предпоследнюю инструкцию функции Mrows). В функцию мы включили описание переменной i, а цикл (инструкции от Do до Loop) записали для разнообразия иначе, чем в процедуре. Вызов функции Mrows из событийной процедуры CommandButton1_Click (см. рис. 10.2) имел бы вид: M = Mrows(I1, J). Здесь обязательно надо подчеркнуть различие между формальными параметрами процедуры (или функции) и фактическими параметрами, используемыми при ее вызове. Так при написании функции Mrows второй параметр обозначен J1 – это формальный параметр, ему соответствует адрес ячейки, содержащей номер столбца. В момент написания функции этот адрес не известен и не важно, как он обозначен в тексте функции. Реальное значение этого адреса – фактический параметр - передается как второй параметр функции в момент ее вызова процедурой CommandButton1_Click. В этой процедуре номер столбца обозначен через J. Таким образом, важно не обозначение параметра при вызове функции, а его тип (здесь – целое число) и порядковый номер в списке передаваемых фактических параметров.
Обратим также внимание на то, что функция Mrows, в свою очередь, обращается к встроенной функции IsEmpty, а ее параметром является значение встроенной функции Cells. Функция Cells(i, j) предоставляет свойства, в том числе и значение, ячейки, расположенной на пересечении i-ой строки и j-го столбца того листа Excel, к которому относится модуль. Если потребуется ячейка на листе с именем Лист2, то надо написать: Лист2.Cells(i, j) или Лист2.Cells(i, j).Value - при доступе к конкретному свойству ячейки (i, j) – к хранимому в ней значению. Функция IsEmpty проверяет, является ли ячейка пустой. Если это так (ячейка не инициализирована – в ней хранится условный редкий код), то функция возвращает логическое значение (типа Boolean), равное True (истина), иначе – False (ложь). Другими словами, в функции Mrows значение переменной i наращивается в цикле до тех пор, пока не встретится пустая ячейка в столбце.
Нельзя забывать о различиях в вызове процедур и функций при программировании на VBA. При вызове процедуры указывают ее имя, пробел и параметры, разделяемые запятыми. Функцию используют в различных выражениях, например, в инструкциях присваивания. При этом указывают имя функции и далее, в скобках, параметры – аргументы функции. Функции могут использоваться и в качестве процедур, если возвращаемый результат не нужен. Так, встроенная в Visual Basic функция MsgBox, позволяет вывести сообщение или организовать простенький диалог. При выводе сообщения MsgBox вызывается как процедура:
MsgBox M, ,”Номер последней строки”
В этом примере выводится диалоговое окно с заголовком ”Номер последней строки”. Окно содержит число M и одну кнопку Ok. Эту процедуру можно вызвать немного иначе:
MsgBox Str(M), 0 ,”Номер последней строки”
Результат будет тем же самым. Просто во втором варианте число M перед выводом преобразовано в строку символов (с помощью встроенной функции STR), и явно задан второй параметр. Вообще говоря, первый параметр этой процедуры должен быть именно строкой символов, а не числом, но VBA “понимает”, что M – это число, и сам преобразует его к строковому типу данных. Второй параметр – это код размещения в окне определенных кнопок. Код 0 – это значение по умолчанию, его можно не указывать между запятыми на месте второго параметра, и будет выведена только одна кнопка Ok. Второй параметр играет важную роль при организации диалога, т. е. при использовании MsgBox в качестве функции:
Dim Sort As Boolean
Sort=True ‘Сортировка по возрастанию
IF MsgBox(“По возрастанию?”, 4 , “Вариант сортировки”)=7 Then Sort=False
В этом примере переменная Sort описана как логическая - она может принимать одно из двух значений: True (истина) или False (ложь). Сначала принимаем вариант сортировки по возрастанию (Sort=True), а затем выводим стандартное диалоговое окно с заголовком “Вариант сортировки”. В окне помещаем строку “По возрастанию?” и две кнопки: “Да” и “Нет”. Код 4 (второй параметр функции) задает вариант вывода в окне именно этих двух кнопок. Результатом функции является код выбранной кнопки. Код кнопки “Да” равен 6, а кнопки “Нет” – 7. Если пользователь выбрал “Нет”, то значение переменной Sort изменяется на False. Программисту трудно запомнить все эти коды вариантов вывода и выбора кнопок. Поэтому VBA хранит константы, имена которых запомнить легче - их можно указывать вместо числовых кодов. Приведем некоторые из них:
VbOkOnly=0, VbOkCancel=1, VbYesNoCancel=3, VbYesNo=4 – варианты вывода кнопок,
VbOk=1, VbCancel=2, VbYes=6, VbNo=7 – возвращаемые значения.
Процедура-функция MsgBox довольно удобна во многих случаях. Для получения подробной справки о ней или о другой встроенной функции (Таблица 10.1) достаточно ввести название функции в строку окна редактора VBA, поместить на это название курсор и нажать функциональную клавишу F1. В открывшемся окне справки полезно обратить внимание на ссылки См. также и Пример.
Теперь необходимо рассмотреть переменные и типы данных, применяемые в VBA. Но прежде сделаем еще два замечания по поводу модулей.
Таблица 10.1
Часто используемые встроенные функции Visual Basic
Категория функций | Примеры функций |
Математические | ABS( ) - абсолютное значение числа |
RND( ) - случайное число | |
INT( ) - целая часть числа | |
SQR( ) - квадратный корень | |
Тригонометрические функции, логарифмы и др. | |
Строковые | LCASE( ) - преобразование строки в строчные буквы |
UCASE( ) - преобразование строки в заглавные буквы | |
LEN( ) - определение длины строки и др. | |
INSTR( ) - позиция первой встречи одной строки внутри другой | |
Даты и времени | DATE( ) - текущая дата |
TIME( ) - текущее время | |
NOW( ) - текущая дата и время | |
DAY( ) - номер дня года и др. | |
Преобразования типов данных | CINT( ) - действительного числа в целое (с округлением) |
CSTR( ) - числа в строку символов | |
CVAR( ) - преобразование в тип данных VARIANT | |
FORMAT( )- форматирование данных, формирование строк | |
VAL( ) - преобразование строки символов в число и др. |
Кроме модулей, которые автоматически создаются при размещении элементов управления на листах книги Excel и на формах, можно создавать дополнительные модули с помощью пункта меню Вставка/Модуль в окне Visual Basic. Такой модуль удобно использовать в крупных проектах для размещения общих процедур и глобальных (доступных всем процедурам проекта) переменных.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |





