Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Информатике на Машфаке и ТЭА-1.doc
Скачиваний:
11
Добавлен:
12.11.2019
Размер:
3.28 Mб
Скачать

10.9 Оформление программного кода

Комментарии

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

Размещение оператора на нескольких строках

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

При этом надо помнить, что:

  • Нельзя разбивать переносом строковые константы

  • Допустимо не более семи продолжений одной и той же строки

  • Сама строка не может состоять более, чем из 1024 символов

Размещение нескольких операторов на одной строке

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

X=2 : d=7

11 Операторы vba

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

11.1 Оператор присваивания

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

Синтаксис оператора присваивания:

<идентификатор>=<выражение>

Например

X=2

Y=”Привет”

Стоимость=x*kol

TextBox1.Visible=True;

CommandButton1.Caption=”Вычислить”

Работа: вычисляется значение <выражения> присваивается полученное значение <идентификатору>

П ример.

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

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

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

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

Public Sub Ввод_Вывод()

x = Worksheets("Лист1").Range("F1").Value

Worksheets(1).Range("F2").Value = x

x = Worksheets("Лист1").Range("g1")

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

Worksheets("Лист1").Range("A1:B2").Value = 1

Worksheets(1).Range("c1, d6") = 5

End Sub

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

A=Worksheets(1).Cells(1,2).Value

Переменной А присвоено значение из ячейки первой строки и второго столбца первого листа.

Worksheets(1).Cells(2,2).Value= Х

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

Ячейка А2 как объект описывается Range ("A2") или cells (1,2).

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

Окно ввода

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

Устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем:

    • При нажатии на кнопку OK, возвращает значение типа string, содержащее текст, введенный в поле ввода.

    • При нажатии кнопки Cancel возвращается пустая строка.

Синтаксис:

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

Аргументы:

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

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

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

Пример.

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

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

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

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

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

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

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

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

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

Окно вывода

Процедура MsgBox выводит на экран диалоговое окно, содержащее сообщение.

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

Синтаксис:

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

Аргументы:

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

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

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

Таблица 11 – Значение констант, определяющее тип и число кнопок, тип значка

Имя Константы

Числовое

значение

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

VbOkOnly

0

VbOkCancel

1

VbAbortRetryIgnore

2

VbYesNoCancel

3

VbYesNo

4

VbRetryCancel

5

VbCritical

16

VbQuestion

32

VbExclamation

48

VbInformation

64

VbDefaultButtob1

0

Первая кнопка по умолчанию

VbDefaultButtob2

256

Вторая кнопка по умолчанию

VbDefaultButtob3

512

Третья кнопка по умолчанию

VbDefaultButtob4

768

Четвертая кнопка по умолчанию

VbSystemModal

4096

Режим модальности: все программы приостанавливаются до тех пор, пока пользователь не ответит на сообщение

Значения 0-5 параметра кнопки могут быть просуммированы со значениями 16-64 и 256-4096. В этом случае первые значения определяют состав кнопок диалогового окна, вторы – вид отображаемого в окне значка, а третьи – выбор кнопки по умолчанию.

Например, если в качестве значения параметра указать выражение 3+64+512, то в диалоговом окне будут отображены кнопки Да, Нет, Отмена, значок информирующего значения и по умолчанию будет выбрана кнопка Отмена.

Public Sub qq()

MsgBox "Нажмите любую кнопку", _

vbYesNoCancel + vbInformation + vbDefaultButton3, _

"Контрольный пример"

MsgBox "Нажмите любую кнопку", _

3 + 64 + 512, _

"Контрольный пример"

MsgBox "Нажмите любую кнопку", _

579, _

"Контрольный пример"

End Sub

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

Таблица 12

Константа

Значение

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

vbOK

vbCancel

vbAbort

vbRetry

vbIgnore

vbYes

vbNo

1

2

3

4

5

6

7

ОК

Отмена (Cancel)

Прервать (Abort)

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

Да (Yes)

Нет (No)

Пример.

Public Sub TestMsgBox1()

x = 2

n = MsgBox("Значение переменной Х=" & x & Chr(10) _

& "Продолжитьвычисления ?", vbYesNo, "Пример окна MsgBox")

If n = 6 Then

MsgBox "Нажата кнопка Да"

ElseIf n = 7 Then

MsgBox "Нажата кнопка Нет"

End If

End Sub

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

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

Например:

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

Пример окна сообщений

ПРИМЕР:

1. Пример использования окон сообщений. В результате действия приведенной ниже процедуры Тестокон появится диалоговое окно пример окна ввода с полем ввода

Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ОК.

На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия

Если пользователь не введет имя в поле ввода диалогового окна Пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна

Public Sub ТестОкон()

Dim ИмяКлиента As String

'

' Ввод имени пользователя

'

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

' Реакция программы на ввод имени пользователя

If ИмяКлиента <> "" Then

MsgBox "Привет, " & ИмяКлиента, vbInformation, _

"Пример окна сообщения"

Else

MsgBox "Невежа, ты забыл ввести свое имя ", _

vbExclamation, "Еще один пример окна сообщения"

End If

End Sub