Хотя с помощью окна ввода можно получить больше информации, чем с помощью окна сообщения, с окном ввода программисту работать легче - тут нет кнопок и пиктограмм, которые можно выбирать. Аргументы сообщение и заголовок точно такие же, как и в случае функции MsgBox. Вы можете облегчить задачу пользователю, задав значение аргумента ответ. Тем самым вы предложите ему ответ, принимаемый по умолчанию, - если предложенный вами ответ подойдет, пользователь сможет просто нажать клавишу
В случае переменной типа Boolean изменить ее значение на противоположное проще всего с помощью операции логического отрицания Not. При этом результат применения операции нужно просто присвоить той же самой переменной.
Например, оператор boolBlinking = Not (boolBlinking) делает значение переменной boolBlinking равным True, если значением было False, и, наоборот, равным False, если значением было True.
В VBA предлагается целый ряд функций для работы с числовыми значениями. Эти функции предназначены для решения ряда задач от совсем простых (например, возвращение абсолютного значения или знака числа) до достаточно сложных вычислений алгебраических и тригонометрических величин. А добрая дюжина финансовых функций VBA поможет удержать на плаву любой утопающий бизнес.
Я не собираюсь останавливаться здесь на всех этих функциях, а рассмотрю лишь, как исключение, несколько избранных из них. Да и эти последние я обсуждаю только потому, что их непросто обнаружить в системе справки VBA и поэтому вы могли бы иначе просто не узнать о них. Внимательно ознакомьтесь с приведенным ниже списком, чтобы знать, что в VBA есть, а чего - нет.
В табл. 11.7 приведены функции VBA, которые можно назвать математическими. Перед тем как использовать их, не забудьте снова просмотреть раздел "Конвертирование данных" выше в этой же главе.
Таблица 11.7. Математические функции VBA
Функция Возвращаемое значение
Abs ( число) Абсолютное значение числа
Atn ( число) Арктангенс числа
Cos ( число) Косинус числа
Ехр ( число) Число е в степени, равной заданному числу
Fix ( число) Целая часть числа (см. описание функции int)
int ( число) Целая часть числа. Функции intи Fix по-разному действуют только на отрицательные числа: intвозвращает ближайшее меньшее целое, a Fix просто отбрасывает дробную часть числа
Log ( число) Натуральный логарифм числа, значение двойной точности
Rnd ( число) Случайное число, значение одинарной точности
Sgn ( число) 1, если число положительно, 0, если равно нулю, и - 1, если отрицательно
Sin ( число) Синус числа
sqr ( число) Квадратный корень числа
Tan ( число) Тангенс числа
Если вы не находите в VBA ту математическую функцию, которая вам нужна, не отчаивайтесь- можно сконструировать выражение или создать процедуру типа Function, которая решит нужную задачу.
Если вы знаете математику настолько, что можете сами разобраться с тригонометрическими функциями типа обратной к функции косеканса, мне, наверное, не нужно объяснять вам, как использовать тригонометрические функции. Однако вам будет не лишним знать, что в справке VBA есть нечто типа шпаргалки по таким функциям, в которой вы найдете и выражения для их вычисления. Чтобы добраться до этой шпаргалки, поищите раздел derived math functions (производные математические функции) в содержании справки. Этот раздел справки напомнит вам, например, что логарифм числах по основанию N вычисляется как Log (X) /Log (N).
Если вы предполагаете, что какая-то производная математическая функция понадобится в дальнейшем, сделайте ее частью своего математического арсенала, записав в виде процедуры типа Function, и сохраните в модуле с названием вроде МоиМатематическиеФункции. Тогда вы сможете при случае воспользоваться ею, как только в этом возникнет необходимость.
Округлять десятичные числа приходится часто, особенно при работе с денежными значениями. Как ни странно, VBA не предлагает прямого решения таких задач, но обсуждаемые ниже приемы помогут вам решить любые проблемы с округлением.
В VBA 6 есть функция Round (в VBA 5 такой функции нет), но дает она не слишком надежные результаты. Например, в результате выполнения оператора х = Round( 2.505, 2) значением переменной х будет 2.5, а не 2.51, как должно быть. Поэтому не используйте Round, если, конечно, вы не намереваетесь получить заведомо неправильные ответы.
Есть другой простой способ округления чисел в VBA, при котором используется функция Format: просто используйте эту функцию, задав подходящее значение аргумента формат, как показано в следующем примере (как использовать аргумент формат, см. выше в разделе "Создание собственных форматов");
sngОкругленное = Format(sngНеокругленное, "#,##0.00")
В VBA 6 для получения подобного результата можно использовать функцию FormatNumber:
sngOKpyгленное = FormatNumber(sngНеокругленное, 2)