Типы данных

Содержание

Слайд 2

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

Введение

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

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

Типы данных

Типы данных

Слайд 4

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

Типы данных

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

Слайд 5

Типы данных

Типы данных

Слайд 6

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

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

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

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

Инструкция Def[Тип] С помощью инструкции DefТип (Тип – тип данных) используется

Инструкция Def[Тип]

С помощью инструкции DefТип (Тип – тип данных) используется для

задания типа данных по умолчанию на уровне модуля имена которых начинаются с заданных символов.
Пример: DefStr A-Q все переменные, начинающиеся с диапазона А-Q будут иметь тип String
Слайд 14

Строковые типы данных Строковые типы могут быть следующими: c фиксированной длиной

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

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

as String*N
Разницу см. на скриншоте
с произвольной длиной
Декларация: Dim str as String

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

Слайд 15

Объектные типы данных Существует ряд типов данных, которые попадают в категорию

Объектные типы данных

Существует ряд типов данных, которые попадают в категорию объектных

переменных. Например:

Можно объявлять объекты как:
Dim chrt as Object
Но объявление напрямую:
Dim chrt as Chart - эффективнее

Примечание. Значение таким переменным присваивается через оператор Set. Например:
Set chrt = ActiveChart

Слайд 16

Тип данных, определённый пользователем Наряду с массивами, представляющими нумерованный набор элементов

Тип данных, определённый пользователем

Наряду с массивами, представляющими нумерованный набор элементов одного

типа, существует еще один способ создания структурного типа – тип, определенный пользователем, или в привычной терминологии для программистов запись. Запись – это совокупность нескольких элементов, каждый из которых может иметь свой тип. Элемент записи называется полем. Запись является частным случаем класса, в котором не определены свойства и методы.
Синтаксис: [Public | Private] Type ИмяПеременной
ИмяЭлемента [(Индексы)] As Тип
[ИмяЭлемента [(Индексы)] As Тип]
End Type
Индексы – размерности элемента, являющегося массивом.
Слайд 17

Пример кода пользовательского типа данных

Пример кода пользовательского типа данных

Слайд 18

Массивы Массив, это пронумерованная группа объектов одного вида. Примеры: Dim Cells1(1

Массивы

Массив, это пронумерованная группа объектов одного вида.
Примеры:
Dim Cells1(1 to 10,1 to

10) as Range
Индексы массива от 1 до 10
Dim Cells1(10,10) as Range
Индексы массива от 0 до 10
Теоретически массивы могут иметь до 60 измерений, но на практике редко используется более 4-х
Слайд 19

Option Base Option base задаёт нижнюю границу массивов по умолчанию. Используются

Option Base

Option base задаёт нижнюю границу массивов по умолчанию. Используются только

один раз в модуле.
Пример:
Option base 1
Dim Lower Dim MyArray(20), TwoDArray(3, 4)
Dim ZeroArray(0 To 5) ' перезадаём границу
Lower = LBound(MyArray) ' вернёт 1.
Lower = LBound(TwoDArray, 2) ' вернёт 1.
Lower = LBound(ZeroArray) ' вернёт 0.
Слайд 20

Динамические массивы Если заранее неизвестна размерность массива, его можно задать в

Динамические массивы

Если заранее неизвестна размерность массива, его можно задать в виде

динамического массива
Dim DynArray() as Byte
В дальнейшем надо задать его размерности в коде программы:
ReDim DynArray(1 To 5)
Эту инструкцию можно использовать неоднократно, однако переразмеривание ведёт к потере данных из массива. Поэтому при очередном переразмеривании, если надо сохранить данные необходимо использовать оператор:
ReDim Preserve DynArray(1 To 7)
Двигаться может только верхняя граница массива и только последнее измерение многомерного массива
Слайд 21

Функции для работы с массивами IsArray(Имя Переменной) – возвращает True или

Функции для работы с массивами

IsArray(Имя Переменной) – возвращает True или False.

Используется для проверки, является ли массивом переменная типа Variant
LBound и UBound – используются для определения нижней и верхней границ массива.
Синтаксис: i = UBound(Имя Массива, [Размерность])
Возвращает верхнюю границу массива по заданной размерности

Erase(СписокМассивов) – Повторно инициализирует элементы массивов фиксированной длины (присваивает значения числовым и строковым – 0, строковым переменной длины – пустая строка, Variant – Empty) и освобождает память, отведённую под динамический массив. СписокМассивов – один или несколько массивов, разделённых запятой.

Слайд 22

Стандарты именования В общем случае всем элементам программы (константы, переменные, процедуры,

Стандарты именования

В общем случае всем элементам программы (константы, переменные, процедуры, формы,

элементы управления и т. п.) лучше присваивать значимые имена.
Имена переменных должны отражать некоторые их свойства, например, принадлежность к определенному типу данных. Часто используется стандарт, по которому первые несколько букв переменной указывают на ее тип данных.
Слайд 23

Стандарты именования

Стандарты именования

Слайд 24

Стандарты именования объектных переменных Иногда в наименования включают и время жизни

Стандарты именования объектных переменных

Иногда в наименования включают и время жизни переменной.

Например g - обозначает переменную уровня проекта, m – уровня модуля.
giSum – глобальная переменная типа Integer
mstrUp – строковая переменная уровня модуля.
Слайд 25

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

Операции VBA

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

числами, и их результатом являются числа
Отношения - применяются не только к числам, и их результатом являются логические значения, например х>у
Логические - используются в логических выражениях и их результатом являются логические значения, например Not x And у
Слайд 26

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

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

Слайд 27

Типы данных результата выражения Порядок точности для численных типов данных VBA

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

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

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

Исключения (сложение) Далее перечисляются эти исключения: Результатом сложения типа Single и

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

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

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

Типы данных результатов (-) (*) Вычитание VBA следует тем же правилам

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

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

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

Типы данных результатов деления (/) Если любой операнд в выражении деления

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

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

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

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

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

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

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

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

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

Слайд 33

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

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

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

Like
Слайд 34

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

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

Слайд 35

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

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

Слайд 36

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

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

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

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

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

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