- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Таблица 7.1. Типы данных VBA
Тип данных
Содержимое соответствующей переменной
Диапазон допустимых значений
Boolean
Логическое Истина или Ложь
Истина (-1) или Ложь (0)
Byte
Достаточно малое целое число
От 0 до 255
Integer
He слишком большое целое число
От -32768 до 32767
Long
Большое целое число
От -2147483648 до 2147483647
Single
Значение одинарной точности с плавающей запятой
От -3.402823Е38 до -1.401298Е-45 для отрицательных значений и от 1,401298Е-45 до 3,402823Е38 для положительных
Double
Значение двойной точности с плавающей запятой
От-1,79769313486232Е308 до - 4,94065645841247Е-324 для отрицательных значений и от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных
Currency
Большое число, для которого выделено 19 позиций, включая фиксированные четыре позиции после запятой
От -922337203685477,5808 до 922337203685477,5807
Decimal
Еще большее число, всего 29 позиций, из них до 28 позиций включительно для значения дробной части числа
Допустимый диапазон зависит от числа знаков после запятой, например, ±79228162514264337593543950335 для чисел без дробной части или ±7,922816251426433759354 для чисел с 28 знаками после запятой
Date
Дата и время
От 1 января 100 г. До 31 декабря 9999 г.
Object
Объект VBA
Ссылка на любой объект
String
(переменной длины)
Последовательность переменной длины, состоящая из символов
Строковая переменная переменной длины может содержать от 0 до примерно двух миллиардов символов
String
(фиксированной длины)
Последовательность заданной длины, состоящая из символов
Строковая переменная фиксированной длины может содержать от 0 до примерно 65400 символов
Variant
Любое из допустимых данных
Зависит от типа данных, содержащихся в переменной, в соответствии с вышеприведенными описаниями
Пользовательский
(требует использования оператора Туре)
Группа переменных, используемых вместе как единое целое
Для каждой из переменных в группе, зависит от ее типа в соответствии с вышеприведенными описаниями
Использование конкретного типа данных по сравнению с типом Variant: за и против
Одни считают, что указание в объявлении переменной ее конкретного типа данных (т.е. типа, отличного от Variant ) - это хорошо, другие же считают, что это плохо. Объявление конкретного типа данных переменной помогает избежать одних ошибок, но обеспечивает массу возможностей для появления других. Такой подход способствует уменьшению и ускорению выполнения программ, но в большинстве реальных случаев эти усовершенствования, наверное, не будут слишком важны.
Вот некоторые обстоятельства, способствующие уменьшению числа ошибок. Если при объявлении переменной задается конкретный тип данных, VBA не позволит вам поместить а эту переменную данные других типов. Например, если переменная объявляется оператором
Dim dateAnniversary As Date
то VBA выведет на экран сообщение об ошибке, когда вы попытаетесь присвоить этой переменной текстовое значение, как здесь:
dateAnniversary = Поездка на Фиджи ' Ошибка
Сообщения об ошибках, наверное, будут раздражать, но все же это лучше, чем позволить программе работать с ошибочными данными.
Сообщение об ошибке не появилось бы, если dateAnniversary была объявлена как переменная типа Variant, т.е. как переменная, допускающая любой тип данных. Тип данных Variant можно объявить точно так же, как и любой другой, например:
Dim varToolsuite As Variant
Но поскольку тип данных Variant подразумевается по умолчанию, его явное указание можно опустить, оставив в объявлении только имя переменной:
Dim Toolsuite
Что же касается вопросов оптимизации, то, указывая конкретный тип, вы имеете возможность выбрать при этом тот тип данных, который обеспечивает в точности необходимый минимум для хранения соответствующей информации. Переменная типа Variant занимает больше памяти, чем переменная любого другого типа, да и доступ к такой переменной осуществляется медленнее. Однако такие аргументы начинают играть роль в программах с очень и очень большим числом переменных. Зато объявив все переменные как переменные типа Variant, вы получаете возможность избежать многих ошибок, сделать программный код более гибким, а также сделать более простой модификацию такого программного кода.
Я здесь не могу обсуждать этот вопрос подробнее, но вы должны знать, что некоторые очень хорошие программисты настоятельно рекомендуют программировать, используя исключительно переменные типа Variant.
Выберите подходящую для себя стратегию - объявление конкретного типа данных для каждой переменной или использование типа Variant для всех переменных - и придерживайтесь одной стратегии по крайней мере в рамках одной программы.
Явные объявления приветствуются
Независимо от того, решите вы назначать конкретные типы данных переменным или нет, каждую переменную перед использованием следует объявить. Как серьезный программист, вы можете сделать так, чтобы VBA заставлял вас объявлять переменные. Если в раздел объявлений модуля поместить оператор Option Explicit то при попытке использования предварительно не объявленной переменной VBA будет сообщать об ошибке. После такого своевременного предупреждения вы сможете добавить необходимое объявление в подходящем месте программы.
Такая требовательность VBA в деле явного объявления переменных дает и более ощутимые выгоды: тем самым предотвращается в перспективе вероятность появления в программе серьезных ошибок из-за банальных опечаток.
Представьте себе следующую ситуацию. Вы решили не использовать оператор OptionExplicit в своем модуле. Но вот где-то в глубине процедур в результате случайной незамеченной неточности движения пальцев вы ошибаетесь при печатании имени одной из своих переменных. Когда компилятор VBA дойдет до строки с этой опечаткой, он подумает, что здесь вы просто вводите в оборот новую переменную, и любезно создаст ее для вас. В результате ваша программа может и будет выполняться, но не удивляйтесь, если вдруг выводимый на экран текст окажется ярко-красным или программа сообщит, что население Земли достигло 12 человек.
Наверное, к этому моменту я вас уже убедил, что оператор Option Explicit должен присутствовать в каждом создаваемым вами модуле. Но если это так, то зачем этот оператор печатать каждый раз вручную? Это делать совсем не обязательно. Выберите Tools=Options из меню и в появившемся диалоговом окне Options (Параметры) на вкладке Editor (Редактор) установите флажок Require Variable Declaration (Требовать объявление переменных). После этого редактор Visual Basic будет автоматически вставлять оператор Option Explicit в каждый новый модуль. В старые модули, где такого оператора не было, вам придется впечатать его самим.
Задание области видимости переменной
Область видимости переменной (т.е. та часть программы, в рамках которой данная переменная доступна) зависит от следующих двух взаимосвязанных факторов:
* места объявления переменной (либо внутри процедуры, либо в разделе объявлений модуля; см. выше раздел Где объявлять переменные);
* ключевого слова, использованного в объявлении переменной (Dim, Public, Private или Static ).
Если переменная объявлена внутри процедуры с помощью ключевого слова Dim, то такую переменную можно использовать только внутри этой процедуры. В других частях программы VBA переменную не распознает. А вот переменные, объявленные с помощью Dim в разделе объявлений модуля, будут доступны из любой части модуля, но не из других модулей.
По умолчанию переменные локальны
Ключевое слово Private работает точно так же, как и Dim. Например, следующие два оператора объявления функционально идентичны:
Private strLouie As String
Dim strLouie As String
Ввиду того, что ключевые слова Private и Dim работают одинаково, вы можете вообще не использовать, например, Private. А можно использовать только Private, если вы хотите, чтобы это ключевое слово напоминало о том, что переменная достижима только в рамках данной процедуры или модуля.
Глобальное знание
Объявление переменной с помощью ключевого слова Public делает эту переменную доступной из любой части проекта. Например:
Public intUnclassifield As Integer
Правда, такую особую силу ключевое слово Public имеет только тогда, когда вы объявляете переменную в разделе Declarations (Объявления) модуля. VBA не будет возражать и против использования Public внутри процедуры, но таким образом объявленные переменные все равно останутся невидимыми вне процедур, в которых заключаются объявления.

