Урок 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 As Object, oDoc As Object, oSel As Object, oFont As Object
Dim i As Integer, j As Integer
i = 0: j = 0
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add
Set oSel = oWord.Selection
oWord.Visible = True
Set oFont = oSel.Font
With oFont
    .Size = 15
    .Name = "Times New Roman"
    .Bold = True
    .ColorIndex = 2
End With
 
oSel.TypeText "Синус угла: от 0 до 360 с шагом 10"                                                                                                                          ' математические функции vba
With oFont
    .Size = 12
    .Bold = False
    .Bold = True
    .ColorIndex = 0
End With
 
oSel.TypeParagraph
oSel.TypeParagraph
 
Do While i <= 360
Dim my_var As String
my_var = Radianus(i)
    oSel.TypeText Sin(my_var) & vbTab & vbTab & "(" & i & ")"
    oSel.TypeParagraph
    i = i + 10
Loop
With oFont
    .Size = 15
    .Name = "Times New Roman"
    .Bold = True
    .ColorIndex = 2
End With
oSel.TypeParagraph
oSel.TypeParagraph
 
oSel.TypeText "Косинус угла: от 0 до 360 с шагом 10"                                                                                                                ' математические функции vba
With oFont
    .Size = 12
    .Bold = False
    .Bold = True
    .ColorIndex = 0
End With
 
oSel.TypeParagraph
oSel.TypeParagraph
 
Do While j <= 360
my_var = Radianus(j)
    oSel.TypeText Cos(my_var) & vbTab & vbTab & "(" & j & ")"
    oSel.TypeParagraph
    j = j + 10
Loop
 
End Sub
Function Radianus(c)
    Dim m_rad, m_pi
    m_pi = 3.14159265358979
    Radianus = c * m_pi / 180
End Function

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

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