- •Норинский л. Ю. Программирование на Visual Basic и Visual Basic for Applications (Конспект лекций)
- •Введение
- •1. Основы языка программирования visual Basic
- •1.1. Общие сведения о Visual Basic
- •1.2. Среда vb, инструментальные средства. Разработка проектов
- •1.3. Типы данных. Константы и переменные
- •1.4. Операции
- •1.5. Ввод и вывод данных
- •1.6. Управляющие операторы
- •1.7. Массивы
- •1.8. Примеры программ работы с числами
- •1.9. Обработка строк. Примеры
- •1.10. Математические вычисления. Другие операторы и функции
- •1.11. Процедуры и функции. Примеры
- •1.12. Работа с файлами
- •1.13. Обработка ошибок
- •2. Разработка интерфейса
- •2.1. Элементы управления
- •2.1.1. Общие сведения
- •2.1.2. Встроенные эу
- •2.1.3. Внедренные и связанные эу
- •2.2. Разработка форм
- •2.3. Создание и использование меню
- •2.4. Окна диалога
- •3. Классовое общество
- •3.1. Классы-формы
- •3.2. Модули классов и стандартные модули
- •3.3. Управление событиями объекта
- •3.4. Семейства и массивы объектов
- •4. Vba. Макропрограммирование
- •4.1. Общие сведения о vba
- •4.2. Работа в Excel с помощью vba
- •4.2.1. Объекты Application и семейство Workbooks
- •4.2.2. Объекты Worksheet и Worksheets
- •4.2.3. Объект Range
- •4.3. Макропрограммирование
- •4.4. Создание макросов в Word
- •4.5. Создание макросов в Excel
- •4.6. Пример макроса
- •Приложения п1. Некоторые виды ошибок
- •П2. Свойства элементов управления
- •П3. Методы работы с элементами управления
- •П4. Примеры проектов vb Проект 1.
- •Проект 2.
- •Проект 3.
- •Проект 4.
- •Проект 5.
- •Проект 6.
- •Проект 8.
- •Проект 11.
- •П5. Пример ПроектА vba.
- •Литература
1.3. Типы данных. Константы и переменные
Основными видами данных являются константы и переменные, каждая из которых может относится к одному из стандартных (встроенных) типов, перечисленных в таб. 2.1.
Таблица 2.1. Стандартные типы данных
ТИП |
СОДЕРЖАНИЕ И ДИАПАЗОН ИЗМЕНЕНИЯ |
СИМВОЛ |
INTEGER |
Целые числа от -32768 до +32768 |
% |
LONG |
Целые числа от -2147483648 до 2147483648 |
& |
SINGLE |
Вещественные от 8.43*10^-37 до 3.37*10^38 |
! |
DOUBLE |
Вещественные от 4.19*10^-307 до 1.67*10^308 |
# |
STRING |
Символьные с максимальной длиной 32767 знаков |
$ |
CURRENCY |
Денежная переменная |
@ |
BOOLEAN |
Логическая переменная |
|
Символ из третьей колонки является идентификатором типа объекта и при определенных условиях должен быть завершающим в его имени.
Все объекты данных можно разделить на константы и переменные.
Константы могут быть числовыми, строковыми и логическими.
Числа имеют следующее представление:
92 – целое число,
4.23 – вещественное число,
9.23D+78 – вещественное число в экспоненциальной форме, 9.23*10^78.
Строка - это последовательность символов, заключенная в кавычки.
Строковая константа должна быть заключена в кавычки, например, “Кот”.
Константе можно назначить символическое имя, тогда она определяются в начале программы.
Синтаксис константы
1) объявление
[Public | Private] Const ИМЯ_КОНСТАНТЫ [As ТИП] = ВЫРАЖЕНИЕ
где ИМЯ_КОНСТАНТЫ содержит максимум 255 символов и должно начинаться с буквы, может содержать цифры, большие и малые буквы латинского алфавита; последним должен быть один из символов !, #, % или $; по умолчанию будет присвоен символ !; ВЫРАЖЕНИЕ – значение, которое хранится в константе, это может быть число, другая константа, текст или арифметическое выражение без возведения в степень; если используется имя другой константы, то она должна быть предварительно определена; например, CONST cat$ = “кот Кутя”;
2) обращение
[имя_библиотеки.] [имя_модуля..] имя_константы
где имя_библиотеки – обычно имя класса элемента управления (ЭУ); имя_модуля – имя модуля, в котором определена константа.
Необходимо не допускать круговых ссылок; например, пусть имеется два модуля, причем в модуле_1 присутствует следующее объявление
Public Const conA = conB*2 'константа доступна везде в приложении
а в модуле_2 находится объявление
Public Const conB = conA*2 'константа доступна везде в приложении
здесь возникает ошибка – круговой цикл, вследствие чего код выполняться не будет.
Логические константы: True (ИСТИНА) и False (ЛОЖЬ).
Значения констант не могут изменяться в процессе выполнения программы.
В отличие от констант, содержание переменных может изменяться при выполнении программы. Хотя в Basic допускается просто применять новую переменную в нужном месте программы, следует все переменные объявлять явно в начале программы. По области определения различают следующие виды переменных: а) локальные – объявляются внутри процедуры или функции и доступны только внутри такой подпрограммы, б) контейнерные – объявляются с ключевым словом Dim в секции (General)(Declarations) контейнера (форма, модуль или класс) и доступны только в соответствующем текущем контейнере, в) глобальные - объявляются с ключевым словом Public в секции контейнера и доступны во всем проекте.
Локальные переменные при выходе из процедуры удаляются из памяти и при новом вызове процедуры инициализируются заново, Однако, если объявить переменную как статическую, то при выходе из процедуры ее содержимое сохраняется (хотя сама переменная оказывается недоступной), при новом же вызове процедуры переменная получает значение, которое она имела при последнем выходе из данной процедуры.
Синтаксис объявления переменной:
Dim [Shared] | ReDim | Static | Private | Public ИМЯ_ПЕРЕМЕННОЙ As КЛАСС | ТИП
где Shared – указание на то, что переменную можно использовать во всех функциях и процедурах модуля; ИМЯ_ПЕРЕМЕННОЙ – имеет максимальную длину до 255 символов и образуется по тем же правилам, что и имя константы; As ТИП – присутствует в объявлении, если в имени переменной последний символ не является идентификатором типа; например, Dim k As Integer но Dim c%; КЛАСС для объектных переменных, а ТИП для обычных переменных.
В одном операторе объявления может присутствовать несколько однотипных переменных, имена которых разделяются запятыми: Dim i As Integer, k As Integer. Для каждой переменной ее тип должен быть указан явно, иначе она получит тип Variant (см. ниже).
В одном операторе объявления можно также объединять несколько объявлений переменных разных типов: Dim i As Integer, s As Double.
В Basic каждая переменная при первом ее использовании либо сразу же после явного объявления инициализируется начальным значением, например, для переменных типа Integer по умолчанию используется значение 0. Однако целесообразно выполнять явную инициализацию переменных требуемыми начальными значениями.
Присвоить некоторое значение переменной можно оператором, имеющим следующий шаблон:
ИМЯ_ПЕРЕМЕННОЙ=СТРОКОВОЕ_ВЫРАЖЕНИЕ | АРИФМЕТИЧЕСКОЕ_ВЫРАЖЕНИЕ
где Арифметическое_выражение – это комбинация чисел, арифметических констант, числовых переменных и некоторых функций, которые связаны между собой арифметическими операциями; Строковое_выражение – это комбинация текстов, текстовых констант, текстовых переменных и определенных функций, которые связаны операцией + или &; например, k = 5 или cat = “Ветка”.
Тип переменной должен соответствовать типу выражения. Необходимо также соблюдать соответствие между типом числовой переменной и типом арифметического выражения. VB пытается автоматически преобразовывать типы данных. Для явного преобразования типов используются следующие функции: CBool преобразует в Boolen, CByte – в Byte, CCur – в Currency, CDate – в Date, CDbl – в Double, Cint – в Integer, CLng – в Long, CSng – в Single, CStr – в String, Cvar – в Variant, CVErr – в Error.
По умолчанию, если тип данных явно не указывается, переменной назначается тип Variant, который в различных ситуациях может представлять разные типы данных. При использовании переменных типа Variant для арифметических операций они должны содержать нечто, что может интерпретироваться как числа; для строковых операций вместо сцепления + надо использовать &.
До присвоения значений переменная Variant имеет значение Empty, отличающееся от 0, от строки нулевой длины "" или от значения Null; для тестирования на присвоенность какого-либо значения используется функция IsEmpty: If IsEmpty(v2) Then v2 = 0.
Значение Null распространяется по всему выражению, если хотя бы одна его часть содержит это значение; может присваиваться только вариантной переменной. Для выяснения, содержит ли переменная значение Null используется функция IsNull: If IsNull(v2) Then z = Null. Переменные не получают значения Null, помимо явного присвоения.
Кроме стандартных (встроенных) типов данных можно, используя ключевое слово Type, создавать типы данных, определяемые пользователем:
[Private | Public] Type ИМЯ_ТИПА
ЭЛЕМЕНТ_1 [([РАЗМЕРНОСТЬ])] As ТИП
ЭЛЕМЕНТ_2 [([РАЗМЕРНОСТЬ])] As ТИП …
End Type
Определение общего (Public) собственного типа данных возможно только в секции (General)(Declarations) модуля. Для определения пользовательского типа данных в форме или в модуле класса используется слово Private.
Пример:
‘(General)(Declarations) (Module)
Type usrPerson ‘Объявление пользовательского типа
Name As String
Number As Integer
End Type
Public usrSupp As usrPerson, usrCopy As usrPerson ‘ Объявление двух переменных
‘ типа usrPerson
Private Sub NamNum()
usrSupp.Name = “Natali Goncharova”
usrSupp.Number = 999
usrCopy = usrSupp
End Sub
Пользовательские типы могут быть составными. В этом случае сначала нужно определить базисный тип, который будет использоваться далее в составных типах:
‘(General)(Declarations) (Module)
Type usrName ‘Объявление базисного типа
Name As String
Famile As String
End Type
Private Type usrPerson ‘Объявление составного типа типа
Name As usrName
Number As Integer
End Type
Dim usrSupp As usrPerson
Private Sub NamNum()
usrSupp.Name = “Natali ”
usrSupp. Famile = “ Goncharova ”
usrSupp. Number = 999
End Sub
При образовании имени переменных считается общепризнанной “венгерская нотация”, в соответствии с которой имя состоит из одного или нескольких префиксов и базового имени: <префикс><Базовое_имя>. Базовое имя (имя, задаваемое пользователем) начинается с большой буквы.
Таблица 2.2. Префиксы типов данных
Тип данных |
Префикс |
Boolean |
bln |
Byte |
byt |
Collection |
col |
Currency |
cur |
Date |
dtm |
Double |
dbl |
Error |
err |
Integer |
int |
Long |
lng |
Object |
obj |
Single |
sng |
String |
str |
Пользовательский |
udt |
Variant |
vnt |