Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по VBA.doc
Скачиваний:
108
Добавлен:
26.08.2019
Размер:
1.04 Mб
Скачать

6. Создание пользовательских форм

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

Свойства формы

Name

Имя

Caption

Заголовок

BackColor

Цвет фона

BorderStyle

Тип границы

Picture

Рисунок, отображаемый как фон формы

Left и Top

Местоположение верхнего левого угла формы

Height и Width

Высота и ширина формы

StartUpPosition

Положение формы при ее первом отображении. Допустимые значения: Manual - начальное значение не устанавливается, CenterOwner - выравнивание по центру объекта, к которому принадлежит форма, CenterScreen - выравнивание по центру экрана, Windows Default - положение верхнего левого угла экрана.

Методы формы

Show

Показать форму

Hide

Скрыть форму

Move

Изменить положение и размер формы

PrintForm

Печатать изображение формы

События формы

Initilize

Действия выполняемые при отображение формы на экране (например, задание значений по умолчанию для элементов управления размещенных на форме)

Terminate

Действия выполняемые при закрытии формы

Для создание формы надо переключиться в окно редактора и с помощью кнопки на панели инструментов или через пункт меню Вставка/UserForm создать пустую форму. Она появиться в окне Visual Basic. Теперь можно разместить требуемые элементы управления на форме и установить требуемые свойства.

7. Отладка приложений

В этом разделе приведем рекомендации по отладке приложений.

Во-первых, для отладки надо подбирать разнообразные примеры, не ограничиваясь самыми простыми – ведь многие ошибки проявляются только при определенных значениях исходных данных, а иногда даже только при определенных сочетаниях этих значений.

Во-вторых, для просмотра промежуточных и окончательных значений переменных можно на время отладки включать в тексты процедур обращения к процедуре MsgBox, а также выводить значения переменных в виде свойства Caption элемента управления Label (метка – статический текст) или в виде свойства Text элемента управления TextBox (поле с редактируемым текстом). Важную роль играет выбор точек процедуры для вывода значений переменных при отладке. Для выбора таких точек можно рекомендовать рассматривать процедуру состоящей из логически завершенных фрагментов программного кода, формирующих определенные «информационные сцены». Эти-то сцены, характеризующиеся содержимым переменных и массивов, и надо контролировать.

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

  • ошибки синтаксиса, сразу же делающие невозможным выполнение программы,

  • логические ошибки, в результате которых программа делает то, что не запланировано,

  • ошибки выполнения, приводящие к остановке программы.

Строку программного кода, содержащую ошибку синтаксиса, редактор Visual Basic окрашивает красным цветом и в диалоговом окне дает некоторое разъяснение.

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

Ошибки выполнения могут возникать, например:

  1. при считывании файла с диска, при разрыве соединения с базой данных, с сетевым сервером или страницей Internet,

  2. вследствии ошибок в логике программы, когда происходит деление на нуль и т.д.

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

В первом примере перед чтением данных из текстового файла помещена инструкция On Error. Если произойдет ошибка (такого файла нет и т.п.) управление будет автоматически передано на блок инструкций обработки ошибок – он начинается с метки ErrFTXT.

Sub Ftxt (WorkDir As String, FTXTname As String)

‘ При обращении процедуре сообщается рабочий каталог и имя текстового файла

On Error GoTo ErrFTXT

Open WorkDir & "\" & FTXTname For Input As #1

Do Until EOF(1)

Line Input #1, SL

{ Работа с очередной строкой файла FTXT }

Loop

Close (1): Exit Sub

ErrFTXT:

MsgBox Err.Description, , "Файл " & FTXT & “, вероятно, не существует"

Close #1

End Sub

Этот пример дает представление и о работе с входным текстовым файлом. Запись строк в создаваемый текстовый файл аналогична, только файл открывают не для ввода (For Input), а для вывода (For Output), и вместо инструкции Line Input для записи строк используют Print (например, Print #2, SL).

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

Sub Деление_чисел()

Dim u As String, zn As String

Dim x As Single, y As Single, S As Single

u = InputBox("Введите первое число")

x = Val(u)

ввод: u = InputBox("Введите второе число")

y = Val(u)

u = InputBox("Введите знак операции")

zn = u

If y <> 0 Then

S = x / y

MsgBox Str(x) & " / " & Str(y) & " = " & Str(s), , "Деление"

Else

MsgBox "Деление на нуль", , "Деление"

GoTo ввод

End If

End Sub

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

Ключевым моментом в процессе отладки программы является момент перехода процесса выполнения программы в режим паузы. Режим паузыэто временная остановка выполнения программы на некоторой инструкции в программном коде. В этом режиме проверяются текущие значения всех переменных в программе. Например, переходя в режим паузы при вычислении многочлена степени не выше пятой, мы увидим следующее окно редактирования VBA – процедуры (Рис. 3).

Р ис. 3. Точка останова

Кроме того, в режиме паузы можно воспользоваться командой меню в редакторе Visual Basic: Отладка/Шаг с заходом, продолжая при этом выполнение программы в пошаговом режиме, по одной инструкции, и наблюдая за изменениями переменных. Значения переменных можно наблюдать во всплывающих подсказках, если подвести курсор мыши к соответствующей переменной.

В режим паузы можно войти, используя одну из возможностей:

  • щелчок на кнопке Пауза на панели инструментов в редакторе Visual Basic,

  • комбинация клавиш <Ctrl+Break> (в случае, например, зацикливания),

  • во время ошибки выполнения, когда VBA отображает диалоговое окно с описанием ошибки, щелчок по кнопке Отладка переводит программу в режим паузы,

  • назначение точки останова строке программного кода (на рис.3 точка останова установлена щелчком мыши на полях в окне редактирования программного кода).

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

После исправления ошибок точки останова можно удалить также щелчком на полях.

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

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

И нформация в окне локальных переменных представлена в виде разделов, обозначенных значком [+], чтобы развернуть раздел нужно щелкнуть по плюсу. В результате этого можно получить доступ ко всем переменным и приступить к их редактированию, что удобно, например, в таких случаях:

  1. Проверка программы при разных значениях переменной, тестирование.

  2. Предыдущая строка программного кода содержит ошибку, в результате которой переменной присвоено неверное значение. Для продолжения выполнения программы можно исправить значение переменной.

Чтобы изменить значение переменной, щелкните два раза на текущем значении переменной, измените значение и нажмите <Enter>.

Следующее средство отладки - окно контрольного значения, которое показывает значения выражений или переменных, выбранных пользователем (рис. 4.). Как и в окне локальных переменных, в окне контрольного значения можно менять значение выражения прямо во время выполнения программы. Для этого сначала выделите строку с нужным выражением, а затем само выражение. После этого можно вносить изменения в окне контрольного значения, которое можно вызвать по команде Отладка/Контрольное значение.