Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Приемы программирования в среде Visual Basic for Application. Учебное пособие
.pdf
кода (закладки, точки останова, исполняемая команда и т.д.).
Обычно нет необходимости изменять эти настройки, так как они
хорошо продуманы.
Закладка (General) содержит ряд настроек, которые задают раз-
меры сетки для форм пользователя и необходимость привязки
объектов к ней, режимы редактирования, срабатывания на ошибки
и компиляции программы.
Закладка (Docking) определяет какие из окон и панелей долж-
ны быть привязаны к определенным местам рабочей области
экрана или располагаться поверх рабочей области экрана.
Как несложно заметить, для команд меню Tools не предусмот-
рены комбинации клавиш, посредством которых эти команды вызываются. Принимая во внимание специфику выполняемых этими командами действий, можно порекомендовать в том случае, если настройки системы часто меняются, выносить на панель инструментов
кнопки для соответствующих команд.
Замечание. Здесь еще раз хочется напомнить, что даже если для команды не указана специальная пиктограмма, кнопку все равно можно
разместить на панели инструментов. Делается это точно так же, как и в
процессе настройки панелей инструментов приложения Excel.
• Add-Ins позволяет включать Add-In объекты в проект. В этом ме-
ню находится всего одна команда, которая приводит к отображению диалогового окна Add-Ins Маnаgеr. Это окно позволяет регистрировать, загружать или выгружать и определять поведение
дополнений.
• Windows (Ctrl+W) – набор команд управления окнами, которые
являются стандартными во всех приложениях MS Office. С их помощью можно различными способами расположить окна и выбрать любое из них.
• Help (Ctrl+H) – команды вызова системы помощи и комментарии
к пакету.
Теперь кратко рассмотрим кнопки на панелях управления. Они
дублируют основные команды меню. Панелей всего четыре:
• первая Стандартная (Standard) содержит основные команды рабо-
ты с файлами, редактирования, поиска и т.п. Она обычно расположена под строкой меню, однако при помощи мышки ее можно перетаскивать в другие области окна VB;
- 21 -

• вторая панель Редактирование (Edit) включает команды работы с
кодом и установки различных закладок. Команды простейшего текстового редактора: копирование и перемещение текста в буфер обмена, вставка текста из буфера, поиск и/или замена слов и фраз в тексте
программы и т.д.;
• третья панель Отладка (Debug) – команды по отладке кода;
• четвертая панель Пользовательская форма (UserForm) со-
держит команды создания пользовательских окон.
Как в любом пакете имеется команда Настройка… панелей ин-
струментов, которая становится доступной в контекстном меню панели
инструментов или строки меню. С ее помощью можно изменить набор
кнопок любой из панелей. Для выяснения назначения любой кнопки
достаточно просто зафиксировать на ней курсор и система выведет текстовый комментарий по команде, которая привязана к этой кнопке.
Стандартные приемы программирования
в среде VBA
Введение
Прежде чем перейти к основным приемам создания программ
вспомним основные элементы программного кода и стандартные алгоритмы, которые обычно используются при программировании.
При написании программного кода рекомендуется пользоваться
структурированием записи, когда каждый внутренний цикл или оператор, который выполняется внутри предыдущего оператора, должен
иметь отступ. Такой подход позволяет легче читать код. В нем сразу
видно, что выполняется в следующий момент. Для увеличения отступа используется клавиша Tab, и клавиши Shift+Tab для его уменьшения. Для перемещения группы операторов можно пользоваться
этими же клавишами, предварительно выделив фрагмент кода, который надо переместить. Размер табуляции можно задать в настройках
Tools Options на закладке Editor в поле Tab Width. По умолча-
нию стоит значение 4 символа.
Для оптимального использования памяти лучше явно описывать
все переменные, которые используются в программе. По умолчанию
все переменные имеют тип Variant, в котором можно хранить любые
данные, но такой подход приведет к дополнительному выделению
памяти для этой переменной.
В языках программирования существуют ключевые (служебные)
- 22 -

слова, которые используются только в конструкциях языка. Ключевые
слова нельзя использовать в качестве имен программ и переменных в
программах. По умолчанию среда VBA настроена таким образом, чтобы при наборе текста программы в окне кода все ключевые слова выделялись синим цветом, комментарии – зеленым цветом и синтаксические
ошибки - красным.
Отладка программы
Отладка программы – важное и ответственное мероприятие. Для
этого используются режимы пошагового исполнения программы, точки
останова программы и опросы значений переменных или выражений.
Чтобы запустить пошаговое исполнение программы надо встать
курсором на заголовке исполняемой программы, и нажать клавишу F8.
Текущая строка меняет цвет фона на желтый. Повторное нажатие клавиши F8 выполнит команды текущего оператора и перейдёт к следующему оператору. Иногда бывает удобно пропустить часть строк, которые уже были проверены. Для этого надо встать на последнюю проверенную строку программного кода и запустить исполнение программы
воспользовавшись комбинацией клавиш Ctrl+F8. Система выполнит
все строки программы и остановится на строке, где стоит курсор. Если
вы отлаживаете программу, которая имеет внутренние подпрограммы и
функции, то вы можете выполнить любую подпрограмму без захода в
ее код, если воспользоваться комбинацией клавиш Shift+F8.
Для выхода из подпрограммы надо пользоваться командой
Ctrl+Shift+F8. В любой момент вы можете завершить исполнение программы либо, выполнив ее до конца командой Continue (F5), или про-
сто прервать ее исполнение командой Reset.
Если заранее известно проблемное место программы, то на этой
строке можно поставить точку останова (Toggle BreakPoint). Для
этого достаточно щелкнуть слева от этой строки на серой вертикальной полосе или просто нажать клавишу F9. Строка окрасится в коричневый цвет, а на вертикальной полосе появится кружок такого же
цвета. После этого можно просто запустить программу, и как только
текущей строкой станет отмеченная, программа остановится, и можно будет продолжить ее исполнение в пошаговом режиме.
Для контроля над программой надо иметь возможность следить
за значениями переменных. Для этого в момент остановки программы
достаточно подвести курсор к имени переменной, и под курсором
появится небольшая панелька с информацией о ее значении.
- 23 -

Иногда для сложных объектов система не выдает такую подсказку, в этом случае можно воспользоваться окном Quick Watch
(Shift+F9) (рис.6). Для
этого надо выделить
нужный объект или
выражение, и нажать
комбинацию клавиш
Shift+F9.
Если необходимо
постоянно следить за
некоторыми переменными, то их лучше добавить в панель Watches
командой Add Watch
(рис.7). В ней можно указать область видимости
переменных и условия
остановки программы,
реализуемой в двух вариантах: когда значение
становится равным True
или когда оно меняет
значение.
Умение быстро и
Рис.6. Окно быстрого просмотра значений
Рис.7. Окно добавления переменных
на панель Watches
эффективно проводить
режим отладки программы позволит вам хорошо разрабатывать
сложные программы.
Теперь остановимся на основных элементах языка программирования.
Основные элементы программного кода в среде VBA
Описание переменных
Переменные в программировании имеют такой же смысл, как в
математике. Перед тем, как использовать переменную, ее рекомендуется описать (объявить). Объявление переменных выполняется с помощью следующих описаний:
Dim
•
– стандартное описание, описывающее переменные для данно-
го объекта, в котором это описание используется;
- 24 -

•
Private
•
Public
– описание переменных только внутри объекта;
– описание переменных для нескольких однородных объ-
ектов при описании в одном из них.
Видимость переменных будет определяться размещением их описания в проекте. Рассмотрим структуру проекта и области видимости переменных, в зависимости от места их
описания (рис.8).
В каждом из объектов (Лист1(Лист1),
ЭтаКнига, UserForm1 и Module1) может
находиться код программы и в нем область
Рис.8. Дерево проекта
(General) (см. рис.2), которая содержит блок
(Declaration) для описания переменных.
Для доступа к переменным во всем проекте, их надо объявить в
Module1 с использованием описания
менные для всех Modules, и использование
Public, Dim
Private
описывает пере-
описывает пе-
ременные только для текущего модуля.
В других объектах (Лист1(Лист1), ЭтаКнига, UserForm1)
можно использовать описание
Dim,
и обычно это описание касается
только данного объекта. Попытка описания там общих переменных
для всего проекта приводит к ошибкам или созданию различных переменных в разных модулях проекта, что делает программу неработоспособной.
Иногда можно описать переменные с помощью
Dim
внутри подпрограмм, эти переменные будут видны только внутри данной процедуры. Такой подход используется, когда стандартная процедура сделана раньше и импортирована в данный проект, но имена переменных, которые используются в ней, уже имеются в этом проекте, и могут быть изменены при обращении к подпрограмме.
Синтаксис оператора описания переменной:
Dim переменная [As тип]
В этой конструкции:
•
Dim
(Dimension - размер) - ключевое слово, свидетельствующее о
том, что объявляется переменная;
•
переменная
•
Аs
(как) - ключевое слово, используемое при задании типа данных;
•
тип
– тип данных для объявляемой переменной.
- имя объявляемой переменной;
- 25 -

Здесь и далее квадратными скобками выделяется необязательная
часть конструкции (которая может отсутствовать).
Когда при выполнении программы компьютер встречает опера-
тор
Dim
,
он выделяет переменной необходимую область своей опера-
тивной памяти. Размер выделенной памяти, исчисляемый в байтах,
определяется типом переменной.
Одним оператором
Dim
можно описать несколько переменных,
перечислив их через запятую. Пример:
Dim i As Bite, j As Integer, k As Integer
При использовании русских букв следует иметь в виду следующее: хотя некоторые из них (а, е, о, р, с, у, х) имеют такое же написание, как английские буквы, для компьютера буквы с одинаковым русским и английским написанием - разные символы (литеры). Например, переменные с буквами «о», «с», «а», набранные русскими и английскими буквами, являются разными переменными, и при выполнении программы им отводятся разные ячейки оперативной памяти.
Поэтому для снижения вероятности ошибок при написании программного кода лучше использовать либо только русские символы
или только английские для написания имен переменных и программ.
Типы данных
Double
Согласно описанию переменной типа
называются числовыми типами данных.
Вуtе, Integer, Long, Сиrrеnсу, Single
Вуtе
в ячейке оператив-
и
ной памяти компьютера могут храниться только числа от 0 до 255;
• в ячейке, соответствующей переменной типа
Integer
или
Long
могут храниться положительные и отрицательные целые числа;
• в ячейке, соответствующей переменной типа
ный),
Sinlе
(Одинарной точности) или
Double
Сиrrеnсу
(Денеж-
(Двойной точно-
ный), могут храниться числа с дробной частью.
Если при описании переменной программист не указывает тип
данных (например,
присвоен тип
Variant
Dim W
), то переменной (W) автоматически будет
. Это означает, что в ячейке, соответствующей
этой переменной, может храниться информация любого вида, т.е. тип
Variant
аналогичен формату «Общий» таблиц Excel.
Рассмотрим оператор
Dim i, j
Если мы хотим, чтобы обе переменные (i, j) имели тип
Integer
Dim i As Integer, j As Integer
, то должны их описать так:
,
- 26 -

Или в два оператора
Dim i As Integer
Dim j As Integer
Константы
Наряду с переменными в VBA используются константы. Как и
переменной, константе соответствует область оперативной памяти.
Однако в отличие от переменной, содержимое ячейки, соответствующей константе, в программе изменить нельзя.
Существует две разновидности констант - пользовательские и
встроенные.
Пользовательские константы требуют объявления. Для этого
используется оператор вида
Const константа [As тип] = значение
В этом операторе:
•
Соnst
– ключевое слово, которое показывает, что объявляется
константа;
•
Аs
– ключевое слово, с которого начинается задание типа данных;
•
константа
•
тип
- тип данных для объявляемой константы или тип константы;
•
значение
– имя объявляемой константы;
– значение, присваиваемое константе.
Примеры объявления констант:
Const pi As Double = 3.141592654
Const e As Double = 2.718282828
Const Message = "3aвершение paботы"
Const MyDate As Date = #10 Jan 2008#
Const beta As Currency = 1/4
При помощи одного оператора
Const
можно объявить несколь-
ко констант, перечислив их через запятую.
В качестве примера использования констант рассмотрим следующую программу перевода угла (аnglе) из градусной меры в радианную:
Public Sub deg2rad()
Dim angleD As Double
Dim angleR As Double
Const pi As Double = 3.141592654
angleD = 270 'Угол равен 270 градусам
angleR = angleD * pi/180'Угол в радианах
End Sub
- 27 -

Обратите внимание, что константа рi объявляется оператором
Const pi As Double = 3.141592654
перед использованием в операторе
angleR = angleD * pi/180
Встроенные константы не требуют объявления.
Имена встроенных констант Visual Basic начинаются с префикса
vb
. Слово «префикс» переводится с латинского как «стоящий перед
корнем», «приставка». Например нам встретятся следующие встроенные константы:
vbRed
, – красный цвет и др.
vbCr –
перевод строки в текстовой переменной,
Операторы присваивания
Оператор присваивания имеет следующий синтаксис:
переменная = выражение
В нем
переменная
– имя переменной,
выражение
– арифметическое, логическое выражение или строка, которую можно рассматривать как выражение.
Оператор присваивания работает следующим образом:
1) компьютер рассчитывает значение выражения
выражение
;
2) полученное значение записывается в ячейку оперативной памяти
компьютера, соответствующую переменной
переменная
, т.е. при-
сваивает этой переменной результат вычисления.
Арифметические выражения
Одной из основных конструкций любого алгоритмического языка является арифметическое выражение, очень похожее на математическое выражение. Оно содержит постоянные (числа, константы), переменные и/или функции, соединенные между собой знаками арифметических операций. Отдельно взятое число, константа, переменная
или функция также является арифметическим выражением.
Согласно синтаксису оператора присваивания, арифметическое
выражение находится справа от знака присваивания =.
Пример.
z=5 * х + 12 * у
Арифметические операции обозначаются так: + (сложение),
-
(вычитание, изменение знака), * (умножение), / (деление), ^ (возведение в степень), \ (целочисленное деление, т.е. деление целых чисел с
отбрасыванием остатка),
Моd
(определение остатка от деления целых
чисел, являющегося целым числом).
- 28 -

Пример.
Public Sub Арифметика1()
Dim m As Integer
Dim n As Integer
Dim x As Double
m = 5: n = 2
x = m/n 'Результат: х = 2.5
x = m\n 'Результат: х = 2
x = m Mod n 'Результат: х = 1
End Sub
При наличии в выражении нескольких арифметических операций порядок их выполнения определяется правилом приоритетов
арифметических операций – наивысший приоритет имеют функции,
потом идет возведение в степень, далее операции умножения и деления и в конце сложение и вычитание.
В арифметических выражениях могут присутствовать величины
(переменные и постоянные) разных типов. Если тип, полученный при
вычислении арифметического выражения в правой части оператора
присваивания (справа от знака присваивания =), не совпадает с типом
переменной в левой части оператора присваивания (слева от =), то
при выполнении оператора присваивания производится преобразование результата к типу переменной.
Типичной является ситуация, когда значение арифметического
выражения справа от знака присваивания имеет дробную часть, а переменная слева имеет тип
Integer
или
Long
. При этом в ходе выполнения присваивания происходит преобразование значения согласно следующему правилу округления:
• если дробная часть значения равна или больше 0.5, то это значение
округляется до ближайшего большего целого числа;
• в противном случае значение округляется до ближайшего меньше-
го целого числа.
При выполнении операций \ и
исходит округление операндов до целых чисел, т.к. операции \ и
Моd
над дробными числами про-
Mоd
применимы только к целым числам. Округление производится согласно сформулированному правилу. Результаты выполнения операций \ и
Моd
являются целыми числами.
- 29 -

Логические выражения
Помимо арифметических выражений, в VBA можно использовать логические выражения (утверждения), принимающие одно из
двух значений типа
или
False
(ложь, логический нуль).
Bоо1еаn — Тruе
(истина, логическая единица)
Примеры логических выражений:
5 >= 3
5 < 3
False
Знаки >= и < являются известными знаками сравнения «больше
или равно» и «меньше». Первое логическое выражение имеет значе-
ние
Тruе
, второе -
False
, третье -
False
.
Согласно синтаксису оператора присваивания, логическое выражение находится справа от знака присваивания =.
Пример. Программа с четырьмя операторами присваивания:
Public Sub Логика1()
Dim x As Integer
Dim y As Integer
Dim blnA As Boolean
x = 5
y = 2
blnA = x > y 'Результат: blnA = Тrue
blnA = x = y 'Результат: blnA = False
End Sub
В программе
х = у
. Их значения при
Логика1
х = 5
два логических выражения:
и
у = 2
приведены в комментариях.
х > у
и
Текстовые выражения
Иногда бывает необходимо построить текстовые строки программно в зависимости от ситуации. Это тоже выражения и требуют
знания определенных приемов. Для работы с текстовыми выражениями используется один оператор сцепления строк &. Его лучше
всегда ограничивать пробелами. В этих выражениях очень часто используются константы. Например, в выражении,
Name=”Вася”
X=”Привет “ & Name & VbCr & “Как ты себя чувствуешь?”
представленном следующим образом
Привет Вася
Как ты себя чувствуешь?
- 30 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
