Урок 17 по VBA — математические функции

Урок 17 по VBA — математические функции Макросы на VBA

Приведенные ниже математические функции vba позволяют производить тригонометрические вычисления (нахождение sin, cos и так далее), обрабатывать числовые значения на предмет получения целой части от дробного, округления или генерации случайных чисел.

Если переданный параметр для следующих математических функций vba не будет распознан как числовое значение, возникнет ошибка.

ABS(num) – Функция возвращает значение числа по модулю.

Exp(num) – Функция позволяет получить значение экспоненты, передаваемый параметр (максимальное значение ровно 709 782712893) является степенью, в которую нужно возвести экспоненту. Соответственно, если параметр равен 1, то мы получить чистое значение экспоненты.

Fix(num) – Функция возвращает целую часть от переданного дробного значения. Если переданное значение является отрицательным, то возвращается ближайшее отрицательное целое число, большее, либо равное указанному.

Int(num) – Математическая функция vba возвращает целую часть от переданного дробного значения. Если переданное значение является отрицательным, то возвращается ближайшее отрицательное целое число, меньшее, либо равное указанному.

Rnd(random) – Функция вернет число, входящее в диапазон от 0 до 1 в случайном порядке, при этом, само число 1 не входит в диапазон, а 0 – входит. Перед вызовом функции надо прописывать конструкцию Randomize, которая отвечает за включение генератора случайных чисел.

В зависимости от значения переданного параметра random, данная математическая функция vba работает следующим образом:

  • Параметр отсутствует или больше 0 — Генерация следующего случайного числа в последовательности. Повторный запуск программы генерирует аналогичную последовательность.
  • Параметр меньше 0 – Происходит генерация одного и того же числа, опираясь на переданный аргумент.
  • Параметр равен 0 — Происходит генерация одного и того же числа, опираясь на число из предыдущего вызова.

Round(num, [accr])  — Округление заданного числа (num) до заданной точности (accr).

Sgn(num) – Данная математическая функция vba позволяет узнать знак числа, переданного как аргумент. Функция vba вернет следующие значения:

  • 0 – Число равно 0
  • -1 – Число является отрицательным
  • 1 – Число является положительным.

Sql(num) – Квадратный корень из переданного числового параметра num.

Следующие математические функции vba являются тригонометрическими. В качестве параметра для большинства указывается значение угла в радианах. Для перевода градусов в радианы используется формула:

Угол (в радианах) = угол (в градусах) * pi / 180, где pi = 3.14159265358979

Atn(par) – Арктангенс переданного числа (угол в радианах), функция вернет значение в диапазоне от -pi/2 до pi/2 радиан

Cos(par)  — Косинус переданного числа (угол в радианах), функция вернет значение в диапазоне от -1 до 1.

Sin(par)  — Синус переданного числа (угол в радианах), функция вернет значение в диапазоне от -1 до 1.

Tan(par)  — Тангенс переданного числа (угол в радианах).

Log(par)  – Натуральный логарифм переданного числа.

Я не буду приводить примеры для всех приведенных выше математических функций VBA, а приведу только один пример кода для функций sin и cos. Откройте редактор VBA (комбинация клавиш Alt + F11), добавьте в проект новый модуль (меню Insert/Module). В моем случае имя модуля – module3, в редакторе кода для заданного модуля пропишите следующие строки:

Sub Module3() Dim oWord AsObject, oDoc AsObject, oSel AsObject, oFont AsObjectDim i AsInteger, j AsIntegeri = 0: j = 0Set oWord = CreateObject("Word.Application")Set oDoc = oWord.DocumentsoDoc.AddSet oSel = oWord.SelectionoWord.Visible = TrueSet oFont = oSel.FontWith oFont    .Size = 15    .Name = "Times New Roman"    .Bold = True    .ColorIndex = 2EndWith oSel.TypeText "Синус угла: от 0 до 360 с шагом 10"                                                                                                                          ' математические функции vbaWith oFont    .Size = 12    .Bold = False    .Bold = True    .ColorIndex = 0EndWith oSel.TypeParagraphoSel.TypeParagraph DoWhile i <= 360Dim my_var AsStringmy_var = Radianus(i)    oSel.TypeText Sin(my_var) & vbTab & vbTab & "(" & i & ")"    oSel.TypeParagraph    i = i + 10LoopWith oFont    .Size = 15    .Name = "Times New Roman"    .Bold = True    .ColorIndex = 2EndWithoSel.TypeParagraphoSel.TypeParagraph oSel.TypeText "Косинус угла: от 0 до 360 с шагом 10"                                                                                                                ' математические функции vbaWith oFont    .Size = 12    .Bold = False    .Bold = True    .ColorIndex = 0EndWith oSel.TypeParagraphoSel.TypeParagraph DoWhile j <= 360my_var = Radianus(j)    oSel.TypeText Cos(my_var) & vbTab & vbTab & "(" & j & ")"    oSel.TypeParagraph    j = j + 10Loop EndSubFunction Radianus(c)    Dim m_rad, m_pi    m_pi = 3.14159265358979    Radianus = c * m_pi / 180EndFunction

В данном случае мы создаем новый документ Word, добавляем в него форматированный (объект Font) текст, содержащий параметры значений для синуса и косинуса. Я выбрал диапазон значений от 0 до 360 градусов, используя цикл vba do…loop.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий