Dim <Имя> [As <Тип>]. InputBox (prompt [, title] [, default])




 

Основные понятия. Величина – отдельный информационный объект, который имеет имя, значение и тип. Величины бывают постоянные и переменные.

Постоянная величина (константа) не изменяет своего значения в ходе выполнения алгоритма. Использование констант делает программы легче читаемыми и позволяет проще вносить изменения: отпадает необходимость многократно исправлять значения по тексту программы, т.к. достаточно ввести новое значение при определении константы.

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

Тип данных определяет множество допустимых значений, которое может принимать величина, и множество действий, которые можно выполнить с этой величиной. Основные типы данных в VBA представлены в таблице 2. Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA).

 

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

 

Тип данных Диапазон значений
Byte (байт) От 0 до 255
Boolean (логический) True или False
Integer (целое число) От -32 768 до 32 767
Long (длинное целое число) От -2147483648 до 2147483647
Single (число с плавающей запятой обычной точности) От -3.402823Е38 до-1,401 298Е-45 - для отрицательных значений; от 1.401298Е-45 до 3,402823Е38 - для положительных значений
Double (число с плавающей запятой двойной точности)   От -1,7976931 3486232Е308 до -4,94065645841 247Е-324 для отрицательных значений; от 4,94065645841 247Е-324 до 1, 7976931 3486232Е308 для положительных значений
Date (даты и время) от 01. 01. 100 до 31. 12.9999
String (строка переменной длины) От 0 до приблизительно 2 миллиардов
String (строка постоянной длины) От 1 до приблизительно 65400
Variant Variant может хранить любой тип данных. Если переменная не объявлена явно, то ей присваивается тип Variant.

 

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

Операнд – это аргумент операции. Например, если вы к двум прибавляете три, то выражение будет выглядеть так 2 + 3, где плюс – это операция, а числа её аргументы, т.е. операнды.

В VBA имеются три основных типа операций:

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

· операции отношения, могут применяться не только к числам, их результатом является значения логического типа;

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

Операции VBA представлены в таблицах 3-6.

 

Таблица 3 – Математические операции

 

[Операнд 1]+ [Операнд 2] Сложение
[Операнд 1]- [Операнд 2] Вычитание
-[Операнд] Перемена знака
[Операнд 1]* [Операнд 2] Умножение
[Операнд 1]/ [Операнд 2] Деление
[Операнд 1] \[Операнд 2] Целочисленное деление
[Операнд 1 Mod [Операнд 2] Остаток от деления по модулю
[Операнд 1] ^[Операнд 2] Возведение в степень

 

Таблица 4 – Операции отношения

 

[Операнд 1] < [Операнд 2] Меньше
[Операнд 1] > [Операнд 2] Больше
[Операнд 1] <= [Операнд 2] Меньше или равно
[Операнд 1] >=[Операнд 2] Больше или равно
[Операнд 1] <> [Операнд 2] Не равно
[Операнд 1] = [Операнд 2] Равно

 

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

 

[Операнд 1] And [Операнд 2] (И) логическое умножение
[Операнд 1] Or [Операнд 2] (Или) логическое сложение
Not [Операнд] Логическое отрицание

 

Таблица 6 – Другие операции

 

[Строка 1] & [Строка 2] [Строка 1] + [Строка 2], Конкатенация (сложение) строк.

Решение любой задачи имеет три части:

1.) ввод данных;

2.) обработка данных;

3.) вывод результата.

Команда ввода – команда, по которой значения переменных задаются через устройства ввода (например, клавиатуру).

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

Обработка данных может включать команды присваивания, ветвления и цикла.

Запуск редактора Visual Basic можно осуществить одним из следующих способов:

• на вкладке Разработчик в группе Код нажмите кнопку Visual Basic.

• используйте сочетание клавиш ALT + F11.

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

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

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

В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо либо щелкнуть кнопку Окно свойств, либо выбрать команду Вид/ Окно свойств (View/Property Window).

Программа (код программы) записывается в окне кода. Окно кода используется при написании любой программы VBA, будь это код макроса, запуск которого осуществляется при нажатии кнопки в созданной пользователем форме, или подпрограмма. Код программы вводится непосредственно в окно кода, так же как текст в любом текстовом редакторе.

Для того чтобы получить окно модуля, необходимо выполнить следующие действия: Вставка / Модуль(Insert / Module).

 

 

Рисунок 5 – Редактор Visual Basic

 

Описание переменных. Для того чтобы начать оперировать с любой величиной (постоянной или переменной) ее необходимо соответствующим образом описать. Важно, чтобы не только разработчик программы понимал, величины какого типа используются в программе, но и исполнитель программы (компьютер), т.к. если компьютер не будет знать, величина какого типа используется в программе, он будет считать ее величиной универсального типа Variant и отведет для ее хранения в памяти 16 и более ячеек. Это будет приводить к неэффективному использованию памяти и замедлению работы программы.

Блок описания переменных имеет следующий синтаксис:

Dim <Имя> [As <Тип>]

Здесь Dim и As – ключевые слова VBA;

<Имя> – имя переменной, удовлетворяющее стандартным правилам именования переменных;

<Тип> – тип данных переменной (см. таблицу 2).

Примеры

1. Dim N As Integer – инструкция описывает переменную N типа Integer.

2. Можно объявить сразу несколько переменных:
Dim Строка As String, Число As Single – инструкция описывает переменную Строка типа String, переменную Число типа Single.

3. Dim K1, K2 As Integer – инструкция описывает переменную K2 типа Integer, переменную K1, тип которой не задан (по умолчанию будет приписан тип Variant).

Организация ввода-вывода. Ввод и вывод данных в VBA может выполняться несколькими способами: с листа Excel, с помощью диалоговых окон, с помощью пользовательской формы.

Для ввода данных с листа или вывода на лист используется объект Worksheets и его методы Range или Cells.

Метод Range использует в качестве аргументов одну или две ссылки на ячейки и возвращают объект Range. Ссылки на ячейки должны быть оформлены в стиле А1 (колонка-буква – строка-число). Ссылка на единичную ячейку, использованная в качестве аргумента, возвращает объект Range для единичной ячейки. Две ссылки на единичные ячейки возвращают объект Range для прямоугольной области, заключенной между этими двумя ячейками. Примеры ввода данных с листа и вывода их на лист представлены в таблице 7.

 

Таблица 7 – Метод Rangeдля ввода-вывода данных

 

X = Worksheets(“Лист1”).Range(“B1”).Value   Присваиваем переменной Х значение ячейки B1 листа Лист1.
Worksheets(“Лист1”).Range(“B1”).Value = Х Выводим в ячейку B1 листа Лист1 значение переменной Х
Worksheets(“Лист1”).Range(“C1”,”D6”).Value = 2 Выводим в ячейки C1 и D6 листа Лист1 число 2
Worksheets(“Лист1”).Range(“В7:С9”).Value = 3 Выводим в диапазон ячеек “В7:С9” листа Лист1 число 3

 

Метод Cells, получая в качестве аргументов два целых числа, возвращают объект, содержащий единичную ячейку. Аргументы определяют номера строки и столбца выбранной ячейки. Примеры ввода-вывода данных на лист представлены в таблице 8.

 

Таблица 8 – Метод Cellsдля ввода-вывода данных

 

A=Worksheets(1).Cells(1,2).Value Переменной А присвоено значение из ячейки первой строки и второго столбца первого листа.
Worksheets(1).Cells(2,2).Value= Х В ячейку второй строки и второго столбца заносится значение переменной Х

Для ввода данных с клавиатуры используется окно ввода InputBox (рисунок 6), а для вывода информации на экран – окно сообщений MsgBox (рисунок 7-8).

Функция InputBox выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки OK и Cancel.

Устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем: при нажатии на кнопку OK, возвращает значение типа string, содержащее текст, введенный в поле ввода, а при нажатии кнопки Cancel возвращается пустая строка.

Синтаксис:

InputBox (prompt [, title] [, default])

Аргументы:

· prompt – обязательный параметр. Любое строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr(13) & Chr (10));

· title – Необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения;

· default – Необязательный параметр. Строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.

Пример

Имя =CDbl(InputBox(“Введите Ваше имя”, “Пример окна ввода”))

На экране появится окно (рисунок 6).

 

Рисунок 6 – Пример окна ввода

Переменной Имя будет присвоено значение типа Double, введенное пользователем.

Процедура MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.

Синтаксис:

MsgBox (prompt [, buttons] [, title])

Аргументы:

· prompt – Обязательный параметр. Строковое выражение, отображаемое как сообщение в диалоговом окне;

· buttons – Необязательный параметр. Числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка и основную кнопку. Значение по умолчанию этого аргумента равняется 0;

· title – Необязательный параметр. Строковое выражение, отображаемое в строке, заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.

Пример

N = MsgBox (“Значение переменной Х=” & X & Chr(10) & “Продолжить вычисления?”, VbYesNo, “Пример окна MsgBox”)

Если к моменту выполнения данного оператора переменная Х равнялась числу 2,14587895, то на экране появится следующее окно

 

 

Рисунок 7 – Пример окна вывода

 

Часто процедура MsgBox используется в «минимальном» варианте - только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки.

Пример

MsgBox “Значение переменной Х=” & X

 

 

Рисунок 8 – Пример окна вывода

Операторы

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

Синтаксис: < переменная > = < выражение >

Порядок выполнения: вычисляется значение < выражения > и присваивается полученное значение < переменной > (вычисляется значение выражения, стоящего справа от знака присваивания, и присваивается переменной, стоящей слева от знака присваивания).

Изображение оператора присваивания на блок-схеме показано на рисунке 9.

 

 
 

Рисунок 9 – Изображение на блок-схеме оператора присваивания

 

Условный оператор позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия.

Условный оператор имеет два варианта синтаксиса:

a) однострочная форма записи условного оператора:

If < условие > Then [ <операторы 1> ] [Else [< операторы 2 >] ];

б)блочная форма записи условного оператора:

If < условие 1 > Then

[ <операторы 1> ]

...

[ ElseIf <условие n> Then

[ <операторы n> ]…

[ Else ]

[< ИначеОператоры >]]

End If.

Порядок выполнения: вычисляется значение <условие>. Оно может принимать значения TRUE (Истина) или FALSE (Ложь). Если <условие> принимает значение TRUE, то выполняются [< операторы 1 >] (операторы ветки Then), в противном случае - [ <операторы 2> ] (операторы ветки Else).

Изображение условного оператора на блок-схеме показано на рисунке 10.

 

Рисунок 10 – Изображение на блок-схеме условного оператора

 

Оператор цикла For позволяет повторять группу операторов заданное число раз.

Синтаксис: For <счётчик_цикла> = <начало> To <конец> [ Step <шаг>]

<тело цикла>

[ Exit For ]

...

Next [<счётчик_цикла>],

где <счётчик_цикла> — числовая переменная;

<начало> - начальное значение (выражение) переменной <счётчик_цикла>;

<конец> - заключительное значение (выражение) переменной <счётчик_цикла>;

<тело цикла>- это последовательность операторов, которая будет выполнена заданное число раз.

Порядок выполнения: переменной <счётчик_цикла> присваивается значение <начало> и проверяется условие: <начало > £ <конец >; если условие неверно, то <тело цикла > не выполняется и управление передается на оператор, следующий за Next. Если же условие выполняется, то выполняется <тело цикла>, затем значение <счётчик_цикла > изменяется на значение <шаг > (увеличится в случае положительного значения <шаг >, и уменьшается при отрицательном значении <шаг >). Данный процесс будет выполняться, пока значение <счётчик_цикла > не достигнет значения <конец >. Досрочно завершить цикл For…Next можно и с помощью оператора Exit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.

 
 

Изображение оператора цикла на блок-схемах показано на рисунке 11.

 

Рисунок 11 –Изображение на блок схеме оператора цикла

 

Массив – совокупность однотипных элементов данных (чисел, логических данных, символов), которой при обработке присвоено определенное имя. Массивы бывают статические и динамические. Статическими называются массивы, количество элементов в которых заранее известно и не изменяется в ходе выполнения программы. Динамические массивы – массивы, в которых либо не известно начальное количество элементов, либо размерность массива (количество элементов) изменяется при выполнении программы.

Описание массивов:

1) одномерный статический массив

Dim <имя массива> ( <начальное значение индекса > To <конечное значение индекса> ) [ As <тип элементов массива >]

или

Dim <имя массива> ( <количество элементов массива > ) [ As <тип элементов массива >];

2) двумерный статический массив

Dim <имя массива > ( <начальное значение индекса по строкам> To <конечное значение индекса по строкам >, < начальное значение индекса по столбцам > To < конечное значение индекса по столбцам> ) [ As <тип элементов массива> ]

или

Dim <имя массива> ( <количество строк>, <количество столбцов> ) [ As <тип элементов массива>].

Первый способ отличается от второго тем, что в первом случае указывается индекс первого и последнего элементов, во втором же – только количество элементов, нумерация которых может начинаться как с 0, так и с 1. Это зависит от опции Base (задает базовый индекс). Если опция не указана, то нумерация элементов массива начинается с нуля. Для изменения базового индекса в начале листа модуля необходимо написать Option Base 1.

Пример

а) Dim А(1 To 10) As Integer – массив А состоит из 10 элементов целого типа, индексы которых 1, 2, …, 10;

б) Dim А(10) As Integer – массив состоит из 10 значений целого типа. Индексация зависит от опции Base. Если опция не указана, то номера элементов - от 0 до 9, если же указана (т.е. вначале модуля записано Option Base 1), то номера элементов изменяются от 1 до 10;

3) динамический массив:

Dim <имя массива> () [ As <тип элементов массива>].

После определения количества элементов массива выполняется его переопределение:

ReDim <имя массива> ( <задается размерность массива (одномерного/двумерного > ).

Пример

Dim А() As Single–динамический массив А вещественных элементов

n=7

ReDim A(1 To n) – переопределение одномерного массива из n значений

ReDim A(5,n) – переопределение двумерного динамического массива, состоящего из 5 сток и n столбцов (начало индексации элементов определяется по опции Base)

Обращение к элементу массива осуществляется следующим образом: указывается имя массива, а затем в круглых скобках указывается номер элемента в массиве. Если массив двумерный – указывается вначале номер строки, затем через запятую номер столбца.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: