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

на главную - закладки

Жанры

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;

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

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

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Неучтенный элемент. Том 4

NikL
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 4

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Дважды одаренный. Том VI

Тарс Элиан
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
Дважды одаренный. Том VI

Эпоха Опустошителя. Том III

Павлов Вел
3. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том III

Законник Российской Империи

Ткачев Андрей Юрьевич
1. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Законник Российской Империи

Локки 9. Потомок бога

Решетов Евгений Валерьевич
9. Локки
Фантастика:
фэнтези
попаданцы
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 9. Потомок бога

Тыл-фронт

Головин Андрей
Проза:
военная проза
проза прочее
5.00
рейтинг книги
Тыл-фронт

Прапорщик. Назад в СССР. Книга 6

Гаусс Максим
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6

Наследник

Назимов Константин Геннадьевич
3. Травник
Фантастика:
фэнтези
6.80
рейтинг книги
Наследник

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Дважды одаренный

Я – Легенда

Гарцевич Евгений Александрович
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Я – Легенда