Создаем свою первую функцию в Excel. Операторы и встроенные функции VBA Встроенные функции vba excel
Арифметические выражения Visual Basic.
Теоретическая часть
Выражениями и функциями
ЛАБОРАТОРНАЯ РАБОТА №4. Работа с арифметическими
Вопросы для контроля
1. Какие компоненты позволяют создавать статические изображения в приложении?
2. Как поместить рисунок на форму? Какие методы для этой цели существуют и в чем их отличие?
3. Картинки какого формата может подключать к приложению компонент Image?
4. Какое свойство объекта Image отвечает за масштабирование? За видимость картинки?
Цель работы: ознакомиться с арифметическими выражениями и математическими функциями языка Visual Basic; научиться разрабатывать приложения с использованием выражений и математических функций
Выражения используются для операций над данными. В зависимости от данных и используемых операций выражения разделяют на арифметические, логические и символьные
Арифметические выражения – это последовательность чисел, констант, переменных, функций, которые соединены между собой знаками арифметических операций. Частным случаем выражения является просто константа, переменная или вызов функции.
Арифметические операции языка Visual Basic приведены в Таблице 4.1.
Таблица 4.1 – Арифметические операции языка Visual Basic
Приоритет выполнения операций (в порядке убывания): возведение в степень, умножение и деление, целочисленное деление, вычисление остатка, сложение и вычитание. Вычисления производятся слева направо. Скобки изменяют приоритет.
Примеры:
14 /5*2 = 5.6 – операции одного приоритета выполнятся слева направо
14\5*2 = 1 – умножение имеет более высокий приоритет и при целочисленном делении дробная часть отбрасывается
27^1/3 = 9 – возведение в степень обладает наивысшим приоритетом
27^(1/3) = 3 – скобки изменяют последовательность операций
В языке Visual Basic имеется широкий набор встроенных (стандартных ) функций, облегчающий написание программ. Различают математические функции, функции обработки строк, функции для работы с датами и временем, финансовые.
Математические функции:
Abs (x) – вычисляет модуль аргумента
Atn (x) – вычисляет арктангенс числа x
Sin (x) – вычисляет синус числа x
Cos (x) – вычисляет косинус числа x
Tan (x) – вычисляет тангенс числа x
Exp (x) – вычисляет e^x
Log (x) – вычисляет натуральный логарифм
Sqr (x) – вычисляет квадратный корень
Rnd () – возвращает случайное число в диапазоне от 0 до 1
Int (x) – вычисляет наибольшее целое число, не превышающее x
Fix (x) – вычисляет округленное число (отбрасывает дробную часть аргумента)
CInt(x) – возвращает аргумент, округленный до целого по правилам округления математики
Sgn (x) – возвращает знак числа
X^(1/n) – извлекает корень n-ной степени из X
Hex (x) – переводит десятичное число в шестнадцатеричное
Oct (x) – переводит десятеричное число в восьмеричное
Примеры округления чисел:
Int(7.32) = 7 CInt(5.5) = 6 Fix(-7.32) = -7
Int(-7.32) = -8 CInt(-7.5) = -7
Значения аргументов в тригонометрических функциях задаются в радианах!
Для перевода аргумента из градусов в радианы используется формула:
Аргумент (в радианах) = аргумент (в градусах)*ПИ / 180
Число ПИ может быть определено по формуле:
ПИ = Atn(1)*4
Полные сведения о встроенных функциях и правилах их применения можно найти в справочной системе Visual Basic.
При написании кода VBA в Excel набор встроенных операторов используют на каждом шагу. Эти операторы делятся на математические, строковые, операторы сравнения и логические. Далее мы подробно рассмотрим каждую группу операторов.
Математические операторы
Основные математические операторы VBA перечислены в таблице ниже.
В правом столбце таблицы указан приоритет операторов, принятый по умолчанию при отсутствии скобок. Добавляя в выражение скобки, можно изменять порядок выполнения операторов VBA по своему желанию.
Строковые операторы
Основной строковый оператор в Excel VBA – это оператор конкатенации & (слияние):
Операторы сравнения
Операторы сравнения используются для сравнения двух чисел или строк и возвращают логическое значение типа Boolean (True или False). Основные операторы сравнения Excel VBA перечислены в этой таблице:
Логические операторы
Логические операторы, как и операторы сравнения, возвращают логическое значение типа Boolean (True или False). Основные логические операторы Excel VBA перечислены в таблице ниже:
В приведённой выше таблице перечислены не все логические операторы, доступные в VBA. Полный список логических операторов можно найти на сайте Visual Basic Developer Center .
Встроенные функции
В VBA доступно множество встроенных функций, которые могут быть использованы при написании кода. Ниже перечислены некоторые из наиболее часто используемых:
Функция | Действие |
---|---|
Abs | Возвращает абсолютную величину заданного числа.
|
Chr | Возвращает символ ANSI, соответствующий числовому значению параметра.
|
Date | Возвращает текущую системную дату. |
DateAdd | Добавляет определённый временной интервал к заданной дате. Синтаксис функции:
DateAdd(интервал , число , дата ) Где аргумент интервал определяет тип временного интервала, добавляемого к заданной дате в количестве, указанном в аргументе число . Аргумент интервал может принимать одно из следующих значений:
|
DateDiff | Вычисляет количество определённых временных интервалов между двумя заданными датами.
|
Day | Возвращает целое число, соответствующее дню месяца в заданной дате.
Пример: Day(“29/01/2015”) возвращает число 29. |
Hour | Возвращает целое число, соответствующее количеству часов в заданном времени.
Пример: Hour(“22:45:00”) возвращает число 22. |
InStr | Принимает в качестве аргументов целое число и две строки. Возвращает позицию вхождения второй строки внутри первой, начиная поиск с позиции, заданной целым числом.
Примечание: Аргумент-число может быть не задан, в таком случае поиск начинается с первого символа строки, заданной во втором аргументе функции. |
Int | Возвращает целую часть заданного числа.
Пример: Int(5.79) возвращает результат 5. |
Isdate | Возвращает True
, если заданное значение является датой, или False
– если датой не является.
|
IsError | Возвращает True , если заданное значение является ошибкой, или False – если ошибкой не является. |
IsMissing | В качестве аргумента функции передаётся имя необязательного аргумента процедуры. IsMissing возвращает True , если для рассматриваемого аргумента процедуры не передано значение. |
IsNumeric | Возвращает True , если заданное значение может быть рассмотрено как число, в противном случае возвращает False . |
Left | Возвращает заданное количество символов от начала переданной строки. Синтаксис функции вот такой:
Left(строка , длина ) где строка – это исходная строка, а длина – количество возвращаемых символов, считая от начала строки.
|
Len | Возвращает количество символов в строке.
Пример: Len(“абвгдеж”) возвращает число 7. |
Month | Возвращает целое число, соответствующее месяцу в заданной дате.
Пример: Month(“29/01/2015”) возвращает значение 1. |
Mid | Возвращает заданное количество символов из середины переданной строки. Синтаксис функции:
Mid(строка , начало , длина ) где строка – это исходная строка, начало – позиция начала извлекаемой строки, длина – количество символов, которые требуется извлечь.
|
Minute | Возвращает целое число, соответствующее количеству минут в заданном времени.Пример: Minute(“22:45:15”) возвращает значение 45. |
Now | Возвращает текущую системную дату и время. |
Right | Возвращает заданное количество символов от конца переданной строки. Синтаксис функции:
Right(строка , длина ) Где строка – это исходная строка, а длина – это количество символов, которые надо извлечь, считая от конца заданной строки.
|
Second | Возвращает целое число, соответствующее количеству секунд в заданном времени.
Пример: Second(“22:45:15”) возвращает значение 15. |
Sqr | Возвращает квадратный корень числовой величины, переданной в аргументе.
|
Time | Возвращает текущее системное время. |
Ubound | Возвращает верхний индекс измерения заданного массива.
Примечание: Для многомерных массивов в качестве необязательного аргумента может быть указано, индекс какого именно измерения нужо возвратить. Если не указано, то по умолчанию равно 1. |
В VBAиспользуются следующие виды функций:
Математические встроенные функции;
Математические функции, не представленные в VBA;
Функции форматирования данных;
Функции преобразования типов
Математические встроенные функции
Возвращаемое значение |
|||||||||||||||||||||||||||||||||||||||||||||||
Абсолютная величина числа |
|||||||||||||||||||||||||||||||||||||||||||||||
arctg(x) – арктангенс от значения параметра, заданного в радианах |
|||||||||||||||||||||||||||||||||||||||||||||||
sin(x) – возвращает синус угла от значения параметра, заданного в радианах |
|||||||||||||||||||||||||||||||||||||||||||||||
cos(x) – косинус указанного в радианах угла |
|||||||||||||||||||||||||||||||||||||||||||||||
tg(x) – возвращает тангенс угла от значения параметра, заданного в радианах |
|||||||||||||||||||||||||||||||||||||||||||||||
e x – возвращает числоe, возведенное в указанную степень, где е – основание натурального логарифма |
|||||||||||||||||||||||||||||||||||||||||||||||
ln(x) – возвращает натуральный логарифм от значения числового выражения |
|||||||||||||||||||||||||||||||||||||||||||||||
- возвращает квадратный корень числового выражения |
|||||||||||||||||||||||||||||||||||||||||||||||
Случайное число из интервала ) Именованные числовые форматы
Давайте рассмотрим пример. Добавим в документ Microsoft Word кнопку, назовем ее cmd_Calc , надпишем ее как Вычисления и добавим следующий код (листинг 6.1 .), иллюстрирующий работу рассмотренных функций. Dim dblNumber As Double "Переменная, используемая в вычислениях Dim varResult "Переменная типа Variant dblNumber = Val(InputBox("Введите число")) "Вычисляем абсолютное значение введенного числа "Сначала присвоим результат переменной varResult "Далее - выведем подписанный результат в окне "сообщения, воспользуемся знаком "+" для "конкатенации строк, в других случаях "будем вызывать функции непосредственно "в MsgBox"e "Обратите внимание на то, что мы конвертируем "числовые значения в строки с помощью функции Str varResult = Abs(dblNumber) MsgBox ("Абсолютное значение " + _ Str(dblNumber) + " равняется " + Str(varResult)) "Арктангенс MsgBox ("Арктангенс " + _ Str(dblNumber) + " равняется " + _ Str(Atn(dblNumber))) "Косинус MsgBox ("Косинус " + _ Str(dblNumber) + " равняется " + _ Str(Cos(dblNumber))) "e в степени введенного числа MsgBox ("Число e в степени " + _ Str(dblNumber) + " равняется " + _ Str(Exp(dblNumber))) "Функция Fix MsgBox ("Результат работы функции Fiх для " + _ Str(dblNumber) + " равняется " + _ Str(Fix(dblNumber))) "Функция Int MsgBox ("Результат работы функции Int для " + _ Str(dblNumber) + " равняется " + _ Str(Int(dblNumber))) "Натуральный логарифм MsgBox ("Натуральный логарифм " + _ Str(dblNumber) + " равняется " + _ Str(Log(dblNumber))) "Получим несколько случайных чисел "первое число - от 0 до 1 "второе - от 0 до 10. "Третье - от 25 до 100 "Четвертое - целое от 0 до 34 Randomize MsgBox ("Группа случайных чисел: " + _ Str(Rnd()) + ", " + _ Str(Rnd() * 10) + ", " + _ Str(Rnd() * 75 + 25) + ", " + _ Str(Int(Rnd() * 34))) "Функция Sgn MsgBox ("Результат работы Sgn для " + _ Str(dblNumber) + " равняется " + _ Str(Sgn(dblNumber))) "Cинус MsgBox ("Синус " + _ Str(dblNumber) + " равняется " + _ Str(Sin(dblNumber))) "Квадратный корень MsgBox ("Квадратный корень " + _ Str(dblNumber) + " равняется " + _ Str(Sqr(dblNumber))) "Тангенс MsgBox ("Тангенс " + _ Str(dblNumber) + " равняется " + _ Str(Tan(dblNumber))) Листинг 6.1. Обработчик события Click кнопки cmd_Calc Обратите внимание на алгоритм получения случайного числа, находящегося в определенном диапазоне, с помощью функции Rnd . Предположим, нам нужно получить случайное число от 15 до 40 . Получим, для начала, число от 0 до 40 . Очевидно, что для этого нам понадобится такой вызов: Rnd ()*40 . Чтобы "поднять" уровень наименьшего случайного числа, возвращаемого выражением, до 15 , сделаем следующее. Во-первых, вычислим разность 40 и 15 - у нас получится 25 . Значит, чтобы получить случайное число от 0 до 25 , можно использовать вызов Rnd ()*25 . Во-вторых, прибавим к полученному случайному числу 15 . Теперь выражение для получения случайного числа от 15 до 40 выглядит так: Rnd ()*25+15 . Проверим это высказывание на правильность. Функция Rnd , как известно, возвращает случайные числа от 0 до 1 . Если функция возвратит 0 - результат вычисления выражения будет равен 15 (0*25+15) . Если функция возвратит 1 - результат будет равен 40 (25*1+15) . Промежуточные значения Rnd дадут искомые случайные числа между 15 и 40 . Обработчик нажатия кнопки cmd_Len (листинг 6.2 .) будет содержать решение следующей задачи: сообщить пользователю длину введенного текста. Очевидно, для решения этой задачи нам понадобится функция Len . "Переменная для хранения входной строки Dim str_InpStr As String "Переменная для хранения найденной длины строки Dim lng_StrLen As Long str_InpStr = InputBox("Введите строку") "Вычисляем длину строки lng_StrLen = Len(str_InpStr) MsgBox ("Длина введенной строки: _" + _ str_InpStr + "_ равняется " + Str(lng_StrLen) + _ " символам") Листинг 6.2. Пример использования функции Len На рис. 6.2 . вы можете видеть результат вычисления длины строки. Рис. 6.2. Теперь займемся конверсией символов - функциями LCase и UCase (листинг 6. 3.). "Переменная для хранения входной строки Dim str_InpStr As String "Переменная для хранения измененной строки Dim str_NewStr As String str_InpStr = InputBox("Введите текст") "В str_NewStr окажется введеная строка "в которой все прописные буквы заменены строчными str_NewStr = LCase(str_InpStr) MsgBox ("Измененная строка: " + str_NewStr) "Теперь в str_NewStr будет та же строка "в которой все буквы стали прописными str_NewStr = UCase(str_InpStr) MsgBox ("Измененная строка: " + str_NewStr) Листинг 6.3. Пример использования функций LCase и UCase На очереди - вырезание символов - функции Mid , LTrim , Rtrim , Left , Right (листинг 6.4 .) Среди этих функций наиболее мощной является Mid - используя ее, можно делать со строками очень много всего. "Переменная для хранения входной строки Dim str_InpStr As String "Переменная для хранения вырезанных символов Dim str_NewStr As String "Зададим строку, с которой удобно будет работать str_InpStr = " Здравствуйте, Александр " "Функции удаления пробелов "При выводе строки ставим перед ее началом "и концом символ "_" для того чтобы "лучше было видно наличие "или отсутствие пробелов MsgBox ("Мы работаем с такой строкой: " + _ "_" + str_InpStr + "_") "LTrim - присваиваем результаты работы "переменной и выводим информацию в MsgBox str_NewStr = LTrim(str_InpStr) MsgBox ("Результат работы LTrim: " + _ "_" + str_NewStr + "_") "RTrim MsgBox ("Результат работы RTrim: " + _ "_" + RTrim(str_InpStr) + "_") "Trim MsgBox ("Результат работы Trim: " + _ "_" + Trim(str_InpStr) + "_") "Left - вырезаем из строки str_InpStr 12 "символов предварительно очистив ее "от начальных пробелов str_NewStr = Left(LTrim(str_InpStr), 12) MsgBox ("Первые 12 символов слева: " + _ str_NewStr) "Right - аналогично Вырезаем 9 символов справа str_NewStr = Right(RTrim(str_InpStr), 9) MsgBox ("Первые 9 символов справа: " + _ str_NewStr) "Функция Mid - для начала выведем по одному символу "со второй и пятнадцатой позиции строки "преварительно очищенной от лишних пробелов "в начале и в конце str_NewStr = Mid(Trim(str_InpStr), 2, 1) MsgBox ("Второй символ введенной строки: " + _ str_NewStr) str_NewStr = Mid(Trim(str_InpStr), 15, 1) MsgBox ("Пятнадцатый символ введенной строки: " + _ str_NewStr) "Выведем 5 символов, начиная с 15 символа str_NewStr = Mid(Trim(str_InpStr), 15, 5) MsgBox ("Пять символов строки с 15-й позиции: " + _ str_NewStr) Листинг 6.4. Пример использования функций для вырезания символов Теперь рассмотрим примеры работы функций Поиск
Мы можем оповещать вас о новых статьях,
чтобы вы всегда были в курсе самого интересного. |