VBA для чайников
Шрифт:
* Для хранения целых чисел (т.е. не имеющих дробной части) используйте переменные типов Boolean, Byte, Integer или Long.
* Используйте переменные типов Single или Double, чтобы хранить числа с плавающей запятой и показателем степени, имеющие до 15 значащих цифр. Хотя в этом случае диапазон допустимых значений просто огромен, не упускайте из виду возможность ошибок округления, когда выполняются операции со значениями, сильно отличающимися по порядку. Чтобы присвоить, например, значение 4,72X10-22 переменной типа Single или Double, используйте
sngFloating = 4 . 7 2Е-2 2
Если требуется еще более высокая точность вычислений, тип данных Currency обеспечит 19 значащих цифр, а тип данных Decimal - все 29 (эти типы данных в своих представлениях чисел не используют экспоненты). Однако в настоящей версии VBA Decimal не является самостоятельным типом данных- это значит, что нельзя объявить переменную типа Decimal, а тип данных Decimal существует только как возможное значение для типа Variant. Чтобы поместить в переменную типа Variant числовое значение не как значение с плавающей запятой, а как значение типа Decimal, используйте в операторе присваивания функцию CDec.
Вот пример того, как это реализовать (обратите внимание, что для функции CDec значения с большим количеством значащих цифр придется представлять в виде строк):
Dim decvar Pi As Variant
decvar Pi = CDec("3.1415926535897932384626433833" )
Если в программе выполняются вычисления с использованием значений некоторых переменных, то тип данных этих переменных должен быть достаточно емким, чтобы хранить результат вычисления, даже если этим переменным сам результат и не присваивается. Для примера внимательно ознакомьтесь со следующим фрагментом программного кода:
Dim bytBytei As Byte
Dim bytByte2 As Byte
Dim intInteger As Integer
byuBytel = 255 ' максимальное значение для типа Byte
bytByte2 = 1
intInteger = bytBytei + bytByte2 ' ошибка!
Здесь, несмотря на то, что переменная intInteger вполне допускает хранение значения, соответствующего результату вычисления, в последней строке этого фрагмента программного кода VBA зафиксирует ошибку переполнения. Чтобы вычисления выполнялись, необходимо в данном случае хотя бы вместо одной из переменных типа Byte использовать переменную типа Integer.
Когда использовать логические переменные
Переменные типа Boolean могут хранить только два значения: True (в числовом представлении это 1) или False (0). Используйте переменные типа Boolean, когда нужно выяснить, какое из двух альтернативных условий имеет место в данный момент. Например, можно использовать переменную boolВключенс, которая должна принимать значение True (Истина), когда что бы то ни было, к чему переменная относится, включено, и значение False (Ложь), когда это нечто выключено.
Другим полем для использования переменных типа Boolean является определение констант со значениями True и False.
Dim boolПузо As Boolean
Const Прикрыто As Boolean = True
Const Видно As Boolean = False
If boolПузо = Видно Then
НемногоПощекотать
End If
Вот вам один просто замечательный совет! Чтобы переключить на противоположное значение переменной или свойства объекта типа Boolean, используйте ключевое слово Not. Например, в Word вы можете включить или отключить отображение на экране схемы документа с помощью такой строки программного кода:
ActiveWindow. Docurr.entMap = Not ActiveWindow. DocumentMap
Работа с денежными значениями
Главная цель использования типа данньк Currency (Денежный)- получение точного результата. Хотя типы данных Single и Double с плавающей запятой и могут хранить числа с дробной частью - какими обычно бывают денежные значения - вычисления, выполняемые над числами с плавающей запятой, часто порождают небольшие ошибки, а это заставляет сильно нервничать тех, кто занят подсчетом денежных знаков.
Адаптация к местному формату представления денежных величин
Одна из сильных сторон VBA - это возможность автоматической настройки форматов представления дат и денежных величин в соответствии с местными стандартами. В правильно построенную программу вам не придется включать символы типа S, Г или J - VBA добавит именно тот символ, который нужен, основываясь на выборе языка и страны, которые были сделаны с помощью панели управления Язык и стандарты в Windows.
Рассмотрим, например, следующий фрагмент программного кода:
Const ccurMoneyTalks As Currency = 5463.72
MsgBox format ( ccur MoneyTalks, "Currency")
В результате выполнения этого фрагмента в США в окне сообщения появится
$5,463/72, а та же программа во Франции отобразит 5463, 72F.
Используемая здесь функция Format достаточно подробно рассматривается в главе 31.
Чтобы отобразить содержимое переменной в виде правильно представленного денежного значения, совсем не обязательно объявлять эту переменную переменной типа Currency. Функция Format с именованным форматом
"Currency" замаскирует любое числовое значение под доллары, франки или что-то другое, имеющее хождение в вашем регионе.
Другие возможности использования типа данных Currency
Даже если вы и не собираетесь работать с деньгами, переменные типа Currency будут полезны в следующих случаях:
* хранение больших чисел, выходящих за границы диапазона, допустимого для целых чисел типа Long;
* вычисления с большими числами, когда требуется более высокая точность, чем та, которая обеспечивается типами данных с плавающей запятой.