Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Информатика / !Метод указания VBA!.doc
Скачиваний:
76
Добавлен:
17.04.2015
Размер:
1.55 Mб
Скачать

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

Ввод и вывод данных в 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= Х

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

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

Таблица 9

Функция

InputBox

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

Синтаксис:

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

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

  • title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения;

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

Пример.

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

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

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

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

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

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

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

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

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

Таблица 10

Процедура

MsgBox

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

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

Аргументы:

prompt — строковое выражение, отображаемое как сообщение в диалоговом окне;

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

title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

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

Таблица 11

Константа

Значение

Отображаются кнопки

vbOKOnly

0

OK

VbOKCancel

1

OK, Отмена

VbAbortRetryIgnore

2

Стоп, Повтор, Пропустить

VbYesNoCancel

3

Да, Нет, Отмена

VbYesNo

4

Да, Нет

VbRetryCancel

5

Повтор, Отмена

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

Таблица 12

Константа

Значение

Нажатая кнопка

vbOK

vbCancel

vbAbort

vbRetry

vbIgnore

vbYes

vbNo

1

2

3

4

5

6

7

ОК

Отмена (Cancel)

Прервать (Abort)

Повторить (Retry) Пропустить (Ignore)

Да (Yes)

Нет (No)

Пример.

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

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

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

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

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

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

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

2 Операторы

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

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

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

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

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

П ример. Вычислить значение функции 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).

Конец программы.

Р исунок 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>] (операторы ветки Then), в противном случае - [<операторы 2>] (операторы ветки Else).

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

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

Public Sub prog2()

Dim x As Double

Dim s As String

x=Worksheets(1).Range("A1")

If x > 0 Then

s = "положительное"

Else If 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.

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

Соседние файлы в папке Информатика