Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
VBA не накладывает на структуру программы (процедуры) каких-либо особых ограничений. Однако желательно придерживаться следующих рекомендаций:
1. В соответствии с правилами хорошего стиля программирования размещать инструкции описания в начале процедуры, т.е. структурно выделив в ней описательную и исполнительную части.
2. Использовать комментарии.
Комментарии, т.е. пояснения к фрагменту текста процедуры, не являются программным кодом и поэтому компилятором игнорируются. Комментарии выполняют две важные функции:
- Делают программу легко читаемой, поясняя смысл кода и алгоритма. Комментарии могут располагаться в любом месте процедуры. Закомментированный текст в начале программы используется для указания действия, выполняемого ею, и краткой справке об авторе программы. Комментарии по тексту процедуры обычно используются для пояснения ключевых фрагментов кода.
- Временно отключают от выполнения закомментированные фрагменты программы, что бывает очень полезно при ее отладке.
Для ввода комментариев используется символ (´) апостроф. Его можно использовать в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий.
Например:
Sub Lab1 ()
´программирование линейных алгоритмов
´задание 2.2
´выполнил студент гр. МТ-11
´Иванов И.И.
Dim S As Integer ´S – сумма положительных чисел
Dim i As Byte ´i – переменная цикла
…
End Sub
3. Перенос строк кода.
Длинные инструкции можно размещать в нескольких строках. Для этого используют признак продолжения строки, состоящей из двух символов: пробела и подчеркивания(_).
Например,
y = 2 * Sqr(x+3) - (log(x^2) +2) _
/ (sin(x-1));
При переносе строк необходимо помнить:
- Нельзя разбивать переносом строковые константы. Если строковая константа длинная, и ее все же необходимо разбить, следует использовать операцию конкатенации (сцепления).
Например,
y= “В обрабатываемом массиве нет” & _
“ положительных чисел”;
- За признаком продолжения строки нельзя ставить комментарий.
- Допустимо не более семи продолжений одной и той же строки.
- Строка не может состоять более чем из 1024 символов.
4. Расположение нескольких операторов в одной строке.
Использование знака двоеточия (:) позволяет разместить несколько операторов (инструкций) на одной строке. Это всегда короткие операторы, как правило, операторы присваивания. Например, конструкции
x=x+a
y=x-b
эквивалентны такой
x=x+a: y=x-b
5. Выделение логических уровней кода отступами.
Любая информация воспринимается лучше, если она имеет иерархическую структуру (процедура, цикл, вложенный цикл, ветвление, вложенное ветвление, описательные инструкции и т.д.). В VBA такая структура создается с помощью отступов в коде в нужных местах. Это не только облегчит чтение кода, но и поможет увидеть его структуру.
Правила отступа просты. Основной текст программы набирайте с отступом, например, в три пробела. Каждый вложенный блок (например, инструкции, расположенные внутри оператора цикла) сдвиньте еще на три пробела и т.д.
2. ОРГАНИЗАЦИЯ ВВОДА – ВЫВОДА ДАННЫХ
Для обмена информацией с пользователем в Windows используются специальные формы, которые называются диалоговыми окнами.
В проектах VBA при организации диалога с пользователем используются две разновидности встроенных диалоговых окон: окна сообщений и окна ввода.
Окно ввода (InputBox) обеспечивает ввод информации, а окно сообщений (MsgBox) выводит сообщения для пользователя.
Кроме того, в программах VBA, написанных для приложения MS Excel, есть возможность ввод и вывод данных осуществить непосредственно из ячеек (в ячейки) рабочего листа.
2.1. ОКНО СООБЩЕНИЯ. Стандартная процедура MsgBox
Вывод – это процесс переноса информации из оперативной памяти компьютера на внешний носитель (экран, принтер, файл).
Практически любое информационное сообщение или предупреждение пользователь может вывести в специальном диалоговом окне.
Программная поддержка окна сообщения осуществляется встроенной процедурой MsgBox, которая
- выводит на экран диалоговое окно, содержащее сообщение и одну или более кнопок (см. рис.1-5). Кнопка OK выводится всегда. Остальные кнопки – по усмотрению разработчика.
- устанавливает режим ожидания нажатия кнопки пользователем.
Сокращенный синтаксис процедуры MsgBox:
MsgBox сообщение [, атрибуты] [, заголовок]
Элементы синтаксиса:
сообщение –
Обязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки 1024 символа.
атрибуты –
Необязательный. Числовое выражение, с помощью которого можно установить
Ø число и тип отображаемых кнопок;
Ø тип используемого информационного значка;
Ø основную кнопку.
Значение по умолчанию этого параметра равняется 0. Значения констант, определяющих число, тип кнопок и используемых значков, (табл.8. – 9). Для вывода в окне сообщения нескольких кнопок и информационных значков значения констант указываются в виде элементов операции конкатенации. Например:
vbOKCancel + vbExclamation
заголовок -
Необязательный. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, то в строку заголовка помещается имя приложения (рис.1).
Наличие запятых, соответствующих отсутствующим не последним аргументам, является обязательным.
Таблица 8 | |||
Значения параметра Buttons процедуры и функции MsgBox, определяющие отображаемые кнопки в окне сообщения | |||
Константа | Значение | Отображаемые кнопки | |
vbOKOnly | OK | ||
vbOKCancel | OK, Отмена | ||
vbAbortReplyIgnore | Стоп, Повтор, Пропустить | ||
vbYesNoCancel | Да, Нет, Отмена | ||
vbYesNo | Да, Нет | ||
vbReplyCancel | Повтор, Отмена | ||
Таблица 9 | |||
Значения параметра Buttons процедуры и функции MsgBox, определяющие отображаемые информационные значки в окне сообщения | |||
Константа | Значение | Значок сообщения | |
vbCritical | |||
vbQuestion | |||
vbExclamation | |||
vbInformation | |||
Параметры атрибуты и заголовок могут отсутствовать. Однако если в процедуре используется параметр заголовок, то перед ним необходимо указать два разделительных символа “,” (запятая).
Пример 2.1. Вывод простого информационного сообщения.
Процедура Pr_1:
Sub Pr2_1()
' Простое информационное сообщение
MsgBox "Привет!!!"
End Sub
Результатом работы данной процедуры является информационное сообщение, выведенное в виде диалогового окна (рис.2.1.). Поскольку в процедуре MsgBox отсутствуют параметры атрибуты и заголовок, то в диалоговом окне выведена только одна обязательная кнопка OK, которая используется для закрытия окна, и в заголовке окна выведено имя приложения – Microsoft Excel.
Для ввода в строке заголовка окна сообщения личного заголовка (например, такого, как на рисунке 2), необходимо изменить процедуру MsgBox:
MsgBox “Привет!!!”,, “Пример”
Усложним выводимое информационное сообщение. На рис.2.2 б) показан результат вывода строковой константы “ Привет!!! ” и значения строковой переменной Name. Для их вывода в качестве единого информационного сообщения использована операция конкатенации (сцепления). Данный вывод реализован с помощью следующей процедуры.
Sub Pr2_1_б()
' Простое информационное сообщение
' с выводом заголовка
Dim Name As String
Name = "Анна"
MsgBox "Привет!!!" & Name,, "Пример"
End Sub
Для вывода сообщения в нескольких строчках используется стандартная функция Сhr(). Онапозволяет получать символы, генерируемые при нажатии различных клавиш. Например, Chr(9) – соответствует нажатию клавиши Tab, Chr(13) – клавиши Enter.
Поскольку символы, используемые для начала новой строки являются очень важными при форматировании сообщений и других строковых данных, которыми манипулирует VBA-процедуры, VBA имеет несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr():
Ø vbCr – символ возврата каретки, эквивалент выражения Chr(13);
Ø vbTab – символ табуляции, эквивалент выражению Сhr(9). Символы табуляции включают в строки для выравнивания данных в столбцах.
На рис.2.2 в) приведены результаты работы процедуры Pr2_1_в().
Sub Pr2_1_в()
' Простое информационное сообщение с выводом заголовка
Dim Name As String
Name = "Анна"
MsgBox "Привет!!! " & Chr(13) & Name,, "Пример"
End Sub
Пример 2.2. Вывод информационного сообщения совместно с информационным значком в окне сообщения.
Процедура Pr2_2 осуществляет вывод диалогового окна, представленного на рис.2.3.
Sub Pr2_2()
' Вывод сообщения в сочетании с
' предупреждающим информационным значком
MsgBox "Процент выполнения плана выпуска продукции -" & _
vbCr & "незначительный", vbExclamation, _
"Пример"
End Sub
Для вывода информационного значка (Предупреждение) используется в качестве параметра атрибуты встроенная константа vbExclamation (см. табл.9).
Пример 2.3. Вывод диалогового окна с кнопками ОК (основная), Отмена и со значком (Предупреждающий запрос).
Данное окно (рис.2.4) можно вывести с помощью следующей процедуры
Sub Pr2_3()
' Вывод сообщения с двумя кнопками ОК и Отмена
'в сочетании с предупреждающим информационным значком.
' Кнопка ОК является основной
MsgBox "Процент выполнения плана выпуска продукции -" & _
Chr(13) & " незначительный", vbOKCancel + _
vbQuestion + vbDefaultButton1, "Пример"
End Sub
2.2. ОКНО ВВОДА. Стандартная функция InputBox()
Ввод – это процесс переноса информации с внешнего носителя (клавиатура, файл) в оперативную память компьютера.
Программная поддержка окна ввода обеспечивается функцией InputBox(), которая
Ø Выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки: ОК и Cancel (см. рис.2.5);
Ø Устанавливает режим ожидания ввода текста пользователем и нажатия кнопки;
Ø Возвращает значение типа String по нажатию кнопки ОК, содержащее текст, введенный в поле ввода;
Ø Возвращает пустую строку (значение Empty) при нажатии кнопки Cancel.
Сокращенный синтаксис:
InputBox (сообщение [, заголовок] [, умолчание])
Элементы синтаксиса:
сообщение –
Обязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Может содержать несколько строк. Максимальная длина строки 1024 символа.
заголовок -
Необязательный. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, то в строку заголовка помещается имя приложения.
умолчание –
Необязательный. Строковое выражение, отображаемое в поле ввода. Используется по умолчанию, если пользователь не введет другую строку. Если параметр опущен, то поле ввода изображается пустым.
Наличие запятых, соответствующих отсутствующим не последним аргументам, является обязательным.
Например, с помощью инструкции
x = InputBox("Введите значение х", "Пример 3.5","5")
с помощью окна ввода (рис.2.5) осуществляется ввод некоторого значения с клавиатуры. Затем введенное значение преобразуется в соответствии с типом переменной x.
При вводе вещественных чисел используется знак десятичная запятая (“,”). Например, как на рис.2.6.
2.3. Ввод/вывод данных с/на рабочий лист Excel
Для организации ввода/вывода данных непосредственно с/на рабочий лист приложения MS Excelиспользуется объект Range (Диапазон ячеек) или свойство Cells (Ячейка) объекта Worksheet (Рабочий лист). С их помощью можно работать с любой ячейкой рабочего листа Excel.
Используя объект Cells, можно содержимое ячейки рабочего листа присваивать в качестве значения переменной и наоборот, значение выражения выводить в любой ячейке.
Например,
Ø x=Cells(5,3).Value
или
x = Range("C5").Value
Переменной x присваивается значение свойства Value ячейки С5.
Ø x = Cells(1+i, 1+j).Value
Переменной x присваивается значение ячейки, номер строки и столбца которой определяется значениями выражения 1+i и 1+j соответственно.
Ø Cells(8,4).Value =x+2*y
В ячейке D8 выводится значение выражения x+2y.
Ø p = InputBox("Введи номер строки")
q = InputBox("Введи номер столбца")
Cells(p,q).Value = a + Range("A1").Value
В ячейку рабочего листа, расположенную в p строке и q столбце выводится значение выражения a + Range("A1").Value. Номера строки и столбца вводятся с клавиатуры.
Пример 2.4. Вычислить значение функции . Ввод/вывод данных осуществить с/на рабочий лист.
Фрагмент рабочего листа с исходными данными представлен на рис.2.7 а). Расчеты получены с помощью процедуры Pr2_4() и выведены на тот же рабочий лист (рис.2.7 б)).
Sub Pr2_4 ()
Dim a As Byte, b As Byte, x As Integer, y As Single
a = Cells (2, 3)
b = Cells (3, 3)
x = Cells (4, 3)
y = (x + 3) ^ 2 + (2 * a - 3 * b) / (x ^ 2 - 2.8)
Cells(6, 1) = "Значение функции:"
Cells (7, 3) = y
End Sub
Дата публикования: 2014-10-19; Прочитано: 1549 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!