Число Пи как константа или функция, его возвращающая, отсутствуют в VBA, но есть функция Pi рабочего листа Excel, которой можно воспользоваться. А также есть и другие способы расчета значения этого числа.
Функция Pi рабочего листа
Функция Pi рабочего листа Excel возвращает значение числа Пи, округленное до 14 знаков после запятой (3,14159265358979). Присвоение этого значения переменной myPi в коде VBA будет выглядеть следующим образом:
1 |
myPi = WorksheetFunction.Pi |
Число Пи через арктангенс
Как известно из геометрии, tg(π/4)=1. Соответственно, π/4=arctg(1), а π=4arctg(1). Используя последнее выражение и учитывая, что функция арктангенс (Atn) в VBA есть, можно не обращаться к соответствующей функции рабочего листа Excel:
1 |
myPi = 4 * Atn(1) |
Число Пи через арккосинус
Здесь совсем все просто: cos(π)=-1, отсюда π=arccos(-1). Единственная загвоздка только в том, что функции арккосинус в VBA нет и опять приходится обращаться к функции арккосинус (Acos) рабочего листа Excel:
1 |
myPi = WorksheetFunction.Acos(-1) |
Проверка работы функций
Скопируйте код в модуль VBA и убедитесь в работоспособности представленных выше функций, возвращающих число Пи. Все функции возвращают значение, округленное до 14 знаков после запятой (3,14159265358979):
1 2 3 4 5 6 7 8 9 |
Sub Primer1() Dim myPi As Double myPi = WorksheetFunction.Pi MsgBox myPi myPi = 4 * Atn(1) MsgBox myPi myPi = WorksheetFunction.Acos(-1) MsgBox myPi End Sub |
Создание константы myPi
Если при написании кода VBA Excel часто приходится использовать число Пи, его можно объявить как константу. Объявление следует разместить в разделе Declarations и константа будет доступна во всех процедурах этого модуля:
1 2 3 4 5 |
Const myPi As Double = 3.14159265358979 'Проверяем ее работоспособность Sub Primer2() MsgBox myPi End Sub |
Вместо числового значения, присваиваемого константе myPi, можно использовать любую из выше представленных функций.
Здравствуйте!
Существует ли возможность обратиться к константе из другого модуля
(по аналогии с доступом к глобальной переменной — Module1.myPi)?
Спасибо!
Добрый день!
Именно так (Module1.myPi) можно будет обращаться к константе, если объявить ее в разделе Declarations модуля Module1:
Обсуждение закрыто.