Чтение онлайн

на главную

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

* Для хранения целых чисел (т.е. не имеющих дробной части) используйте переменные типов Boolean, Byte, Integer или Long.

* Используйте переменные типов Single или Double, чтобы хранить числа с плавающей запятой и показателем степени, имеющие до 15 значащих цифр. Хотя в этом случае диапазон допустимых значений просто огромен, не упускайте из виду возможность ошибок округления, когда выполняются операции со значениями, сильно отличающимися по порядку. Чтобы присвоить, например, значение 4,72X10-22 переменной типа Single или Double, используйте

следующий формат (когда знак + или - после буквы Е пропущен, VBA считает показатель экспоненты положительным):

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;

* вычисления с большими числами, когда требуется более высокая точность, чем та, которая обеспечивается типами данных с плавающей запятой.

Поделиться:
Популярные книги

Мимик нового Мира 8

Северный Лис
7. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 8

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Младший научный сотрудник 2

Тамбовский Сергей
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Младший научный сотрудник 2

Измена. Мой непрощённый

Соль Мари
2. Самойловы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Мой непрощённый

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

"Малыш"

Рам Янка
2. Девочка с придурью
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Малыш

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Невеста напрокат

Завгородняя Анна Александровна
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Невеста напрокат

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Виконт. Книга 1. Второе рождение

Юллем Евгений
1. Псевдоним `Испанец`
Фантастика:
фэнтези
боевая фантастика
попаданцы
6.67
рейтинг книги
Виконт. Книга 1. Второе рождение

Мерзавец

Шагаева Наталья
3. Братья Майоровы
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
5.00
рейтинг книги
Мерзавец

Совпадений нет

Безрукова Елена
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Совпадений нет

Сбой Системы Мимик! Академия

Северный Лис
2. Сбой Системы!
Фантастика:
боевая фантастика
юмористическая фантастика
5.71
рейтинг книги
Сбой Системы Мимик! Академия