Организация ввода-вывода

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

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

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

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

? Запишите команду (2 способа), с помощью которой можно вывести слово “Задача” в ячейку Е10 листа “Пример”.

______________________________

______________________________

? Запишите команду (2 способа), с помощью которой вводится значение переменной t с листа “Задача” из ячейки F2.

______________________________

______________________________

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

Таблица 9 – Параметры функции InputBox

Функция InputBox Выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки OK и Cancel. Устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string по нажатию кнопки OK, содержащее текст, введенный в поле. При нажатии кнопки Cancel возвращает пустую строку. Синтаксис: InputBox(prompt[, title] [, default]) - prompt — строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (chr (13)), символа перевода строки (chr(10)) или комбинацию этих символов (chr( 13) & Chr (10)); - title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения; - default — строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.



Пример.

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

На экране появится окно.

организация ввода-вывода - student2.ru

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

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

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

X=CDbl(InputBox(“Введите значение Х”, “Пример окна ввода”, “1,678”))

В результате выполнения этой операции на экране появится окно ввода.

организация ввода-вывода - student2.ru

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

Введенное пользователем значение будет преобразовано к типу Double и присвоено переменной Х. Если пользователь не будет вводить значение, а просто нажмет кнопку OK, переменной Х будет присвоено значение по умолчанию – 1.678.

? Запишите команду, позволяющую ввести целочисленное значение переменной a через окно ввода, представленного на рисунке 4:

организация ввода-вывода - student2.ru

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

____

? Схематически изобразите вид окна ввода, появляющееся после выполнения следующей команды: к= CInt(InputBox(“Укажите значение переменной е”, “Введите переменную е”, “5.12”))

? Укажите, какое значение примет переменная к, если была нажата кнопка ОК.____________

Таблица 10 - Параметры функции/процедуры MsgBox

Процедура/ функция MsgBox Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис: MsgBox(prompt[, buttons] [, title]) Аргументы: prompt — строковое выражение, отображаемое как сообщение в диалоговом окне; buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0. Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблицах 11—12; title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

Значения параметра Buttons процедуры/функции MsgBox, определяющие отображаемые в диалоговом окне кнопки, приведены в таблице 11:

Таблица 11

Константа Значение Отображаются кнопки
VbOKOnly OK
VbOKCancel OK, Отмена
VbAbortRetryIgnore Стоп, Повтор, Пропустить
VbYesNoCancel Да, Нет, Отмена
VbYesNo Да, Нет
VbRetryCancel Повтор, Отмена

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

Таблица 12

Константа Значение Нажатая кнопка
VbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo ОК Отмена (Cancel) Прервать (Abort) Повторить (Retry) Пропустить (Ignore) Да (Yes) Нет (No)

Пример.

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

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

организация ввода-вывода - student2.ru

Рисунок 5 – Пример окна сообщений

Пользователь может нажать одну из кнопок – Да или Нет. Если будет нажата кнопка Да, переменной N будет присвоено значение 6 , если будет нажата кнопка Нет – 7. Проанализировав в дальнейшем это значение, можно выбрать одну из ветвей выполнения программы.

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

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

организация ввода-вывода - student2.ru

Рисунок 6 – Пример окна сообщений

? Запишите процедуру, позволяющую вывести значение переменной у (к моменту вывода значения переменной у равнялось 1,27) с помощью окна вывода следующего вида:

организация ввода-вывода - student2.ru

Рисунок 7 – Пример окна сообщений

Ответ:____________________

2 Операторы

2.1 Оператор присваивания (=)

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

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

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

Изображение в блок – схеме:

 
  организация ввода-вывода - student2.ru

? Какое значение примет переменная Х в результате выполнения последовательности следующих операторов:

x=5

y=4

x=x+3

x=x+y

Ответ:___________________

Пример: вычислить значение функции f(x,y)=|x|+sin2(y+5).

Public Sub prog1()   Dim x As Double, y As Double Dim f As Double x=CDbl(InputBox("Введите х")) y=CDbl(InputBox("Введите y"))     f = Abs(x) + Sin(y + 5) ^ 2   MsgBox "Результат = " & f     End Sub Заголовок процедуры prog1 (начало программы) Описание переменных: переменные x,y,f вещественного типа (Double) Ввод значений х и у. Функция InputBox выводит на экран окно с полем ввода и сообщением «Введите х» и возвращает значение типа строка (String). Для преобразования вводимого значения к вещественному типу – Double- используется функция CDbl. Вычисление значения переменной f: функция Abs(аргумент) возвращает модуль аргумента, Sin(аргумент) – синус аргумента, ^ - степень числа. Функция MsgBox выводит на экран окно сообщений с текстом «Результат = 12» (если f=12). Конец программы.

 
  организация ввода-вывода - student2.ru

Рисунок 6 - Блок-схема программы prog1

Ñ Составьте программу для вычисления площади прямоугольного треугольника, заданного длинами катетов.

2.2 Условный оператор (If…Then…Else…End If)

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

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

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

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

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

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

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

. . .

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

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

[Else]

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

End If

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

Изображение в блок – схеме:

 
  организация ввода-вывода - student2.ru

Пример: определить вид введенного числа – положительное, отрицательное или ноль.

Public Sub prog2() Dim x As Double Dim s As String x=Worksheets(1).Range("A1")     If x > 0 Then s = "положительное" ElseIf x = 0 Then s = "ноль" Else s = "отрицательное" End If Worksheets(1).Range("C2")=s End Sub     Описание переменной строкового типа Ввод значения переменной х. Значение располагается на Листе1 (Worksheets(1)) в ячейке А1 (Range ("A1")). Условный оператор. Если условие принимает значение True (Истина), то выполняется оператор присваивания ветки Then (s=”положительное”) и завершается условный оператор, в противном случае проверяется второе условие: x=0. Если условие True, то s присваивается значение “нуль”, иначе – “отрицательное”. Вывод результата–s–на лист1 в ячейку С2.

организация ввода-вывода - student2.ru
Рисунок 7 - Блок-схема программы prog2

? Найдите и исправьте ошибки (если есть) в следующих фрагментах программ:

а) If a>0 Then x=0 б) If a>0 Then x=0 Else x=1 End If

Else x=1

End If

? Найдите и исправьте ошибки (если есть) в следующем фрагменте программы. Изобразите блок-схему данного фрагмента:

If t > 0 Then

x = 1

ElseIf t < 0 Then

x = -1

Else

х = 1

End If

End If

? Составьте программу и изобразите ее блок-схему (на листах в конце тетради) для решения следующей задачи: по введенным координатам точки плоскости укажите в каком квадранте (координатной четверти) она расположена. В случае ее принадлежности осям вывести соответствующее сообщение.

2.3 Оператор цикла с параметром (For…Next)

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

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

<тело цикла>

[Exit For]

. . .

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

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

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

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

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

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

Изображение в блок-схемах:

?

 
  организация ввода-вывода - student2.ru

Какое значение примут указанные переменные в результате выполнения следующих фрагментов программы:

а) t = 10: f = 0 б) y = 0

For i = 1 To 5 For i = 2 To 10 Step 2

f = f + I y = y + i

f = t + I Next i

Next I y=_____, i=_____

t=_____, f=_____, i=______

Пример: вычислить n-ый член последовательности, заданной формулой организация ввода-вывода - student2.ru , если организация ввода-вывода - student2.ru .

Public Sub prog3() Dim n As Byte Dim an As Integer,a1 As _ Integer, a2 As Integer n=CByte(InputBox("n ="))     a1 = 1: a2 = 1     For i = 3 To n   an = a1 + a2   a1 = a2: a2 = an   Next i MsgBox an End Sub   Описание переменной типа Byte     Ввод значения переменной n (номера элемента последовательности) через окно ввода и преобразование введенного значения к типу Byte Присваивание начальных значений переменным а1 и а2 (двоеточием разделяются операторы, записанные на одной строке) Организация цикла For…Next, в котором счетчик i изменяется от 3 до n с шагом 1 Вычисление следующего члена последовательности как сумму двух предыдущих Изменение последнего и предпоследнего значений последовательности на данный момент Увеличение счетчика на 1 (конец тела цикла)    

Блок-схема программы:

организация ввода-вывода - student2.ru
Рисунок 8 - Блок-схема программы prog3

? Изобразите блок-схему для следующей программы и укажите, какую задачу она решает:

Public Sub pp()

n = CInt(InputBox("n="))

a = 0: b = 0

For i = 100 To n Step -1

If i Mod 2 = 0 Then

a = a + i

Else

b = b + 1

End If

Next i

MsgBox Abs(a - b)

End Sub

______________________________

______________________________

? Составьте программу и изобразите ее блок-схему (на листах в конце тетради) для решения следующей задачи: вычислите разность между суммой и произведением первых n натуральных чисел (значение n вводится).

2.4 Циклы с предусловием и постусловием

Циклы данного вида используются, когда заранее не известно сколько раз будет выполняться тело цикла.

Циклы с предусловием (Do While…Loop, While…Wend, Do Until…Loop) представлены в таблице 13, а операторы циклов с постусловием (Do…Loop While, Do…Loop Until) - в таблице 14.

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

Таблица 13 – Циклы с предусловием

Синтаксис Do While <условие> <тело цикла> [Exit Do] … Loop While <условие> <тело цикла> Wend   Do Until <условие> <тело цикла> [Exit Do] … Loop
Порядок выполнения <Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (TRUE) (цикл продолжается при истинном значении <условия>). Если <условие> ложно (FALSE), то выполняются операторы, стоящие за циклом. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do). <Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
Изображение в блок-схемах организация ввода-вывода - student2.ru организация ввода-вывода - student2.ru

? Какое значение примут указанные переменные в результате выполнения следующего фрагмента программы:

а) n = 5: s = 0 Do While n <= 10 n = n + 1 s = s + n Loop б) n = 5: s = 0 Do Until n >= 10 n = n + 1 s = s + n Loop
n=________, s=________ n=________, s=________

Таблица 14 - Циклы с постусловием

Синтаксис Do <тело цикла> [Exit Do] … Loop While <условие> Do <тело цикла> [Exit Do] … Loop Until <условие>
Порядок выполнения <Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (цикл продолжается при истинном значении <условия>). Если <условие> ложно, то выполняются операторы, стоящие за циклом. Предоставлена возможность досрочного выхода из цикла (это реализовано через Exit Do). <Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
Изображение в блок-схемах организация ввода-вывода - student2.ru организация ввода-вывода - student2.ru

? Какое значение примут указанные переменные в результате выполнения следующего фрагмента программы:

а) n = 9: s = 0 Do n = n - 1 s = s + n Loop While n >= 5 б) n = 9: s = 0 Do n = n - 1 s = s + n Loop Until n >= 5
n=________, s=________ n=________, s=________

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

Public Sub prog4() Dim x As Integer, m As Integer Dim s As Integer Dim i As Integer m=InputBox("Введите число m") i = 1 s =InputBox("Введите 1 число") Do While s <= m   i = i + 1 x=InputBox("Введите " & i & "число") s = s + x   Loop MsgBox ("Количество чисел " & i) End Sub Ввод предельного числа Номер вводимого числа последовательности Ввод первого числа последовательности   Цикл с предусловием: тело цикла выполняется пока условие s<=m имеет значение Истина (TRUE) Тело цикла: увеличение номера на 1 ввод очередного (i-го) значения   добавление введенного значения к предыдущему значению суммы Конец тела цикла Вывод значения переменной i  

 
  организация ввода-вывода - student2.ru

Рисунок 9 - Блок-схема программы prog4

? Составьте программы и изобразите их блок-схемы (2 программы: используя один цикл с предусловием и один с постусловием) для решения следующей задачи: вычислите произведение первых n натуральных чисел (значение n вводится).

Массивы

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

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

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 – массив состоит из 11 значений целого типа. Индексация зависит от опции Base. Если опция не указана, то номера элементов - от 0 до 10, если же указана (т.е. вначале модуля записано Option Base 1), то номера элементов изменяются от 1 до 10.

? Какие значения принимают указанные объекты при описании следующего массива: Dim A (9) As Byte

Элементы массива_______

Индекс массива_____________________________

? Укажите значение всех элементов массива, ввод и описание которого организованы следующим образом:

Dim a(1 To 10) As Double

For i = 1 To 10

a(i) = i + 5

Next i

______________________________

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

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

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

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

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

n=7

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

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

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

? Исправьте ошибки (если есть) в следующем фрагменте программы:

Dim a(1 To 10) As Double

n = 5

ReDim a(1 To n)

For i = 1 To n

a(i) = i

Next i

Пример. Определить сумму положительных элементов массива A5×8.

Public Sub prog4() Dim a(1 To 5, 1 To 8) As _ Integer Dim s As Integer s = 0 For i = 1 To 5 For j = 1 To 8 a(i,j)=Worksheets(1).Cells(i,j)   If a(i, j) > 0 Then s = s + a(i, j) End If Next j Next I Worksheets(1).Range("A12")= s End Sub   Описание целочисленного массива из 5 строк и 8 столбцов Обнуление переменной s Цикл по строкам (номер строки от 1 до 5) Цикл по столбцам (номер столбца от 1 до 8) Ввод элементов массива с листа Excel (номера строк изменяются от 1 до 5, столбцов – от 1 до 8) Сравнение элементов массива с нулем Добавление положительного элемента к текущей сумме положительных элементов Прибавление шага (в данном случае 1) к счетчику j Прибавление шага (в данном случае 1) к счетчику i Вывод результата в ячейку А12

организация ввода-вывода - student2.ru
Рисунок 10 - Блок-схема программы prog4

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

Public Sub prog5() Dim b() As Double   Dim max As Double, m As Double n=CInt(InputBox("Введите размерность массива")) ReDim b(1 To n) For i = 1 To n b(i) = CDbl(InputBox("Введите " & i & "-ый элемент массива")) Next i max = b(1): m = 1     For i = 2 To n If b(i) > max Then max = b(i) m = i End If Next i t = b(1) b(1) = b(m) b(m) = t For i = 1 To n Worksheets(1).Range("D"& i)=b(i) Next i End Sub Описание динамического массива вещественных значений   Ввод размерности массива (вводимое значение преобразуется к целому типу) Переопределение массива Цикл с параметром используется для ввода элементов массива через окно ввода   Переменной max присваивается значение первого элемента массива (считаем максимальным первый элемент) и присваивается переменной m его номер Начиная со второго элемента просматриваются все элементы массива Каждый элемент сравнивается с максимальным на данный момент элементом: если текущий (i-ый) элемент оказался больше максимального, то значение переменной max изменяется на это значение и запоминается его номер в переменной m С помощью промежуточной переменной t меняются значения двух переменных   С помощью цикла с параметром выводится массив (элементы массива) на лист1 в столбец D начиная с первой строки

 
  организация ввода-вывода - student2.ru

Рисунок 11 - Блок-схема программы prog5

? Составьте программу и изобразите ее блок-схему (на листах в конце тетради) для решения следующей задачи: в одномерном массиве из 25 значений найти сумму квадратов максимального и минимального элементов.

? Составьте программу и изобразите ее блок-схему (на листах в конце тетради) для решения следующей задачи: в двумерном динамическом массиве (nxm) поменять местами первую строку матрицы со строкой, которая содержите минимальный элемент всей матрицы.

4 Форма и элементы управления

По своей сути форма (или пользовательская форма) представляет собой диалоговое окно, в котором можно размещать различные элементы управления. В приложении может быть как одна, так и несколько форм. Новая форма добавляется в проект выбором команды Вставка (Insert) ® UserForm.

В VBA имеется обширный набор встроенных элементов управления. Используя этот набор и редактор форм, нетрудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. Элементы управления являются объектами. Как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи Панели элементов, которая отображается на экране либо выбором команды Вид (View) ® Панель элементов (Toolbox), либо нажатием кнопки организация ввода-вывода - student2.ru панели инструментов Standard. На этой панели представлены кнопки, позволяющие конструировать элементы управления. Для создания элементов управления служат все кнопки панели инструментов, за исключением кнопки Выбор объекта организация ввода-вывода - student2.ru .Щелкнув по кнопке Выбор объекта, можно выбрать уже созданный в форме элемент управления для последующего его редактирования (изменения размеров или редактирования).

Список основных элементов управления и соответствующих кнопок панели элементов приведен в таблице 15.

Таблица 15

Элемент управления Имя Кнопка, его создающая Элемент управления Имя Кнопка, его создающая
Поле TextBox организация ввода-вывода - student2.ru Переключатель OptionButton организация ввода-вывода - student2.ru
Надпись Label организация ввода-вывода - student2.ru Флажок CheckBox организация ввода-вывода - student2.ru
Кнопка CommandButton организация ввода-вывода - student2.ru Выключатель ToggleButton организация ввода-вывода - student2.ru
Список ListBox организация ввода-вывода - student2.ru Рамка Frame организация ввода-вывода - student2.ru
Поле со списком ComboBox организация ввода-вывода - student2.ru Рисунок Image организация ввода-вывода - student2.ru
Полоса прокрутки ScrolBar организация ввода-вывода - student2.ru Набор страниц MultiPage организация ввода-вывода - student2.ru
Счетчик SpinButton организация ввода-вывода - student2.ru Набор вкладок TabStrip организация ввода-вывода - student2.ru

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

Таблица 16

Свойство Описание
Caption Надпись, отображаемая при элементе управления
AutoSize Допустимые значения: True (устанавливает режим автоматического изменения размеров элемента управления так, чтобы на нем полностью помещался текст, присвоенный свойству Caption) и False (в противном случае)
Visible Допустимые значения: True (элемент управления отображается во время выполнения программы) и False (в противном случае)
Enabled Допустимые значения: True (пользователь вручную может управлять элементом управления) и False (в противном случае)
Height и Width Устанавливают геометрические размеры объекта (высоту и ширину)
Left и Top Устанавливают координаты верхнего левого угла элемента управления, определяющие его местоположение в форме
ControlTipText Устанавливает текст в окне всплывающей подсказки, связанной с элементом управления. В следующем примере элементу управления CommandButton назначен текст, всплывающей подсказки это кнопка: CommandButton1.ControlTipText = "Это кнопка"
BackColor, ForeColor и BorderColor Устанавливают цвет заднего и переднего плана элемента управления, также его границы
BackStyle Устанавливает тип заднего фона
BorderStyle Устанавливает тип границы. Допустимые значения: fmBorderStyleSingle (граница в виде контура); fmBorderStyleNone(граница невидима)
SpecialEffect Устанавливает тип границы. Отличается от свойства BorderStyle тем, что позволяет установить несколько типов, но одного цвета. BorderStyle позволяет установить только один тип, но различных цветов
Picture (создание картинки) Внедряет картинку на элемент управления. Например, на поверхности кнопки картинка отображается с помощью следующей инструкции: CommandButton1. _ Picture =LoadPicture("с:\my doc\Kpyг.bmp") Функция LoadPicture(ПолноеИмяФайла) считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла
Picture (удаление картинки) После того как картинка создана на элементе управления, иногда возникает необходимость ее удалить. Это легко достигается присвоением свойству Picture значения LoadPicture("") CommandButton1.Picture = LoadPicture("")

Наиболее часто используемые свойства элементов управления приводим в таблице 17.

Таблица 17

Свойство Описание
TextBox (поле) используется для ввода текста пользователем или для вывода в него результатов расчетов программ
Text Возвращает текст, содержащийся в поле
Multiline Допустимые значения: True (устанавливает многострочный режим ввода текста в поле) и False (однострочный режим)
WordWrap Допустимые значения: True (устанавливает режим автоматического переноса) и False (в противном случае)
Label(надпись) используется для отображения надписей, например, заголовков элементов управления, не имеющих свойства Caption
Caption Возвращает текст, отображаемый в надписи
Multiline Допустимые значения: True (устанавливает многострочный режим ввода) и False (однострочный режим)
WordWrap Допустимые значения: True (устанавливает режим автоматического переноса) и False (в противном случае)
CommandButton (кнопка) используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск программы или остановка ее выполнения, печать и т.д.
Caption Возвращает текст, отображаемый на кнопке
Cancel Допустимые значения: True (устанавливаются отменяющие функции для кнопки, т.е. нажатие клавиши <Esc>приводит к тем же результатам, что и нажатие кнопки) и False (в противном случае)
Accelerator Назначает клавишу, при нажатии на которую одновременно с клавишей <Alt> происходит запуск действий, связанных с кнопкой. Например CommandButton1.Accelerator=”C”
Default Задаёт кнопку по умолчанию, т.е. устанавливает ту кнопку, для которой действия, связанные с ней, будут выполняться при нажатии клавиши <Enter>
Frame (рамка) используется для визуальной группировки элементов управления
Capture Отображает надпись рамки
OptionButton (переключатель) позволяет выбрать один из нескольких взаимоисключающих параметров. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.
Capture Надпись, отображаемая рядом с переключателем
Value Возвращает True, если переключатель выбран и False в противном случае

Пример. В качестве примера работы с формой сконструируем простое приложение, вычисляющее значение функции, например Cos(x).

Перейдем в VBA и, выполнив команду Insert (Вставка) ® UserForm, добавим в проект форму. Расположим на форме следующие элементы управления

организация ввода-вывода - student2.ru

Рисунок 14 – Вид формы в режиме конструктора

Таблица 18

Наши рекомендации