Еще раз повторяю вопрос - отправил договор и сканы документов по почте - в начале августа, до 5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления. |
Переменные и типы данных
Объявление переменных
Данные, используемые в процедурах, разделяются на два основных вида: константы и переменные. Для обозначения констант и переменных служит имя (идентификатор). Имя состоит из латинских букв, цифр или знаков, причем первый символ всегда буква.
- Нельзя использовать служебные слова и стандартные имена как идентификаторы.
- Нельзя использовать пробелы и точки в качестве разделителей частей имен.
- Символы объявления типа, например, "#" можно использовать только как последний символ имени (см. ниже таблицу суффиксов).
- Строчные и прописные буквы в имени считаются равными.
- Длина имени не может быть более 255 символов. Длина имен объектов не должна превышать 40 символов.
- Не рекомендуется использовать в имени буквы русского языка, несмотря на то, что это допускается в локализованных версиях MS Office. Применение не латинских символов в идентификаторах может привести к проблемам с переносимостью приложения на другие компьютеры.
Константа - постоянное значение, используемое в программе. Константам можно присвоить имя и использовать их в качестве переменных, имеющих постоянные значения. Символьные константы заключаются в кавычки, а константы, представляющие даты, заключаются в символы решетка (#). Например, #1.12.2006#.
Прежде чем использовать константу в тексте модуля, ее обязательно следует объявить. Синтаксис объявления константы Const name=expression
Например, Const pi=3.14
В языке имеются встроенные константы, имена которых зарезервированы. Использование констант улучшает читабельность программы и уменьшает вероятность ошибок при использовании постоянных значений. Имена констант VB начинаются с vb, а константы Excel VBA начинаются с xl. Для просмотра полного перечня встроенных констант задайте поисковую строку Constants в Object Browser.
Переменная - это величина, которая хранится в памяти и значение которой может изменяться во время выполнения программы. Каждая переменная или константа имеет тип, соответствующий типу данных, сохраняемых в ней.
Важность объявления переменных
Перечислим основные аргументы в пользу объявления переменных.
- Объявление переменных поможет избежать самого распространенного типа ошибок - ошибок, связанных с неправильным написанием имен переменных, например, вместо идентификатора wbkVar в команде может быть записано wkbVar.
- Если переменная объявлена, Visual Basic проверяет, используется ли правильный тип данных в операциях с этой переменной.
- Объявление переменных исключает преобразование значений переменных, которое происходит при вычислении выражений, из типа Variant в другой тип.
- Использование переменных различных типов уменьшает память, занимаемую переменными, и сокращает время выполняемых вычислений, благодаря чему программы становятся более эффективными.
- Объявление переменных позволяет создавать переменные, которые можно использовать в нескольких процедурах или модулях (модульные и глобальные переменные). Можно определять также переменные, сохраняющие свои значения после выхода из процедуры.
Чтобы избежать использования переменных без объявления, можно поместить в область Declarations каждого модуля инструкцию Option Explicit. Тогда при обращении к переменной, не объявленной ранее, возникнет сообщение об ошибке компиляции.
Чтобы принудительно следовать стратегии объявления переменных, включите опцию Require Variable Declaration (Требовать описание переменных) в окне команды Tools-Options и тогда инструкция Option Explicit будет автоматически вставляться во все модули и процедурные листы проекта.
Типы данных
В VBA, как и в любом языке, используются данные различных типов: числовые, строковые, логические и т.п. - всего 11 элементарных типов. Допустимо использование данных пользовательского типа.
В языке VBA предусмотрено предварительное объявление переменных, участвующих в программе, но оно не является обязательным.
- Переменная может принимать значения только одного типа, который указывается при ее описании или предполагается по умолчанию.
- Тип переменной накладывает ограничения на ее возможные значения и определяет разрешенные операции.
- Присвоение переменной значения, не соответствующего ее типу, вызывает преобразование значения или может привести к ошибке.
Для объявления переменных используются операторы Dim, Private, Public и Static.
Dim VariableName [As DataType]
- VariableName - идентификатор переменной,
- DataType - тип данных. Необязательный параметр. По умолчанию Variant.
Операторы Private, Public и Static имеют такой же синтаксис, что и оператор Dim. Их использование разбирается ниже.
Примеры
Dim p As Integer Dim q As String Dim r As Variant |
Каждая переменная объявлена отдельным оператором на отдельной строке |
Dim p As Integer, q As String, r As Variant |
Несколько объявлений переменных в одной строке. Разделитель - запятая |
Dim p, q, r As Integer |
Только переменная r будет определена как целая, остальные будут иметь тип Variant |
VBA позволяет включать в имена переменных суффиксы, определяющие тип переменной. Например, Dim Name$ определяет переменную Name$ как стринговую.
В таблице справа представлены суффиксы и типы переменных, объявляемых с помощью добавления суффикса в конец идентификатора.
- Операторы объявления переменных относятся к неисполняемым операторам, т.е. они содержат некоторую информацию для VB, не выполняя никаких действий.
- Оператор объявления переменной может стоять в любом месте программы, но обязательно раньше использования определяемой переменной.
- Объявление переменных в начале процедуры или модуля улучшает читабельность программы.
Локальные переменные (понятие вводится ниже) могут быть объявлены неявно (контекстуально). Обычно это происходит, если имя переменной присутствует слева в операторе присваивания или используется в качестве переменной цикла. Переменная, объявленная неявно, всегда имеет тип Variant.
Тип Variant
Переменная, которая используется без объявления, а также переменная, тип которой явно не задан, относится к типу Variant.
Тип Variant используется, если во время выполнения программы переменная может принимать значения любого типа, за исключением пользовательских типов данных.
Использование переменной типа Variant поглощает больше ресурсов компьютера, чем использование переменной элементарного типа.
Переменная типа Variant может содержать специальные значения: Empty, Null, Nothing или Error.
- Используйте функции IsEmpty, IsNull, IsError для сравнения значения переменной со специальными значениями.
При вычислении арифметических выражений переменные типа Variant, содержащие числовые значения, ведут себя обычным образом: переменные этого типа преобразуются в другой тип в сторону увеличения длины результата.
Если в арифметическом выражении участвует переменная типа Variant, содержащая символьное значение, то ее значение преобразуется в число, если это возможно. В противном случае числовые значения преобразуются в строки и, если выполняемая операция не операция сложения, то возникает ошибка.
Объектные переменные
Объектная переменная занимает четыре байта и хранит адрес, указывающий на объект. Обычно в программах используют объектную переменную при создании собственного объекта. Подробно см. раздел Использование объектных переменных.
Объявление переменных объектного типа ничем не отличается от объявления переменных других типов. Синтаксис объявления объектной переменной Dim varname As type, где type - тип объекта.
Возможен тип любого объекта VBA или ключевое слово Object. Например, Dim p As Object, Dim r as Range, Dim w As Workbook.
Оператор Set
Для работы с объектами требуется устанавливать значение объектной переменной. В отличие от переменных других типов установка значения объектной переменной выполняется при помощи оператора Set.
Синтаксис оператора:
Set objectvar = objectexpression|Nothing
- objectvar - объектная переменная;
- objectexpression - объектное выражение;
- Nothing - ключевое слово, указывающее на отсутствие ссылки на объект.
Переменная может иметь тип любого объекта, определенного в языке VBA. В качестве объектного выражения можно использовать свойство, функцию или метод, возвращающие объект нужного типа.
- Оператор Set только устанавливает ссылку на объект, не создавая никакой копии.
- Типы объектного выражения и объектной переменной должны совпадать.
- Чтобы очистить объектную переменную, используйте значение Nothing в операторе присваивания, которое аннулирует ссылку на объект и освобождает ресурсы. Например: Set rng= Nothing.