Информатика VBA. Учебное пособие по дисциплинам Информатика иИнформационные технологии
Скачать 1.05 Mb.
|
Меню File (Файл) содержит команды для работы с файлами проекта: - Save Имя_книги_Excel – сохранить текущий проект (рабочую кни- гу Excel) на диске. - Import File – добавить существующий модуль, форму или класс из внешнего файла в текущий проект. - Export File – сохранить в файле текущий модуль, форму или класс в формате текстового файла для импортирования в другой проект или в целях архивирования. - Remove … – удалить модуль или форму из проекта, команда не доступна, если в Project Explorer не выбран никакой элемент. - Print – печатать форму или программный код. - Close and Return to Microsoft Excel – закрыть окно VBA и перейти на активный лист рабочей книги Excel. Меню Edit (Правка) содержит команды, предназначенные для редактирования: отмена последней операции, работа с буфером об- мена, поиск и замена фрагмента кода программы и др. Меню View (Вид) содержит команды вызова окон и панелей среды VBA. Меню Insert (Вставка) позволяют добавлять различные объек- ты, такие как модули и формы, в проект. Меню Format (Формат) содержит команды форматирования объектов в форме. Меню Debug (Отладка) содержит команды для тестирования и отладки приложения. Режим отладки позволяет непосредственно 115 контролировать выполнение макроса, останавливать и запускать про- грамму в заданных точках и отслеживать выполнение макроса по ша- гам. При этом можно запрашивать текущие значения переменных. Это можно сделать, наведя курсор на имя переменной, либо задав ее имя в окне Watches (смотреть, наблюдать) командой Add Watch (до- бавить контрольное значение). Точку останова при выполнении про- граммы можно задать клавишей F9, а последующее пошаговое вы- полнение осуществлять клавишей F8 или через команды меню Debug. Меню Run (Запуск) содержит команды управления запуском приложения, прерывать или возобновлять его выполнение или воз- вращать прерванный макрос в исходное состояние: - Команда Run Sub/User Form (запуск подпрограммы/ запуск фор- мы) запускает макрос, который редактируется в данный момент, то есть VBA запускает программу, на тексте которой находится кур- сор редактирования исходного кода. Если какая-либо форма ак- тивна, VBA запускает эту форму. - Команда Break (прервать) прерывает выполнение программы и приводит к тому, что редактор VBA переходит в режим прерыва- ния (Break mode). Break mode используется при отладке кода VBA. - Команда Resert (сброс) устанавливает все переменные модульного уровня и Call Stack (список последовательности вызо- вов) в исходное состояние. Позиции меню Run продублированы на панели инструментов. Меню Tools (Сервис) содержит команды управления настрой- ками инструментальной среды VBA. Меню Add-Ins (Надстройки) содержит команды вызова допол- нительных утилит, часто называемых надстройками (add-ins). Меню Window (Окно) содержит стандартные команды управ- ления окнами. 116 Меню Help (Справка) содержит команды вызова справочной системы VBA Интеллектуальные возможности редактора кода Написание программ существенно облегчается за счет способ- ности редактора кода автоматически завершать написание операто- ров, свойств и параметров. При написании кода редактор сам предла- гает пользователю список компонентов, логически завершающих вводимую пользователем инструкцию. Например, набирая код Application. после ввода точки на экране отобразится список компонентов (рису- нок А.2), которые логически завершают данную инструкцию. Двой- ной щелчок на выбранном элементе из этого списка или нажатие кла- виши <Таb> вставляет выбранное имя в код программы. При этом использование клавиши <Таb> вместо мышки иногда предпочтитель- ней, т. к. в этом случае можно продолжить ввод компонентов выбо- ром из меню. Так выбор компонента WorksheetFunction открывает новое контекстное меню с перечислением доступных в VBA функций Excel (см. Рисунок А.3). Рисунок А.2 - Выбор варианта возможного завершения команды в VBA 117 Рисунок А.3 – Контекстное меню выбора функций Excel Список математических функций Excel, доступных в VBA через метод Application, приведен в приложении В. Следует заметить, что использование параметра WorksheetFunction не является обязатель- ным. Если программист знает название функции Excel в английской транскрипции и перечень необходимых для этой функции парамет- ров, то вызвать ее можно без указания свойства: a=Application .имя_Функции(параметры) Пример. Функцию для вычисления максимального значения четырех аргументов можно записать двумя способами: Application.WorksheetFunction.max( a, b, 2*c, 5) Application.max( a, b, 2*c, 5) В первом случае функцию можно выбрать из контекстного меню и получить подсказку по использованию этой функции. 118 Приложение Б Операции в VBA и приоритеты операций В таблице Б.1 приведены обозначения арифметических опера- ций VBA. Таблица Б.1 - Обозначения арифметических операций Символы операции Синтаксис Имя/Описание Пример Результат + N1 + N2 Сложение. Прибавляет N 1 к N2 2+3 5 – N1 – N2 Вычитание. Вычитает N 2 из N1 12-7 5 * N1 * N2 Умножение. Умножает N 1 на N2 2*2.5 5 / N1 / N2 Деление. Делит N1 на N2. 15/3 21/4 5 5,25 \ Nl \ N2 Целочисленное деление. Делит N1 на N2, отбра- сывая любую дробную часть так, чтобы резуль- тат был целым числом. 18\3 21\4 5 5 N1 Mod N2 Деление по модулю. Де- лит N1 на N2, возвращая только остаток операции деления. 17 Mod 6 5 ^ N1 ^ N2 Возведение в степень. Возводит N1 в степень N2. 2^3 8 Оба операнда N1 и N2 должны быть численными выражениями или строками, которые VBA может преобразовать в число. 119 Операции сравнения Операции сравнения также называют операциями отношения (relational operators ). Результатом любой операции сравнения явля- ется значение типа Boolean. Символы операций сравнения приведены в таблице Б.2. Таблица Б.2 – Операции сравнения Символ операции Синтаксис операции Наименование/описание = El = Е2 Равенство. True, если El равно Е2, иначе – False < El < Е2 Меньше, чем. True, если El меньше, чем Е2, иначе – False <= El < Е2 Меньше, чем или равно. True, если Е1 меньше или равно Е2, иначе – False <> El <> Е2 Не равно. True, если Е1 не равно Е2, иначе – False > El > Е2 Больше, чем. True, если Е1 больше, чем Е2, иначе – False >= El >= Е2 Больше, чем или равно. True, если Е1 больше или равно Е2, иначе – False Операнды Е в этой таблице - любое действительное выражение VBA Конкатенация строк Присоединение одной строки к другой называется конкатена- цией (concatenation) строк. Знак « & » можно использовать только для конкатенации строк. Общий синтаксис знака & такой: Operand1 & Operand2 [& Operand3…] Operand1 и Operand2 – любые допустимые строковые или чис- ленные выражения. VBA преобразует числа в строки перед выполне- нием операции конкатенации. Тип данных результата конкатенации строк – это всегда тип String. 120 Логические операторы VBA Логические операторы VBA используются для объединения ре- зультатов отдельных логических выражений, чтобы создать сложные критерии для принятия решений в процедуре (таблица Б.3). Таблица Б.3– Логические операторы VBA Логический оператор Синтаксис Имя/Описание And El And E2 Конъюнкция. True, если оба Е1 и Е2 имеют значение True, иначе – False Or El Or E2 Дизъюнкция. True, если одно выра- жение или оба (Е1 и Е2) являются равными True; иначе – False Not Not El Отрицание. True, если Е1 имеет зна- чение False; False, если El является равным True Xor El Xor E2 Исключение. True, если Е1 и Е2 имеют разные значения; иначе – False Eqv El Eqv E2 Эквивалентность. True,если Е1 име- ет то же самое значение, что и Е2; иначе – False Imp El Imp E2 Импликация. False, когда Е1 является равным True и Е2 равно False; иначе True. Операнды Е в этой таблице представляет собой любое допустимое выражение с результатом типа Boolean, такое как операция сравне- ния. 121 Приоритеты выполнения операций при вычислении сложных выражений Сложное (составное) выражение (complex expression) – это любое выражение, образованное из двух или более выражений. В таблице Б.4 собраны операции по группам в порядке убывания приори- тета, то есть чем ниже расположена группа, тем позже выполняются ука- занные в ней операции. Для изменения этого порядка применяются круглые скобки. Операции одного уровня выполняются слева направо в том порядке, в котором они записаны в выражении. Таблица Б.4 – Приоритеты операций VBA Оператор или знак Комментарии ^ Возведение в степень, наивысший приоритет – Унарный минус - изменение знака числа *, / Умножение и деление имеют равные приоритеты; они вы- числяются по мере появления в выражении слева направо \ Деление нацело Mod Остаток от деления нацело +, – Сложение и вычитание имеют равный приоритет; они вы- числяются по мере появления в выражении слева направо & Всякая конкатенация строк выполняется после любых арифметических операций в выражении и перед любыми операциями сравнения или логическими операциями <, <=, >, >=, =, <>, Is Все операторы сравнения имеют равные приоритеты и вы- числяются по мере появления в выражении слева направо. Используйте круглые скобки для группирования операто- ров сравнения в выражениях Логические операторы Not And Or Xor Eqv Imp – имеют низший приоритет 122 Приложение В Математические функции VBA VBA предоставляет стандартный набор математических функ- ций приведенный в таблице В.1. Таблица B.1 – Математические функции VBA Функции Возвращает / действие Abs(N) Возвращает абсолютное значение N Cos(N) Косинус угла N, где N – это угол, измеренный в ра- дианах Sin(N) Возвращает синус угла; N – это угол, измеренный в радианах Tan(N) Возвращает тангенс угла; N – угол в радианах Atn(N) Возвращает арктангенс N как угол в радианах Exp(N) Возвращает константу е, возведенную в степень N (е – это основание натуральных логарифмов и она (при- близительно) равна 2,718282 Fix(N) Возвращает целую часть N. Fix не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Fix возвращает ближайшее отрица- тельное целое большее, чем или равное N Int(N) Возвращает целую часть N. Int не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Int возвращает ближайшее отрица- тельное целое меньшее, чем или равное N Log(N) Возвращает натуральный логарифм N Rnd(N) Возвращает случайное число; аргумент является не- обязательным. Используйте функцию Rnd только после инициализации VBA-генератора случайных чи- сел оператором Randomize Sgn(N) Возвращает знак числа: –1, если N – отрицательное; +1, если N –положительное; 0, если N равно 0 Sqr(N) Возвращает корень квадратный из N. VBA отображает ошибку исполнения, если N – отрицательное 123 Операнд N означает любое численное выражение? допустимое в VBA. Аргумент тригонометрических функции (синуса, косинуса и тангенса) задается в радианах, а не в градусах. Обратная тригонометри- ческая функция A t n ( x ) возвращает в программу значение угла в ра- дианах от -π/2 до π/2, тангенс которого равен значению арифметиче- ского выражения х. Связь между радианной и градусной мерами угла выражается через иррациональное число π ≈ 3,14159265358979323846. π π 180 Радианы Градусы 180 Градусы Радианы × = × = Для перевода градусов в радианы можно также использовать встроенную функцию Excel - Application.Radians(x), где x – угол, за- данный в радианах. Для получения числового значения константы π с точностью 15 цифр мантиссы можно использовать встроенную функцию Excel Ap- plication.Pi(), либо функцию VBA арктангенс Pi= Application.Pi() либо Pi=4*Atn(1) Примеры записи тригонометрических функций Алгебраическая запись Запись на VBA sin 15 ° ) n.Pi()/180 Applicatio * Sin(15 ) 15) n.Radians( Applicatio Sin( 80) 3.141593/1 * Sin(15 tg 2 x 3 Tan(X^3)^2 Cos 2 ( х + 0,2) 3 Cos( (X + 0.2)^3 )^2 124 Операторы пересчета В таблице В.2 приведены операторы VBA и встроенные функции Excel , позволяющие рассчитывать значения остальных тригонометри- ческих функций и обратных тригонометрических функций. Таблица В.2 – Вычисление тригонометрических и обратных тригоно- метрических функций Математическая запись функции Запись функции на VBA Встроенная функция Excel ctg x Cos(X) / Sin(X) - sec x 1 / Cos(X) - cosec x 1 / Sin(X) - Обратные тригонометрические функции arcsin x Atn(X / Sqr(-X * X + 1)) Application.asin(x) arccos x Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Application.acos(x) arcctg x Atn(X) + 2 * Atn(1) - arcsec x Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1)) - arccosec x Atn(X / Sqr(X * X - 1)) + (Sgn(X) – 1) * (2 * Atn(1)) - В таблице В.3 приведены операторы VBA и встроенные функ- ции Excel, позволяющие рассчитывать значения гиперболических функций. 125 Таблица В.2 – Вычисление гиперболических функций Математическая запись функции Запись функции на VBA Встроенная функция Ex- cel sh x (Exp(X) – Exp(-X)) / 2 Application.sinh(x) ch x (Exp(X) + Exp(-X)) / 2 Application.cosh(x) th x (Exp(X) – Exp(-X)) / (Exp(X) + Exp(-X)) Application.tanh(x) cth x HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) – Exp(- X)) - sech x 2 / (Exp(X) + Exp(-X)) - csch x 2 / (Exp(X) – Exp(-X)) - arsh x Log(X + Sqr(X * X + 1)) Application.Asinh(x) arch x Log(X + Sqr(X * X – 1)) Application.Acosh(x) arth x Log((1 + X) / (1 – X)) / 2 Application.Atanh(x) arcth x Log((X + 1) / (X – 1)) / 2 - arsch x Log((Sqr(-X * X + 1) + 1) / X) - arcsch x Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) - Значения логарифмов, отличных от десятичных и натуральных, мо- гут быть вычислены через функцию VBA – натуральный логарифм a Ln x Ln x Log a = , либо через встроенные функции Excel: - Application.Log10(x ) для вычисления десятичного логарифма; - Application.Log(x,a ) для вычисления логарифма по основанию «а». 126 Для определения минимального или максимального значения нескольких элементов можно использовать встроенные функции Ex- cel: - Application.min(x 1 , x 2 [, x 3 [, x 4 , …] ] ) – определение минимального значения перечисленных переменных; - Application.max(x 1 , x 2 [, x 3 [, x 4 , …] ] ) – определение максимально- го значения перечисленных переменных. Количество аргументов этих функций может быть от двух до 30. Вычисление корней нечётных степеней (п — произвольное ненуле- вое нечётное целое число). < − ≥ = = 0 , | | 0 , | | 1 1 1 x если x x если x x x n n n n Примеры записи операторов присваивания Математическое обозначение Запись на VBA y = log 5 x 2 Y = Log(X^2)/Log(5) y = 2 + x Y = Sqr(X+2.0) y = 3 4 Y = 4^(1/3) 3 x y = Y= Abs (Х)^(1/3)* Sgn (Х) 3 2 x y = Y=(X^2)^(1/3) или Y=Abs(X)^(2/3) 127 Приложение Г Функции преобразования данных Функции для преобразования одного типа данных в другой при- ведены в таблице Г.1. ТаблицаГ.1 – Функции преобразования данных Функция Возвращает/действие Asc(S) Возвращает число кода символа, соответствующее первой букве строки S Chr(N) Возвращает строку из одного символа, соответст- вующего коду символа N, который должен быть чис- лом между 0 и 255, включительно. Код символа 65, например, возвращает букву "А" (Chr(13) – символ возврата каретки, Chr(10) – символ смещения на одну строку) Format(E, S) Возвращает строку, содержащую значение, представ- ленное выражением Е, в формате в соответствии с инструкциями, содержащимися в S Val(S) Возвращает численное значение, соответствующее числу, представленному строкой S, которая должна содержать только цифры и одну десятичную точку, иначе VBA не может преобразовать ее в число. Если VBA не может преобразовать строку в S, то функция Val возвращает 0 CBool(N) Возвращает Boolean-эквивалент численного выраже- ния N 128 Продолжение таблицы Г.1 Функция Возвращает/действие CByte(E) Возвращает численное значение типа Byte (от 0 до 255); Е – любое допустимое численное или строковое выражение, которое может быть преобразовано в число CCur(E) Возвращает численное значение типа Currency; E – любое допустимое численное или строковое выраже- ние, которое может быть преобразовано в число CDate(E) Возвращает значение типа Date. E может быть лю- бым допустимым выражением (строкой или числом), представляющим дату в диапазоне 1/1/100 – 12/31/9999, включительно CDbl(E) Возвращает численное значение типа Double; E – любое допустимое численное или строковое выраже- ние, которое может быть преобразовано в число CSng(E) Возвращает численное значение типа Single; E – лю- бое допустимое численное или строковое выражение, которое может быть преобразовано в число CStr(E) Возвращает значение типа String; E – любое допус- тимое численное или строковое выражение Операнд N – это любое численное выражение, допустимое в VBA, S – любое строковое выражение, а Е – выражение любого типа. |