- •Лабораторный практикум по информатике для студентов очной формы обучения
- •Часть II. Visual Basic for Applications
- • Иркутский государственный технический университет, 2002
- •664074, Иркутск, ул. Лермонтова, 83
- •Введение
- •Создание интерфейса пользователя
- •Элементы управления
- •2. Основные понятия
- •3. Редактор vba
- •4. Работа с переменными, массивами, константами и со свойствами объектов
- •5. Основные инструкции языка Visual Basic
- •Арифметические операции
- •6. Создание пользовательских форм
- •7. Отладка приложений
- •Р ис. 4. Окно контрольного значения
- •8. Лабораторные работы
- •Vba1. Создание простейшего интерфейса. Калькулятор
- •Vba2. Разветвления
- •Vba3. Переменные, процедуры, функции, циклы, массивы
- •Vba4. Сортировка чисел в столбце по возрастанию или убыванию
- •Vba5. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы
- •Vba6. Создание приложения для вычисления многочленов
- •Vba7. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы и панели инструментов с кнопкой
- •9. Самостоятельные и контрольные задания Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Разработка приложения “Решение системы линейных уравнений”
- •2. Разработка приложения “Статистический анализ данных”
- •Разработка приложения “Решение треугольника”
- •Разработка приложения “Определение площади произвольной фигуры”
- •Разработка приложений “Графические построения в плоскости xoy”
- •Разработка приложения “Вычисление определенного интеграла”
- •Интегрирование по методу прямоугольников
- •Интегрирование по методу трапеций
- •Метод Симпсона (парабол)
- •Решение нелинейных уравнений
- •Определение границ существования корней
- •Отделение корней
- •Уточнение корней
- •8. Решение систем линейных алгебраических уравнений
- •По коэффициентам системы составляют расширенную матрицу
- •По элементам последней строки матрицы (1.2) можно найти значение
- •9. Приближенные методы решения систем алгебраических уравнений
- •10. Интерполяция функций, заданных таблично
- •11. Допольнительные курсовые работы для студентов горно-геологических специальностей
- •1. Вычисление координат замкнутого теодолитного хода
- •2. Разработка приложения “Прямая геодезическая задача”
- •3. Разработка приложения “Обратная геодезическая задача”
- •4. Разработка приложения “Преобразование географических координат в прямоугольные и прямоугольных в географические”
- •Литература к курсовой работе 4.
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 (о них см.ниже). При этом полезно проведение тестов, которые должны учитывать все возможные случаи возникновения ошибок.
Ошибки выполнения могут возникать, например:
при считывании файла с диска, при разрыве соединения с базой данных, с сетевым сервером или страницей Internet,
вследствии ошибок в логике программы, когда происходит деление на нуль и т.д.
В программе следует создать средства перехвата возможной ошибки выполнения, обработать ее и продолжить программу. При этом программа должна анализировать вводимые и вычисляемые данные и делать сообщения на основании этого анализа, а также предоставить возможность ввода других данных. Приведем два примера.
В первом примере перед чтением данных из текстового файла помещена инструкция 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 по мере выполнения программы, так что в окне локальных переменных всегда видны текущие значения.
И нформация в окне локальных переменных представлена в виде разделов, обозначенных значком [+], чтобы развернуть раздел нужно щелкнуть по плюсу. В результате этого можно получить доступ ко всем переменным и приступить к их редактированию, что удобно, например, в таких случаях:
Проверка программы при разных значениях переменной, тестирование.
Предыдущая строка программного кода содержит ошибку, в результате которой переменной присвоено неверное значение. Для продолжения выполнения программы можно исправить значение переменной.
Чтобы изменить значение переменной, щелкните два раза на текущем значении переменной, измените значение и нажмите <Enter>.
Следующее средство отладки - окно контрольного значения, которое показывает значения выражений или переменных, выбранных пользователем (рис. 4.). Как и в окне локальных переменных, в окне контрольного значения можно менять значение выражения прямо во время выполнения программы. Для этого сначала выделите строку с нужным выражением, а затем само выражение. После этого можно вносить изменения в окне контрольного значения, которое можно вызвать по команде Отладка/Контрольное значение.