Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
81
Добавлен:
31.05.2015
Размер:
192.38 Кб
Скачать

Основы языка программирования

Visual Basic for Applications ·  ТИПЫ ДАННЫХ

·  ПЕРЕМЕННЫЕ

·  ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ

·  МАССИВЫ

·  ПОЛЬЗОВАТЕЛЬСКИЕ ТИПЫ ДАННЫХ

·  ОПЕРАТОРЫ ПРИСВАИВАНИЯ

·  КОММЕНТАРИИ

·  ОПЕРАЦИИ

·  МАТЕМАТИЧЕСКИЕ ФУНКЦИИ

·  СТРОКОВЫЕ ФУНКЦИИ

·  ФУНКЦИИ ДАТЫ И ВРЕМЕНИ

·  ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ

·  СОЗДАНИЕ И ПРИМЕНЕНИЕ ПРОЦЕДУР И ФУНКЦИЙ

·  ИСПОЛЬЗОВАНИЕ СПИСКА ПОИМЕНОВАННЫХ АРГУМЕНТОВ

·  ЗАЩИТА АРГУМЕНТОВ ОТ СЛУЧАЙНЫХ ЧИСЕЛ

·  СОЗДАНИЕ И ПРИМЕНЕНИЕ ФУНКЦИЙ

·  УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

·  ЛОГИЧЕСКИЕ ФУНКЦИИ

·  УСТАРЕВШИЕ УПРАВЛЯЮЩИЕ СТРУКТУРЫ

·  ОРГАНИЗАЦИЯ ВЫВОДА И ПОЛУЧЕНИЯ ДАННЫХ

·  ОРГАНИЗАЦИЯ ВЫВОДА И ЧТЕНИЯ ДАННЫХ

 

Наверх

Дальше

 

Типы данных, которыми оперирует VBA Visual Basic имеет 11 встроенных типов данных:

Тип данных

Размер в байтах

Разрядность цифр

Диапазон значений

Boolean

2

1

True или False (да - нет, включен - отключен)

Integer

2

5

От (-32768) до 32768

Long

4

10

От (-2147483648) до 2147483647

Single

4

7

От (–3.402823Е+38) до (–1.401298Е-45) и от 1.401298Е-45 до 3.402823Е+38

Double

8

15

От ± 1.79769313486232Е+308 до ± 4.94065645841247Е-324

Currency

8

19

От (–922337203685477.5808) до 922337203685477.5807

Date

8

-

От 01.01.100 до 31.12.9999

String

1

+1

на любой символ - От 0 до 65535 символов

Object

4

-

Любой объект

Array

Определяется количеством и размером элементов

-

-

Variant

Определяется записанными данными

-

Любой из встроенных типов данных

Тип данных определяет, каким образом задаваемая величина хранится в памяти компьютера; сколько разрядов может содержать присваиваемое ей значение; насколько оно может быть велико и может ли иметь дробную часть.

Тип Boolean использует для хранения значения 2 байта памяти – как и тип Integer, хотя может принимать значения либо 0 (ложь - False), либо (True – правда). Для хранения этой информации достаточно 1 бита, а занимается 16 бит. Это решение было принято Microsoft для достижения совместимости типа Boolean с другими типами при выполнении расчетов.

Тип данных Integer предназначен для хранения смещенного целого числа, т.е. с указанием знака числа “+” или “-”. Из 16 бит 1 используется для хранения знака, а остальные – для значащих цифр.

Тип данных Long используется для хранения смещенного целого числа с двойным разрешением по сравнению с Integer и, соответственно, занимает в два раза больше памяти. Из 32, занимаемых в памяти бит, 1 предназначается для хранения знака, 31 – для хранения самого числа.

Такой тип не очень удобен при ведении денежных расчетов, так как имеет всего семь значащих цифр. Если оставить два из них для расчета копеек, то верхняя граница числа в этом случае будет 34028.23 руб. коп.

Тип данных Double – предназначен для хранения действительного числа с плавающей точкой двойной точности по отношению к Single. Для хранения требует вдвое больше памяти, но и диапазон значений расширяется в 8 раз.

Тип данных Currency предназначен для хранения действительного числа с фиксированной точкой, которая всегда располагается между 4 и 5 цифрами справа.

ПРИМЕР: 0.0021 46.7280 Этот тип специально предназначен для получения минимальных ошибок округления и чаще всего используется в бухгалтерских расчетах. В частности, даже используя тип Double можно получить число 3.999 999 999 вместо 4.000 000 000, что дает погрешность, которая может оказаться существенной при больших объемах денежных расчетов.

Тип данных Date предназначен для хранения дат и времени с точностью до секунды.

Машиной даты записываются следующим образом: целая часть – количество дней, прошедших от начала отсчета 01.01.1900, а дробная часть – время.

Пример: 05.03.1994 18.00 запишется как 34398.75. При работе с Excel следует помнить, что в нем диапазон используемых дат – от 01.01.1900 до 31.12.2078. Сам VBA позволяет оперировать датами в диапазоне 01.01.100 – 31.12.9999

Тип данных String используется для хранения текста по одному байту на символ, добавляя к этому количеству еще один – для обозначения конца строки.

Тип данных Object предназначен для ссылок на любой объект VBA

Тип данных Array определяет индексный список величин одного и других типов - массив.

Тип данных Variant используется по умолчанию. Он задается VBA, если вы сами не укажете этот тип. При этом производится проверка значения, вводимого в память и его идентификация, поэтому резко возрастает и время выполнения программы, и объем памяти.

Наверх

Дальше

Переменные Переменные – это поименованные области в памяти компьютера. Полученное значение – число или текст должны быть записаны в память, а чтобы использовать его в дальнейших действиях, необходимо вызвать его из памяти. VBA создает прямое соответствие между областью (адресом) памяти и заданным именем переменной. Имя переменной дается пользователем, поскольку VBA не наделен способностью изобретать новые названия.

Имена переменных состоят из алфавитных символов, цифр и специальных символов, но начинаться должны обязательно с буквенного символа. Не допускается использование в имени пробелов, знаков препинания и символов объявления типа: #, $, %, &, ! VBA не различает переменные, в которых единственным отличием является использование прописных букв:

ПРИМЕР: Client, CLIENT, client и clienТ - эти имена представляют одну и ту же переменную

Для повышения информативности по ходу выполнения операций в имени переменной желательно указывать ее значение, при этом оно не должно быть слишком длинным, чтобы избежать синтаксических ошибок.

ПРИМЕР: theDate, Phone, Sales и пр.

Наверх

Дальше

Объявление переменных Тип переменных определяется типом данных, который должен использоваться при записи ее значения в память. По умолчанию используется тип Variant.

При объявлении переменной автоматически выявляются опечатки, допущенные при написании имен переменных, а также экономится время и память, необходимые для выполнения программы. Неправильно напечатанное имя, VBA воспринимает как имя новой переменной, а ее значение по умолчанию принимается равным 0, поэтому могут возникнуть ошибки, которые очень трудно выявить.

Для того, чтобы этого избежать, необходимо объявить все используемые в программе переменные. Это можно сделать и принудительно, для чего следует записать оператор Option Explicit в начало каждого модуля. После этого, если в ходе выполнения операции встретится незнакомая переменная, неизбежно возникнет ошибка выполнения, которую VBA предложит вам исправить и укажет строку этого оператора.

Объявление переменных проводится с помощью оператора Dim [Dimension]. В VBA нельзя производить объявление списком. Обязательно следует указывать тип для каждой вновь вводимой переменной, иначе она будет отнесена типу Variant

ПРИМЕР: Правильное объявление переменных: Dim theName as String Dim Cost as Currency, I as Integer Dim MyPicture as Variant Неправильное объявление переменных: Dim i, j, k as Integer Dim Cost, Loss as Currency Область видимости переменных

Область видимости переменных ограничивается теми модулями и процедурами, в которых она используется. Уровень объявления переменной с помощью оператора Dim определяет область видимости переменной.

Так, переменная, объявленная на уровне процедуры, то ее можно использовать и изменять только в рамках данной процедуры. Если переменная объявлена на уровне модуля, то ее можно использовать и изменять в любой процедуре данного модуля.

Чтобы сделать переменную доступной всем процедурам во всех модулях, входящих в состав программы, то вместо оператора Dim в главном модуле, где содержится управляющая процедура, следует указать ключевое слово Public.

ПРИМЕР: Public Var1

Наверх

Дальше

Массивы Если при объявлении переменной под ее создается единичная поименованная область в памяти компьютера, то при объявлении массива, создается множество таких областей, объединенных единым именем.

Объявление массива производится с помощью оператора Dim, но после имени в круглых скобках следует указать индексы, которые определяют количество элементов массива и его размерность.

ПРИМЕР:

Dim Name_Client(100) As String

Это одномерный массив, в котором 101 элемент. Индекс принимает значения от 0 до 100

Dim Contacts(3, 75 Тo 90) As String

Это двумерный массив, поскольку указывается диапазон значений двух индексов. Первый принимает значения от 0 до 3, второй – от 75 до 90.

Константа – это величина, которая в ходе выполнения программы не изменяет своего значения. Использование констант облегчает процесс управления программой и позволяет избежать случайных и нежелательных погрешностей округления.

Для объявления константы следует указать ключевое слово Const.

ПРИМЕР: Const Pi = 3.14

Наверх

Дальше

Пользовательские типы данных Создание пользовательских типов данных позволяет объединять величины, связанные между собой по какому-то признаку. Для того, чтобы объявить свой тип, следует записать ключевое слово Type и его имя. Затем указываются имена и типы элементы данных, входящих в состав пользовательского типа.

Блок заканчивается указателем окончания создания типа End Type.

ПРИМЕР:

Type MyContacts

Name as String

Address as String

Phone as String

End Type

Создан пользовательский тип данных с тремя элементами – имя, адрес и телефон, которые имеют отношение к одному и тому же объекту – клиенту, с которым установлен контакт

Объявление переменной данного типа производится таким же образом, что и обычной переменной.

Dim MyClients(17) As MyContact

Доступ к каждому элементу массива MyClients осуществляется следующим образом:

MyClients(I).Name = “ АО Московские баранки”.

Здесь I – индекс массива, который в данном примере может принимать значение от 0 до 17.

Наверх

Дальше

Операторы присваивания Операторы присваивания состоят из переменной, записываемой слева в единственном числе, знака равенства, и формулы или числового значения, записываемых справа.

ПРИМЕР: Правильная запись оператора присваивания y = x^2 +1.76 Неправильная запись оператора присваивания 2*y + 0.5 = x^2 +1.76. Его нужно преобразовать в следующий вид:

у = (x^2 + 1.26)/2

Наверх

Дальше

Комментарии Комментарии – это текст, поясняющий назначение и порядок производимых в программе действий. Этот элемент программирования необязательный, но он позволяет облегчить понимание внутренней логики программы. Комментарий может располагаться как на отдельной строке, так и справа от исполняемого оператора.

Комментарий обозначается символом апострофа (‘) или ключевым словом Rem. Все, что записано левее этих знаков, относится к комментарию, и будет игнорироваться программой при ее выполнении.

ПРИМЕР: Dim I Аs Integer, J Аs Integer ‘Объявление переменных

Наверх

Дальше

Операции VBA Операции в VBA предназначены для выполнения основных математических действий - сложения, вычитания, умножения, деления и пр.

Математические и строковые операции VBA в порядке убывания приоритета

Операция

Выполняемое действие

^

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

-

Отрицание

?

Умножение

/

Деление 1

\

Целочисленное деление

Mod

Определение остатка от деления

+

Сложение

-

Вычитание2

&

Объединение (конкатенация) строк

Установленный в VBA приоритет операции позволяет определить какая из них в введенном математическом выражении будет выполняться первой, т.е. задает последовательность математических действий.

Приоритет можно изменить с помощью выделения части математического выражения круглыми скобками. При этом выражению, заключенному в скобки присваивается наивысший приоритет СРАВНИТЕ:

Z = X*Y/2 + 3/9 + Y^0.3 и Z = X*Y/(2+3/(9+Y^0.3))

Наверх

Дальше

Математические функции VBA Операции позволяют выполнять только простейшие математические действия. Для более сложных вычислений используются встроенные математические функции VBA.

Функция

Выполняемое действие

Atn

Возвращение арктангенса угла в радианах

Sin

Возвращение синуса угла в радианах

Cos

Возвращение косинуса угла в радианах

Tan

Возвращение тангенса угла в радианах

Exp

Возвращение значения ex, где x - значение переменной или введенное число

Log

Возвращение натурального логарифма числа

Sqr

Возвращение квадратного корень числа

Randomize

Инициирование генератора случайных чисел

Rnd

Возвращение случайного числа

Abs

Возвращение абсолютного значения числа (по модулю)

Sgn

Возвращение знака числа (+ или -)

Fix

Возвращение округленного значения числа отсечением дробной части

Int

Возвращение округленного значения числа до ближайшего целого

Математические функции VBA используются для обработки отдельных чисел и не могут применяться к массивам чисел. Если в этом есть необходимость, то нужно обрабатывать каждый элемент массива в отдельности.

При вызове встроенной функции следует указать в круглых скобках ее аргумент. Исключение составляет функция Randomize, которая включает генератор случайных чисел и не имеет аргумента.

ПРИМЕРЫ: 1.

X = 9

Y = SQR(X)

Переменная Y получит значение

2. Fi = 3.09 Z = Sin(Fi) Переменная Z получит значение Z = 0.05157

3. Если есть необходимость ввода аргумента тригонометрических функций не в радианах, а в градусах, то его следует преобразовать следующим образом Fi = 30° Pi = 3.14 Z = Sin(Fi*Pi/180) Здесь Pi - число p , введенное с требуемой степенью точности.

A = Exp(-0.5) Переменная A получит значение 0.6065, где е = 2.71828 - основание натурального логарифма.

5. Пусть необходимо вычислить значение X = lg2(A). Для этого можно использовать встроенную функцию VBA - Log, произведя следующее преобразование

X = LOG(А)/LOG(2),

6. Для того, чтобы получить случайным образом число из заданного диапазона с помощью функции Rnd, обязательно необходимо предварительно включить генератор случайных чисел, т.е. вызвать функцию Randomize

Например, в ходе жеребьевки участнику соревнований нужно вытянуть один номер из ста. Минимально возможный номер Min = 1, максимально возможный - Max = 100. Задача реализуется следующим образом

Randomize

X=Int ((Max*Rnd)+ Min)

Наверх

Дальше

Строковые функции Строковые функции позволяют эффективно производить поиск и обработку текстовой информации. Основными строковыми функциями VBA являются

Функция

Назначение

StrComp(Строка1,Строка2)

Сравнивает две строки

Lcase(Строка)

Преобразует строку в нижний регистр

Ucase(Строка)

Преобразует строку в верхний регистр

Space(Число)

Создает строку пробелов, в соответствии с заданным количеством

String(Число, “Cимвол”)

Создает строку символов, в соответствии с заданным количеством

Len(Строка)

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

Instr(Строка, Подстрока)

Ищет подстроку в строке

Lset

Выравнивает строку по левому краю

Rset

Выравнивает строку по правому краю

Left(Строка, Число)

Выделение левой части строки. Количество символов отсчитывается слева

Right(Строка, Число)

Выделение правой части строки. Количество символов отсчитывается справа

Mid(Строка, Число,Число)

Выделяет и перемещает строку

Ltrim(Строка)

Удаляет пробелы в начале строки

Rtrim(Строка)

Удаляет пробелы в конце строки

Trim(Строка)

Удаляет пробелы и вначале, и в конце строки

Str(Число)

Преобразует число в строку

Val(Строка)

Преобразует строку в число

Format(Число, Шаблон)

Преобразует число в строку по заданному формату

Функция StrComp() сравнивает две строки и выдает результат сравнения в виде чисел:

(-1), если первая строка оказалась больше 1, если вторая строка оказалась больше Сравнение двух строк может производиться двумя методами: двоичным и символьным. Двоичное подразумевает: б > a; в > б и т.д., однако регистр при этом не имеет никакого значения, т.е. А = а. Двоичное представление принимается “по умолчанию”

Символьное представление учитывает регистр, т.е. б > а, но А< a.

Для того, чтобы перейти к символьному методу – в начале модуля следует указать оператор Option Compare Text.

Наверх

Дальше

Функции даты и времени Основными функциями дат и времени VBA являются

Функция

Назначение

Date

Возвращает или устанавливает текущую дату

Time

Возвращает или устанавливает текущее время

Now

Возвращает или устанавливает текущую дату и время

DateSerial

Преобразовывает в дату три последовательных числа: год, месяц, число

TimeSerial

Преобразовывает в дату три последовательных числа: часы, минуты, секунды

DateValue

Преобразует в дату ее символьное представление

TimeValue

Преобразует во время его символьное представление

Timer

Возвращает временной интервал от полуночи (в сек.)

Day

Преобразует дату в день месяца

Month

Преобразует дату в месяц года

Weekday

Преобразует дату в день недели

Year

Преобразует дату в год

Hour

Преобразует дату в часы

Minute

Преобразует дату в минуты

Second

Преобразует дату в секунды

 

Наверх

Дальше

Преобразование типов данных VBA предоставляет возможность преобразовать тип данных в любом месте программы. Это можно сделать с помощью функций

Функция

Назначение

CBool

Преобразует в тип Boolean

Ccur

Преобразует в тип Currency

Cdate

Преобразует в тип Date

CDbl

Преобразует в тип Double

Cint

Преобразует в тип Integer

Соседние файлы в папке Книги