- •Содержание
- •Введение
- •1 Алгоритм и его свойства
- •2 Основные понятия VBA. Линейные алгоритмы
- •2.1 Элементы языка VBA
- •2.2 Типы данных VBA
- •2.3 Константы VBA
- •2.4 Переменные VBA
- •2.5 Выражения в VBA
- •2.6 Встроенные функции VBA
- •2.7 Оператор присваивания
- •3 Разветвляющиеся алгоритмы
- •3.1 Оператор IF и его формы записи
- •3.2 Типовые задачи разветвляющихся алгоритмов
- •4 Циклические алгоритмы
- •4.1 Оператор цикла For
- •Оператор цикла For Each
- •4.2 Оператор цикла Do
- •4.3 Вложенные циклы
- •5 Обработка массивов данных
- •5.1 Ввод-вывод массивов
- •Расположение данных в файле "dat.txt"
- •Расположение данных в файле "res.txt"
- •5.2 Программирование обработки одномерных массивов
- •5.3 Программирование обработки двумерных массивов
- •6.1 Лабораторная работа №1
- •6.2 Задание к расчетно-графической работе №1
- •6.3 Лабораторная работа №2
- •Обработка массивов данных на VBA
- •6.4 Задание к расчетно-графической работе №2
- •ЛИТЕРАТУРА
- •Окно проекта
- •Главное меню
- •Интеллектуальные возможности редактора кода
- •Операции сравнения
- •Конкатенация строк
- •Логические операторы VBA
- •Приоритеты выполнения операций при вычислении сложных выражений
- •Операторы пересчета
Операторы пересчета
В таблице В.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 * |
Application.acos(x) |
|
Atn(1) |
|
||
|
|
|
|
|
|
|
|
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, позволяющие рассчитывать значения гиперболических функций.
124
Таблица В.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)) |
/ |
Application.tanh(x) |
(Exp(X) + Exp(-X)) |
|
||||
|
|
|
|||
|
|
|
|
|
|
|
HCotan(X) |
= |
(Exp(X) |
+ |
|
cth 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– натуральный логарифм
Loga x = |
Ln x |
, |
|
Ln a |
|||
|
|
либо через встроенные функции Excel:
-Application.Log10(x) для вычисления десятичного логарифма;
-Application.Log(x,a) для вычисления логарифма по основанию «а».
125
Для определения минимального или максимального значения нескольких элементов можно использовать встроенные функции Excel:
-Application.min(x1, x2 [, x3 [, x4, …] ] ) – определение минимального значения перечисленных переменных;
-Application.max(x1, x2 [, x3 [, x4, …] ] ) – определение максимально-
го значения перечисленных переменных.
Количество аргументов этих функций может быть от двух до 30.
Вычисление корней нечётных степеней (п — произвольное ненулевое нечётное целое число).
|
1 |
|
1 |
|
|
|||||||||
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
n |
,если x ≥0 |
||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
n x =xn = |
| x | 1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
,если x <0 |
||
|
|
|
|
|
|
|
|
|
|
−| x |n |
||||
Примеры записи операторов присваивания |
|
|||||||||||||
Математическое |
Запись на VBA |
|
||||||||||||
обозначение |
|
|||||||||||||
|
|
|
|
|||||||||||
y = log5x2 |
Y = Log(X^2)/Log(5) |
|||||||||||||
y = |
|
|
|
|
|
|
|
Y = Sqr(X+2.0) |
|
|||||
x +2 |
|
|||||||||||||
y = 3 |
|
|
|
|
|
|
|
|
|
Y = 4^(1/3) |
|
|||
4 |
|
|
|
|
|
|
|
|
||||||
y = 3 |
|
|
|
Y= Abs(Х)^(1/3)* Sgn (Х) |
||||||||||
x |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
Y=(X^2)^(1/3) |
или |
|||
y = 3 x2 |
||||||||||||||
Y=Abs(X)^(2/3) |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
126
Приложение Г Функции преобразования данных
Функции для преобразования одного типа данных в другой приведены в таблице Г.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 |
|
|
127
Продолжение таблицы Г.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 – любое строковое выражение, а Е – выражение любого типа.
128
Приложение Д
Встроенные константы VBA функции MsgBox
VBA предоставляет несколько внутренних констант (intrinsic constants), называемых также предопределенными константами (predefined constants). Внутренняя константа – это именованная константа, которая была определена разработчиками VBA. Внутренние константы, определяемые VBA, все начинаются с букв vb для указания того, что они определяются языком Visual Basic for Applications (или Visual Basic). Перечень встроенных константы для функции MsgBox приведен в таблице Д.1.
Таблица Д.1 – Встроенные константы для функции MsgBox
Константа |
Числовое |
Назначение |
|
значение |
|
|
|
|
vbOKOnly |
0 |
Отображает только кнопку OK; то же са- |
|
|
мое происходит, если не задан аргумент |
|
|
Buttons |
|
|
|
vbOKCancel |
1 |
Отображает кнопки OK и Отмена (OK, |
|
|
Cancel) |
|
|
|
vbAbortRetryIgnore |
2 |
Отображает командные кнопки Стоп, По- |
|
|
втор, Пропустить(Abort, Retry, Cancel) |
|
|
|
vbYesNoCancel |
3 |
Отображает кнопки Да, Нет и Отмена |
|
|
(Yes, No, Cancel) |
|
|
|
vbYesNo |
4 |
Отображает кнопки Да и Нет (Yes, No) |
|
|
|
vbRetryCancel |
5 |
Отображает кнопки Повтор и Отмена |
|
|
(Retry, Cancel) |
|
|
|
vbCritical |
16 |
Отображает в диалоге значок крити- |
|
|
|
|
|
ческого предупредительного сообщения |
|
|
(Critical Message) Windows (красный кру- |
|
|
жок) |
|
|
|
129
Продолжение таблицы Д.1
Константа |
Числовое |
Назначение |
|
значение |
|
|
|
|
vbQuestion |
32 |
Отображает значок запроса (Query |
|
|
|
|
|
icon) Windows ("?"); обычно используется, |
|
|
чтобы задать пользователю очень важный |
|
|
вопрос или выдать предупредительное со- |
|
|
общение, требующее ответа |
|
|
|
vbExclamation |
48 |
Отображает значок ("!") предупреж- |
|
|
|
|
|
дения (Warning Message); обычно исполь- |
|
|
зуется для отображения важной информа- |
|
|
ции или предупреждения, не требующего |
|
|
ответа |
|
|
|
vbInformation |
64 |
Отображает значок ("i") информации |
|
|
|
|
|
(Information Message); обычно использу- |
|
|
ется для отображения важной информа- |
|
|
ции, кроме предупреждения |
|
|
|
vbDefaultButton1 |
128 |
Первая командная кнопка в диалоговом |
|
|
окне является кнопкой по умолчанию |
|
|
|
vbDefaultButton2 |
256 |
Вторая командная кнопка в диалоговом |
|
|
окне является кнопкой по умолчанию |
|
|
|
vbDefaultButton3 |
512 |
Третья командная кнопка в диалоговом |
|
|
окне является кнопкой по умолчанию |
|
|
|
vbDefaultButton4 |
748 |
Четвертая командная кнопка в диалоговом |
|
|
окне является кнопкой по умолчанию |
|
|
|
Результатом функции MsgBox является код нажатой пользователем световой кнопки диалогового окна. Числовые значения и на-
130
именования внутренних констант VBA, возвращаемые функцией MsgBox, приведены в таблице Д.2.
Таблица Д.2 – Возвращаемые значения-константы функции MsgBox
Константа |
Числовое |
Означает, что пользователь выбирает кнопку |
|
значение |
|
|
|
|
vbOK |
1 |
Да (OK) |
|
|
|
vbCancel |
2 |
Отмена (Cancel) |
|
|
|
vbAbort |
3 |
Стоп (Abort) |
|
|
|
vbRetry |
4 |
Повтор (Retry) |
|
|
|
vbIgnore |
5 |
Пропустить (Ignore) |
|
|
|
vbYes |
6 |
Да (Yes) |
|
|
|
vbNo |
7 |
Нет (No) |
|
|
|
Функция MsgBox, отображающая окно с сообщением, имеет следующий синтаксис:
MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context])
Аргумент Prompt представляет любое строковое значение (литерал, константу или переменную). MsgBox отображает эту строку в диалоговом окне; необходимо всегда предоставлять аргумент Prompt, по-
скольку это – обязательный аргумент (required argument). Аргумент
Buttons (необязательный аргумент) является численным выражением, определяет отображаемые в диалоговом окне кнопки и сообщений. Аргумент Title представляет любое строковое значение (литерал, константу или переменную). MsgBox отображает текст этой строки в строке заголовка диалогового окна. Если опустить аргумент Title, VBA отображает в строке заголовка диалогового окна MsgBox слово "Microsoft Excel". Аргумент HelpFile – файл справки, Context – раздел в справочном файле. Текст сообщения можно заключать в скоб-
131
ки, но скобки необязательны, когда функция MsgBox используется как оператор.
Пример использования функции MsgBox
Вывести на активный лист рабочей книги Excel диалоговое окно, изображенное на рисунке Д.1.
Рисунок Д.1 – Вид диалогового окна
Текст программы.
Sub Пример_MsgBox()
Kod = MsgBox("Вы уже посмотрели, как работает программа?"& _
Chr(13) & Chr(10) & "Завершить работу сейчас?", _ vbYesNo + vbQuestion, _
"Демонстрация в MsgBox многстрочного сообщения")
If kod = vbYes Then Unload Me 'выгрузить форму
End Sub
132
Учебное издание
Карташов Николай Сергеевич Макаров Алексей Иванович Макаров Дмитрий Алексеевич
Алгоритмизация и программирование на VBA в Microsoft Excel Учебное пособие
Под редакцией проф., к.т.н. Макарова А.И. Оригинал-макет подготовлен редакционно-издательским отделом
Университета машиностроения
По тематическому плану внутривузовских изданий учебной литературы на 2012 г.
Подписано в печать __.__.12. Формат 60х90 1/16 Бумага 80 г/м2 Гарнитура «Таймс». Ризография. Усл. печ. л. 8.3
Тираж 150 экз. Заказ №
Университет машиностроения 107023. г. Москва, Б.Семеновская ул., 38
133