Типы данных в VBA

Содержание

Слайд 2

Введение

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

Введение VBA, как и большинство других систем программирования, разделяет обрабатываемые данные на
даты, текст и другие типы.
Тип данных (data type) – это термин, относящийся к определенным видам данных, которые VBA сохраняет и которыми может манипулировать.

Слайд 3

Типы данных

Типы данных

Слайд 4

Типы данных

* - используется только внутри типа Variant через функцию CDec

Типы данных * - используется только внутри типа Variant через функцию CDec

Слайд 5

Типы данных

Типы данных

Слайд 6

Описание переменных

Общий вид описание переменных:
Dim Переменная As Тип данных
Примеры: Dim i as

Описание переменных Общий вид описание переменных: Dim Переменная As Тип данных Примеры:
integer, j as Byte, _
strName as String, cMon as Currency
Dim sHeight as Single, ch as Chart
Dim wbk as Workbook
Если пропустить описание переменной или не указать его, то переменной будет присвоен тип Variant. Однако, этого следует избегать.
В объявлении Dim i, j as Byte – i будет типа Variant(!)
Чтобы избежать такой проблемы рекомендуется в область описания помещать оператор Option Explicit (или включать соответствующий флажок в настройках)

Слайд 7

Символы для описания переменных

Допустимо объявлять типы, добавляя специальные символы к имени переменной.

Символы для описания переменных Допустимо объявлять типы, добавляя специальные символы к имени переменной. Пример: Dim Name$

Пример: Dim Name$

Слайд 8

Допустимые имена

Длина имени не должна превышать 255 символов
Имя не может содержать точек,

Допустимые имена Длина имени не должна превышать 255 символов Имя не может
пробелов и следующих символов: %, &, !, #, @, $
Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы
Имена должны быть уникальны внутри области, в которой они определены
Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур
Следует избегать использования l, O и c в качестве переменных. (L и o можно использовать без ограничений)

Слайд 9

Обозначения в кодах

[…] - Код в скобках опциональный (т.е. может быть опущен)
Public

Обозначения в кодах […] - Код в скобках опциональный (т.е. может быть
| Private - Public или Private
<Инструкции> - произвольные инструкции внутри кода

Слайд 10

Константы

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант

Константы Константы, в отличие от переменных, не могут изменять свои значения. Использование
делает программы легче читаемыми и позволяет проще вносить исправления.
Синтаксис:
[Public | Private] Const ИмяКонстанты [As Тип] = Значение
Примеры: Const Index As Single = 5
Const strName As String = "Иван"
Const i = 200
Const j = 8.2 * 2, string1 = "строка "
Const k = 8 + 5
В Excel есть ряд встроенных констант. Их имена начинаются с букв vb.
vbCrLf – Перенос строки
vbTab – табуляция
Подробный список см. в Object Browser

Слайд 11

Константы в Object Browser

Константы в Object Browser

Слайд 12

Область действия переменных

Термин область действия (scope) относится к области процедуры или модуля

Область действия переменных Термин область действия (scope) относится к области процедуры или
VBA, где данная переменная, процедура или другой идентификатор, являются доступными. Переменные, процедуры и идентификаторы, которые доступны только в процедуре, имеют область действия процедурного уровня, а те, которые доступны для всех процедур в модуле, имеют область действия модульного уровня.
Переменная, объявленная в процедуре, является доступной только в этой процедуре. Эта переменная реально существует только во время выполнения этой процедуры.

Слайд 13

Строковые типы данных

Строковые типы могут быть следующими:
c фиксированной длиной
Декларация: Dim str as

Строковые типы данных Строковые типы могут быть следующими: c фиксированной длиной Декларация:
String*N
Разницу см. на скриншоте
с произвольной длиной
Декларация: Dim str as String

Строка, не помещающаяся в окно редактора может быть разбита с использованием оператора “&”

Слайд 14

Операции VBA

В VBA реализуются 3 основных типа операций:
Математические - выполняются над числами,

Операции VBA В VBA реализуются 3 основных типа операций: Математические - выполняются
и их результатом являются числа
Отношения - применяются не только к числам, и их результатом являются логические значения, например х>у
Логические - используются в логических выражениях и их результатом являются логические значения, например Not x And у

Слайд 15

Математические операции

Математические операции

Слайд 16

Типы данных результата выражения

Порядок точности для численных типов данных VBA от наименее

Типы данных результата выражения Порядок точности для численных типов данных VBA от
точного до наиболее точного следующий:
Byte, Integer, Long, Single, Double, Currency
Тип данных результата выражения сложения обычно тот же, что и наиболее точный тип в этом выражении. Например, если выражение содержит оба типа Integer и Long, результатом такого выражения будет тип Long. Однако существуют исключения, в частности, если выражение включает переменные типа Variant.

Слайд 17

Исключения (сложение)

Далее перечисляются эти исключения:
Результатом сложения типа Single и Long является Double.
Если

Исключения (сложение) Далее перечисляются эти исключения: Результатом сложения типа Single и Long
складывать тип Date с любым другим типом данных, результатом выражения всегда будет тип Date.
Если результат выражения сложения присваивается переменной Variant, имеющей в данный момент тип Integer, и если результат выражения больше, чем (переполняет) диапазон значений для типа Integer, то VBA преобразует результат в Long. После присваивания переменная Variant также имеет тип Long.
Если результат выражения сложения присваивается переменной Variant, имеющей в данный момент тип Long, Single или Date, и если результат выражения переполняет диапазон численного типа, VBA преобразует результат в Double. После присваивания переменная типа Variant также имеет тип данных Double.
Если любой операнд в выражении сложения является равным Null или вычисляется до Null, то результатом выражения сложения также будет Null.
(Null – это особое значение, которое можно присваивать только переменным типа Variant для обозначения того, что они не содержат действительных данных.)

Слайд 18

Типы данных результатов (-) (*)

Вычитание
VBA следует тем же правилам для определения типа

Типы данных результатов (-) (*) Вычитание VBA следует тем же правилам для
данных результата выражения вычитания, что и для выражений, сложения, но имеются следующие дополнительные правила:
Если один из операндов в выражении вычитания является типом Date, то результат выражения имеет тип Date.
Если оба операнда в выражении являются типом Date, то результат выражения имеет тип Double.
Умножение
Оба операнда в выражении умножения должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Тип данных результата выражения умножения обычно тот же, что и наиболее точный тип в этом выражении. VBA следует тем же правилам для определения типа данных результата выражения умножения, что и для выражений, использующих сложение. В выражениях умножения все переменные Variant, которые содержат значения типа Date, преобразуются в численные значения.

Слайд 19

Типы данных результатов деления (/)

Если любой операнд в выражении деления имеет значение

Типы данных результатов деления (/) Если любой операнд в выражении деления имеет
Null, то результатом выражения также является Null. Тип данных выражения со знаком деления с плавающей точкой – обычно Double, но имеется следующее исключение:
Если оба операнда в выражении деления имеют тип Integer или Single, то результат выражения деления с плавающей точкой имеет тип Single, если только результат выражения не переполняет диапазон значений для типа Single. Если результат переполняет диапазон для типа Single, то VBA преобразует результат в тип Double.

Слайд 20

Возведение в степень

Оба операнда в выражении возведения в степень должны быть численными

Возведение в степень Оба операнда в выражении возведения в степень должны быть
выражениями или строками, которые VBA может преобразовать в числа. Операнд слева от знака возведения в степень может быть отрицательным числом, только если операнд справа является целым. Если какой-либо операнд является равным Null, то результатом выражения возведения в степень также будет Null, иначе результат выражения будет иметь тип Double.

Слайд 21

Операции отношения

Операции отношения

Слайд 22

Знаки операций сравнения Is и Like

Символы совпадения с образцом для оператора Like

Знаки операций сравнения Is и Like Символы совпадения с образцом для оператора Like

Слайд 23

Примеры использования оператора Like

Примеры использования оператора Like

Слайд 24

Логические операции

Логические операции

Слайд 25

Таблицы истинности логических операций

Конъюнкция (логическое умножение)
Также называется «И» (AND)
Дизъюнкция (логическое сложение)
Также

Таблицы истинности логических операций Конъюнкция (логическое умножение) Также называется «И» (AND) Дизъюнкция
называется «ИЛИ» (OR)
Сложение по модулю 2 (XOR)
Также называется исключающее «ИЛИ»
Отрицание (NOT)
Импликация (Из… следует…) (Imp)
Равносильность (Эквивалентность)
(Eqv)

Слайд 26

Приоритеты операций

Приоритеты операций

Слайд 27

Обращение к ячейке по адресу

Допустим, у нас есть два открытых файла: «Книга1»

Обращение к ячейке по адресу Допустим, у нас есть два открытых файла:
и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:

Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом: