Запись математических функций на языке VBA
Математическая запись | sinx | cosx | e x | |x| | tgx | arctgx | lnx | Öx |
Запись на VBA | Sin(x) | Cos(x) | Exp(x) | Abs(x) | Tan(x) | Atn(x) | Log(x) | Sqr(x) |
Например, обычная запись арифметического выражения:
на языке VBА будет выглядеть следующим образом:
Оператор присваивания имеет следующий синтаксис:
Пример использования оператора присваивания:
х = 2*a + Log(a + 0.5)
Ввод значений переменных может осуществляться в диалоговом режиме или из ячеек таблицы.
1. Диалоговый ввод осуществляется с помощью встроенной функции InputBox, которая при выполнении программы выводит на экран свое окно. Например, при выполнении строки программного кода a = InputBox(«Введите фамилию») на экране появится диалоговое окно, в котором будет записан текст, заключенный в кавычки, а в полосе ввода числа будет мигать курсор (рис. 5.2). Нужно ввести запрашиваемое в окне значение и нажать клавишу ввода или щелкнуть мышью по кнопке ОК.
Рис. 5.2 − Окно диалогового ввода функции InputBox
При этом возвращаемое функцией InputBox значение имеет тип String. Поэтому для ввода значения числовой переменной в программе необходимо дополнительно преобразовать получаемое значение к числовому типу функцией Val. Например, для ввода значения числа 5.25 в переменную b необходимо записать следующую строку программного кода:
b = Val(InputBox(«Введите значение b»))
2. Можно ввести значения с листа Excel. Например, чтобы поместить значение в переменнуюх из ячейки A2, можно записать:
x=Worksheets(«Лист1»).Range(«A2») или
x=Worksheets(«Лист1»).Cells(2, 1)
где – Worksheets(«Лист1») – рабочий лист Excel с именем «Лист1», Range(«A2») – ячейка с именем А2, Cells(2, 1) – ячейка с номером строки – 2 и номером столбца – 1 (т. е. ячейка А2).
Вывод результатов может осуществляться в окна сообщений и в ячейки таблицы.
1. Вывести значение переменной в окно сообщений можно с помощью функции MsgBox. Её использование позволяет выводить и числа и произвольные текстовые сообщения на экран, при этом выводимое сообщение должно быть заключено в кавычки. Например, в результате выполнения строки MsgBox («Деление на нуль») на экране появится окно c текстом, приведенным в кавычках.
Число, выводимое в окно, можно форматировать (указывать количество знаков до и после запятой). Для этого используется функция Format(x, “##.##”), где x переменная, ##.## – формат числа.
Текст, выводимый в диалоговое окно, заключается в кавычки. Для вывода нескольких значений в одно текстовое окно используется операция конкатенации &, например:
MsgBox («Значение x=» & Format(x, «##.#»))
2. Можно вывести результаты в ячейки листа Excel. Например:
Worksheets(«Лист1»).Range(«A3») = x
Здесь значение х выводится в ячейку A3.
Worksheets(«Лист1»).Cells(3, 1) = x
Значение х выводится в ячейку c номером строки 3 и номером столбца 1, т. е. в ячейку А3.
Пример программы вычисления значений z.
В первом варианте программы ввод исходных данных организован с клавиатуры, вывод – в диалоговое окно:
Приведенные ниже математические функции 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 работает следующим образом:
Sgn (num) – Данная математическая функция vba позволяет узнать знак числа, переданного как аргумент. Функция vba вернет следующие значения:
Sql (num) – Квадратный корень из переданного числового параметра num.
Следующие математические функции vba являются тригонометрическими. В качестве параметра для большинства указывается значение угла в радианах. Для перевода градусов в радианы используется формула:
Угол (в радианах) = угол (в градусах) * pi / 180, где pi = 3.14159265358979
Log (par) – Натуральный логарифм переданного числа.
Я не буду приводить примеры для всех приведенных выше математических функций VBA, а приведу только один пример кода для функций sin и cos. Откройте редактор VBA (комбинация клавиш Alt + F11), добавьте в проект новый модуль (меню Insert/Module). В моем случае имя модуля – module3, в редакторе кода для заданного модуля пропишите следующие строки:
Спасибо за внимание. Автор блога Владимир Баталий
Математические Функции языка Visual Basic
Дата добавления: 2013-12-24 ; просмотров: 30495 ; Нарушение авторских прав
Занятие 4. Вычисления на VB
End Sub
Private Sub Command1_Click()
End Sub
Next I
PRINT I;
Private Sub Command1_Click()
Next I
PRINT I,
Private Sub Command1_Click()
End Sub
Next I
PRINT I
Private Sub Command1_Click()
End Sub
Private Sub Command1_Click()
End Sub
Private Sub Command1_Click()
R$ = “Вася”
На экране появляется слово: Вася
4. Оператор PRINT выводит на экран числа, слова, результаты математических действий. (Не выводит знак “). Если в операторе PRINT есть математическое выражение, то компьютер вычисляет его и результат печатает на экране.
PRINT 10 – 3 + 4
Чтобы выяснить действие знаков препинания в операторе PRINT рассмотрим работу программы:
а) Никаких знаков препинания нет
For I = 1 to 50
На экране мы видим столбик чисел:
Если в операторе PRINT нет знаков препинания, то информация выводится каждый раз с новой строки, в столбик.
б) Поставим после переменной I запятую, и вновь выполним программу.
For I = 1 to 50
На экране: 1 2 3 4 5 ….
Информация выводится в строке через 10 пробелов.
в) Поставим после переменной I точку с запятой, и вновь выполним программу.
For I = 1 to 50
На экране: 1 2 3 4 5 ….
Информация выводится через 1 пробел.
Ø Теперь мы можем прибавить два к двум и получить ответ:
? “2 + 2 = ”; 2 + 2
6. PRINT ставится в том месте программы, где требуется что-нибудь вывести на экран.
Для вычисления математических функций используются стандартные функции:
Функция | Математика | Visual Basic |
Абсолютная величина числа x | | x | | abs(x) |
Квадратный корень из числа x | sqr(x) | |
Возведение в степень | 4^3 | |
Корень третьей степени из числа x | x^(1/3) | |
Корень нечетной степени из отрицательного числа | -x^(1/5) | |
Экспонента числа x | exp(x) | |
Натуральный логарифм числа x | ln x | log(x) |
Десятичный логарифм числа x | lg x | log(x) / log(10) |
Остаток от деления х на у | x mod y | |
Округление числа x с точностью а | round (x, a) | |
Целая часть числа x | int(x) | |
Команда, включающая генератор случайного числа | Randomize | |
Функция вырабатывающая случайное число в диапазоне от 0 до 1 | rnd | |
Функция, переводящая текст, состоящий из цифр в число | val() | |
Функция преобразующая число в текст | str$() | |
Синус числа x (в радианах) | sin x | sin (x) |
Косинус числа x (в радианах) | cos x | cos (x) |
Тангенс числа x (в радианах) | tg x | tan (x) |
Котангенс числа x (в радианах) | ctg x | 1/tan(x) |
Арктангенс числа x (в радианах) | arctg x | atn (x) |
Арксинус числа x (в радианах) | arcsin x | atn(x/sqr (-x*x+1)) |
Арккосинус числа x (в радианах) | arccos x | -atn(x/sqr(-x*x+1))+1.5708 |
Арккотангенс числа x (в радианах) | arcctg x | -atn(x)+1.5708 |
Перевод из градусов в радианы
Как вычислить sin 41°?
41° Мы должны перевести в радианы.
рад = град × 3.141592 / 180
Поэтому выражение sin 41° на языке Бейсик записывается: sin (41 * 3.141592 / 180)
The VBA Sin Function
Description
The VBA Sin function returns the sine of a supplied angle.
The syntax of the function is:
Where the supplied Number is the angle (in radians) that you want to calculate the sine of.
VBA Sin Function Examples
Example 1
In the following example, the VBA Sin function is used to return the Sine of three different angles (which are expressed in radians).
val3 = Sin( 1.0471975511966 )
‘ The variable val3 is now equal to 0.86602540378444.
In the above VBA code:
Example 2
If the angle that you want to calculate the sine of, is expressed in degrees, this must be converted into radians, by multiplying by π/180, before it is supplied to the Sin function. An example of this is provided below:
‘ Convert 60 degrees to radians by multiplying by pi/180.
val1 = Sin( 60 * pi / 180 )
‘ The variable val1 is now equal to 0.866025403784438.
In the above VBA code, the angle 60 degrees is converted to radians before it is supplied to the Sin function.
The VBA Sin function then returns the value 0.866025403784438.
Note that, in order to clarify the code, the value 3.14159265358979 (π) has been assigned to the constant, pi, which is used in the calculation.
VBA Sin Function Error
If the Sin function is supplied with a value that cannot be interpreted as a number, it will return the error:
VBA Excel. Пользовательская функция (синтаксис, компоненты)
Создание пользовательской функции в VBA Excel, ее синтаксис и компоненты. Описание пользовательской функции и ее аргументов. Метод Application.MacroOptions.
Объявление пользовательской функции
Синтаксис функции
Компоненты функции
*Один из компонентов Имя = выражение следует считать обязательным, так как если не присвоить функции значения, смысл ее использования теряется.
Видимость функции
Видимость пользовательской функции определяется необязательными ключевыми словами Public и Private, которые могут быть указаны перед оператором Function (или Static, в случае его использования).
Ключевое слово Public указывает на то, что функция будет доступна для вызова из других процедур во всех модулях открытых книг Excel. Функция, объявленная как Public, отображается в диалоговом окне Мастера функций.
Ключевое слово Private указывает на то, что функция будет доступна для вызова из других процедур только в пределах программного модуля, в котором она находится. Функция, объявленная как Private, не отображается в диалоговом окне Мастера функций, но ее можно ввести в ячейку вручную.
Если ключевое слово Public или Private не указано, функция считается по умолчанию объявленной, как Public.
Чтобы пользовательская функция всегда была доступна во всех открытых книгах Excel, сохраните ее в Личной книге макросов без объявления видимости или как Public. Но если вы планируете передать рабочую книгу с пользовательской функцией на другой компьютер, код функции должен быть в программном модуле передаваемой книги.
Пример пользовательской функции
Для примера мы рассмотрим простейшую пользовательскую функцию, которой в следующем параграфе добавим описание. Называется функция «Деление», объявлена с типом данных Variant, так как ее возвращаемое значение может быть и числом, и текстом. Аргументы функции — Делимое и Делитель — тоже объявлены как Variant, так как в ячейках Excel могут быть числовые значения разных типов, и функция IsNumeric тоже проверяет разные типы данных и требует, чтобы ее аргументы были объявлены как Variant.