Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Работа с переменными, массивами, константами



Приложение, созданное средствами VBA и встроенное в рабочую книгу Excel, хранит исходные, промежуточные данные и результаты их обработки в таблицах и отдельных ячейках на листах книги Excel, в переменных, в массивах переменных и в виде констант, а также в виде значений свойств объектов – элементов управления. Кроме того, VBA предоставляет средства для чтения данных из файлов и для записи в файлы. Для работы с данными используются инструкции языка программирования, процедуры и функции, но все эти средства рассчитаны на работу с данными определённых типов. Рассмотрим встроенные типы данных VBA (табл. 2). Возможности конструирования в приложении собственных типов данных поясним позже.

Таблица 2 – Встроенные типы данных VBA

Тип данных Размер в байтах Разрядность (цифр) Диапазон, пояснение
Boolean     True, False – логические значения
Byte   ≤ 3 0, 255 – целые положительные числа
Integer   ≤ 5 –32768, 32767 – целые числа
Long   ≤ 10 –2147483648, 2147483647 – длинные целые
Single   ≤ 7 –3.402823.1038, –1.401298.10-45– отрицательные числа 1.401298.10-45, 3.402823.1038 – положительные числа
Double   ≤ 15 Действительные числа с двойной точностью
Currency   ≤ 19 Действительные числа с 4 знаками после десятичной точки. Используются для точных денежных расчетов
Date     01.01.0100, 31.12.9999 – даты
String 1+L   Строка из L символов; L≤ 65535
Object     Объект – фактически, ссылка на него, т. е. адрес его размещения в оперативной памяти
Variant     Может принимать любой тип данных, т. е. настройка на тип операнда происходит во время исполнения инструкций или процедур

Когда при разработке приложения возникает необходимость в переменной для хранения данных, её описывают в модуле перед процедурами или в конкретной процедуре. В первом случае переменная будет доступна всем процедурам модуля (как контейнер общего пользования), а если в её описании применено ключевое слово Public, то переменную смогут использовать даже процедуры других модулей. Такую переменную называют глобальной. В ней удобно размещать данные, требуемые многим процедурам. Переменная, описанная внутри процедуры, называется локальной – она используется только в этой процедуре, а в других могут быть переменные с таким же именем.

Оператор, определяющий с помощью ключевых слов Dim и As тип переменной, имеет синтаксис:

Dim [Имя переменной] As [Тип данных].

Основные типы данных представлены в табл. 2.

Более полная характеристика типов данных даётся в [3].

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

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

Таблица 3 – Типы переменных и определяющие их ключевые слова

Тип переменной Ключевое слово
Integer DefInt
Long DefLn
Single DefSng
Double DefDbl
Currency DefCur
String DefStr
Byte DefByter
Boolean DefBool
Date DefData
Variant DefVar
Object DafObj

1.2.1. Основные инструкции языка Visual Basic

Сгруппируем основные инструкции языка Visual Basic по типу операций:

· присваивания, в том числе с выполнением математических операций в правой части инструкции;

· проверки условий, управления последовательностью исполнения инструкций, организации циклов;

· инструкции для работы с файлами.

Последняя группа инструкций в этом кратком пособии не рассматривается. При необходимости с ними можно познакомиться самостоятельно [2, 4].

Инструкция присваивания предписывает найти значение выражения, заданного в её правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Например, присвоить переменной x значение 2. Это можно записать: x = 2. В следующем примере значение переменной x увеличивается на 2: x = x + 2.

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

Арифметические операции бывают унарными и бинарными. К унарным относится операция изменения знака. Формат этой операции:

– <переменная>

Арифметические операции выполняются над числами, и их результатом являются числа. Они перечислены в таблице 4. При программировании формул необходимо учитывать приоритеты операций и (в случае необходимости) использовать скобки, как это принято в математике.

Таблица 4 – Арифметические операции

Операция Содержание операции Приоритет  
 
^ Возводит первое арифметическое выражение в степень, задаваемую вторым арифметическим выражением.    
Знак минус ставится перед именем переменной, константы или перед числом.    
* Перемножает два арифметических выражения.    
/ Делит первое арифметическое выражение на второе.    
\ Округляет два арифметических выражения до целых значений и делит первое число на второе. Результат округляется до целого.    
Mod Округляет оба арифметических выражения до целых чисел, делит первое число на второе и возвращает в качестве результата остаток.    
+ Складывает два арифметических выражения.    
Вычитает из первого арифметического выражения второе    

Рассмотрим две специфические операции, выполняющие деление целых чисел.

Операция a\b возвращает целую часть от деления целого числа а на целое число b. Например, 7\3 равно 2.

Операция a mod b возвращает остаток от деления целого числа а на целое число b. Например, 7 mod 3 равно 1. Если одно число делится на другое без остатка, операция mod возвращает значение 0. Например, 8 mod 2 равно 0.

Поясним таблицу 4. Смена знака имеет место, когда минус ставится перед именем переменной, константы или перед числом. Например: F=CX*(–G^2), если CX = 3, а G = 1.5, то F = –6.75. Чтобы убедиться в правильности результата, достаточно на листе Excel разместить кнопку CommandButton1 и поле TextBox1, а в событийную процедуру CommandButton1_Click включить инструкции:

Dim I As Integer, F As Single

F = 3 * (–1.5 ^ 2)

I = 3 * (–1.5 ^ 2)

TextBox1.Text = "F=" & Format(F, "0.00") & "I=" & Str(I).

Выйдя из режима конструктора и нажав кнопку, увидим в поле TextBox1 результаты.

Все результаты примеров легко проверить, подставляя в текст проведённой только что процедуры формулы вычисления I и F. Из этих примеров должно быть понятно, что результат арифметических операций зависит также от типа переменной, которой он присваивается, ведь переменная целого типа не может хранить число с плавающей точкой, поэтому перед записью в ячейку I результат округляется.

Приведённая выше процедура иллюстрирует и конкатенацию (&) – слияние строк. К строке «F=» прибавляется строка, содержащая отформатированное значение F (с двумя цифрами после десятичной точки). К этой объединённой строке добавляется «I=» и далее – превращенное в последовательность символов (в строку) число I.

Операции сравнения используют для сравнения чисел, значений переменных, констант, ячеек таблиц. Результат операции сравнения имеет тип Boolean и может принимать значение True или False (таблица 5).

Таблица 5 – Операции сравнения

Операция Наименование Пример (R имеет тип Boolean) Результат
= Равно R = (10=5) False
> Больше R = 10>5 True
< Меньше R = 10<5 False
>= Больше или равно R = “a” >= “b” False
<= Меньше или равно R = “a” <= “b” True
<> Не равно R = “a” <> “b” True

В логических операциях (табл. 6) не только результат, но и операнды имеют тип Boolean.

Таблица 6 – Логические операции

Операция Наименование
And Логическое умножение
Or Логическое сложение
Xor Исключающее Or (или)
Not Логическое отрицание

Поясним назначение таких операций на простом примере. Пусть переменная типа Boolean с именем R должна принимать значение TRUE, если точка с координатами X,Y попадает в прямоугольную область, ограниченную координатами X1,X2 и Y1,Y2. Если точка за пределами прямоугольника, то R = FALSE. Применив логическую операцию AND (И), вычислим значение R:

R = (X>=X1) AND (X<=X2) AND (Y>=Y1) AND (Y<=Y2).

Смысл этой операции в том, что если и первое выражение (X больше или равно X1) истинно, и второе, и третье, и четвертое истинно, то R = TRUE. Если один из операндов логической операции AND представляет собой ложное выражение (утверждение), то и результатом будет FALSE.

Кроме операции AND, к числу часто используемых логических операций относятся OR и NOT. Первая из них даёт результат TRUE, если истинно хотя бы одно выражение, являющееся операндом. Операция NOT изменяет результат на противоположный, подобно смене знака в арифметическом выражении. Вычислим R с помощью этих операций:

R = NOT ((X<X1) OR (X>X2) OR (Y<Y1) OR (Y>Y2)).

Выражение, стоящее в скобках после операции NOT, истинно (TRUE), если точка левее или правее, или ниже, или выше воображаемого прямоугольника, т. е. если точка в него не попала. В этом случае R будет иметь значение FALSE благодаря логическому отрицанию NOT.

Несколько реже используются логические операции XOR (исключающее ИЛИ), EQV (эквивалентность) и IMP (импликация). Первая из них даёт результат TRUE, если только одно из выражений-операндов имеет результат TRUE. Результатом операции EQV будет TRUE, если выражения–операнды дают одинаковый результат. Результатом IMP будет TRUE, если выражения–операнды дают разные результаты.

Генератор случайных чисел (Randomize, RND).

Иногда в программе нужно где-нибудь применить случайное число. Для этого в Бэйсике существует функция RND: она возвращает число между 0 (включительно) и 1 (исключительно), но какое именно – чистая случайность! Чтобы получить случайное значение между 0 и каким-нибудь другим числом, например между 0 и 256, случайное число можно просто умножить на это число: RND * 256 выдаст случайное число между 0 (включительно) и 256 (исключительно). Компьютер берёт случайные числа из, так сказать, одинаково рассортированных карт.

Часто используемые встроенные функции Visual Basic представлены в таблице 7.

Таблица 7 – Часто используемые встроенные функции Visual Basic

Функция Содержание арифметической функции
   
Abs(x) Возвращает значение, тип которого совпадает с типом переданного аргумента Х, равное абсолютному значению указанного числа. Например: abs(4-6) вернёт в качестве результата значение 2
Atn(x) Возвращает значение типа Double, содержащее арктангенс числа Х
Cos(x) Возвращает значение типа Double, содержащее косинус угла Х
Exp(x) Возвращает значение типа Double, содержащее результат возведения числа е (основание натуральных логарифмов) в указанную степень
Fix(x) Возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа, ближайшее отрицательное целое число, большее либо равное указанному Х
Int(x) Возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа, ближайшее отрицательное целое число, меньшее либо равное указанному Х
Log(x) Возвращает значение типа Double, содержащее натуральный логарифм числа Х
Rnd(x) Возвращает значение типа Single, содержащее случайное число
Sgn(x) Возвращает значение типа Variant (Integer), соответствующее знаку указанного числа. Обязательный аргумент: число Х может представлять любое допустимое числовое выражение. Возвращаемое значение: Х > 0, то Sgn(x) возвращает 1; если Х равняется нулю, то 0; если X < 0, то –1
Sin(x) Возвращает значение типа Double, содержащее синус угла Х
Sqr(x) Возвращает значение типа Double, содержащее квадратный корень указанного числа
Tan(x) Возвращает значение типа Double, содержащее тангенс угла Х
Строковые LCASE() – преобразование строки в строчные буквы
UCASE() – преобразование строки в заглавные буквы
LEN() – определение длины строки и др.
INSTR() – позиция первой встречи одной строки внутри другой
Даты и времени DATE() – текущая дата
TIME() – текущее время
NOW() – текущая дата и время
DAY() – номер дня года и другие

Окончание табл. 7

   
Преобра­зования типов данных CINT() – действительного числа в целое (с округлением)
CSTR() – числа в строку символов
CVAR() – преобразование в тип данных VARIANT
FORMAT() – форматирование данных, формирование строк
VAL() – преобразование строки символов в число и др.

Логарифм по любому основанию n для любого числа х можно вычислять, деля натуральный логарифм числа х на натуральный логарифм числа n, следующим образом: .

Старшинство операций:

1) вычисление функций;

2) унарный минус, возведение в степень;

3) *, /, \, mod;

4) +, –.

1.2.3. Создание интерфейса пользователя

Ход работы:

1) Меню Вид/Панели инструментов/Visual Basic.

2) Кнопкой в виде молоточков вывести на экран панель, содержащую «Элементы управления».

3) Перейти в «Режим конструктора» – кнопка с изображением треугольника и карандаша.

4) Кнопкой в виде листочка с указательным пальцем вывести окно «Свойства».

Создание программы на Visual Basic состоит из двух взаимосвязанных процессов:

а) конструирования формы, с которой пользователь будет вести диалог;

б) кодирования, определяющего характер работы программы.

Форма– это окно будущего приложения. Когда начинаем создавать новый проект, Visual Basic создаёт пустую форму и присваивает ей заголовок UserForml. На форме изображаются различные части программы – объекты или элементы управления: окна, списки, кнопки, переключатели, линейки прокрутки и т. д. Сама форма рассматривается Visual Basic как объект.

Элементы управления создаются на основе шаблонов, расположенных в окне инструментария. В момент создания формы (рисунок 4) можно изменять положение, размеры и другие атрибуты объектов, однако объекты остаются неактивными, то есть с помощью их нельзя выполнить никаких операций.

При запуске законченного приложения Visual Basic убирает весь инструментарий. Компоновка элементов окна формы фиксируется, объекты управления можно активизировать и работать с программой, как задумано. Приложение берёт управление на себя, a Visual Basic исполняет операторы программы.

Рисунок 4 – Создание формы в редакторе VBA

1.2.4. Окно свойств

Понятие Properties в Visual Basic связано с механизмом формального описания атрибутов объекта. Окно свойств активно только на этапе проектирования приложения.

Каждый объект Visual Basic обладает своими специфическими свойствами, параметры которых определяют внешний вид и поведение объекта.

В верхней части окна свойств (рисунок 5) находится раскрывающийся список, содержащий имена и типы объектов, включённых в приложение, который называется списком объектов. Изначально здесь содержится лишь информация о форме, но по мере размещения на форме элементов управления Visual Basic регистрирует их в этом списке.

Под списком объектов расположен список свойств с их текущими значениями для выбранного объекта. Список свойств может быть представлен в алфавитном порядке (нажата кнопка Alphabetic) или по категориям (нажата кнопка Categorized) окна свойств. Значение выделенного маркером свойства параметра можно изменить путём введения нового значения или выбора одного из предлагаемых вариантов.

Рисунок 5 – Список свойств

Если краткого описания свойства в нижней части окна свойств недостаточно, то нажатием клавиши F1 можно вызвать справку с описанием выделенного маркером свойства.

Главное меню, как и во всех приложениях Microsoft, представляет собой линейку раскрывающихся меню. Оно содержит следующие основные команды: File (Файл), Edit (Правка), View (Вид), Insert (Вставка), Format (Формат), Debug (Отладка), Run (Запуск), Tools (Сервис), Add-Ins (Надстройки), Window (Окно), Help (Справка). Наиболее часто используемые команды меню отображены в виде кнопок со значками на стандартной панели инструментов, размещённой ниже меню. Многие команды знакомы пользователю, поскольку главное меню VBA организовано и работает так же, как и в других приложениях Microsoft, например, в текстовом редакторе Microsoft Word или табличном процессоре Microsoft Excel.

1.2.4. Меню Edit

Меню содержит команды редактирования экранных форм и программных кодов:

· Cant Undo – отмена результата последней операции редактирования;

· Cant Redo – восстановление результата последней операции редактирования;

· Cut – удаление выбранного объекта или текста в буфер;

· Сору – копирование выбранного объекта или текста в буфер;

· Paste – вставка объекта или текста из буфера;

· Delete – удаление выбранного объекта или текста;

· Find – поиск в программном коде нужного места;

· Replace – поиск в программном коде указанного текста и его замена.

1.2.5. Меню View

Меню содержит команды вызова различных окон.

· Code, Object, Project Explorer, Properties, Toolbox – окна отладки;

· Object Browser, Color Palette – активизация окон кода, объектов, проекта, свойств, инструментария, окна отладки, инспектора объектов, окна с цветовой палитрой, панели инструментов;

· Toolbar – вкл./откл. линейки инструментов;

· Proceduren Definnition – перемещение на код процедуры, вызываемой из текущей процедуры;

· Last Position – перемещение на предыдущие точки модификации кода.

1.2.6. Меню Format

Команды меню связаны с расположением формы на экране, а также объектов на форме.

· Align – выравнивание выбранных объектов по точкам сетки;

· Indent (Outdent) – сдвиг строк выделенного кода на табуляцию влево (вправо);

· Lock Controls – фиксация объектов на форме.

1.2.7. Меню Debug

Содержит команды отладки приложения.

· Step Into – построчное выполнение программного кода, включая коды процедур;

· Step Over – построчное выполнение программного кода с пропуском кодов вызываемых процедур;

· Step To Cursor – останов выполнения программного кода на строке, у которой расположен курсор.

· Clear All Breakpoints – удаление из программного кода всех контрольных точек.

1.2.7. Меню Run

Содержит команды, управляющие запуском, продолжением выполнения и выходом из приложения, команды отладки приложения:

· Run Macro – запуск приложения на выполнение;

· Break – выход из приложения;

· Reset – после прерывания программы устанавливает начальные значения переменных и запуск приложения на выполнение с самого начала.

1.2.8. Меню Tools

· Options – установка параметров интегрированной среды проектирования (шрифтов, цвета и др., программных кодов);

· Menu Editor – вызов редактора меню (открытие окна проектирования меню).

1.2.9. Меню Window

Находятся команды управления расположением окон на экране.





Дата публикования: 2014-11-02; Прочитано: 341 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.019 с)...