Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Приемы программирования в среде Visual Basic for Application. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
кода (закладки, точки останова, исполняемая команда и т.д.). Обычно нет необходимости изменять эти настройки, так как они хорошо продуманы.
Закладка (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 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]