Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EPP_VBA_Gornostay_171214.docx
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
546 Кб
Скачать
☆

Отладка программ в редакторе vba

Цель работы: изучить работу с окнами Immediate и Locals при отладке программ в редакторе VBA.

Задание 1 Работа с окном Immediate

  1. Создайте в Excel новую рабочую книгу и сохраните ее с именем Debug1.xlsm.

  2. Войдите в редактор VBA, вставьте в окно редактора новую форму (команда Insert>UserForm), разместите на форме элементы управления Label, TextBox и CommandButton. Оформите внешний вид формы, как показано на рис. 4.1.

Рис. 4.1 Внешний вид формы Системы счисления

  1. В окне Properties в поле Name для элементов TextBox и CommandButton введите имя в соответствии с таблицей 4.1.

  2. Двойным щелчком по кнопке ОК откройте окно кода и введите между строчками Private Sub cmd_Ok_Click() и End Sub следующий код:

Dim num_P, num_Q, num_10, num_S

num_P = Val(txt_P)

num_Q = Val(txt_Q)

For i = 1 To Len(txt_A)

num_10 = num_10 + Val(Mid(txt_A, i, 1)) * num_P ^ (Len(txt_A) - i)

‘ Debug.Print ("num_10=" & num_10)

Next i

txt_B = ""

While num_10 <> 0

num_S = num_10 Mod num_Q

‘ Debug.Print ("num_S" & num_S)

txt_B = Mid(Str(num_S), 2, 1) + txt_B

‘ Debug.Print ("txt_B=" & txt_B)

num_10 = num_10 \ num_Q

Wend

Таблица 4.1 Имена элементов на форме Системы счисления

Элемент

Наименование

Имя

Форма

Системы счисления

UserForm1

Текстовое поле

Из системы P

txt_P

Текстовое поле

Число для перевода

txt_A

Текстовое поле

В систему Q

txt _Q

Текстовое поле

Результат

txt_B

Кнопка

OK

cmd_OK

Кнопка

Очистка

cmd_Clear

Кнопка

Exit

cmd_Exitr

  1. Двойным щелчком по кнопке Exit откройте окно кода и введите между строчками Private Sub cmd_Exit_Click() и End Sub следующий код:

UserForm1.Hide

  1. Двойным щелчком по кнопке Очистка откройте окно кода и введите между строчками Private Sub cmd_Clear_Click() и End Sub следующий код:

txt_A = " "

txt_B = " "

txt_P = " "

txt_Q = " "

  1. Запустите программу на выполнение, введите исходные данные в первые три текстовых поля и нажмите ОК. При отсутствии ошибок в программе в текстовом поле Результат будет выведен результат перевода введенного числа в системе с основанием P в систему с основанием Q.

  2. Удалите символ комментария в строках процедуры cmd_Ok_Click, содержащих оператор Debug.Print для его исполнения в ходе выполнения программы. Этот оператор будет выводить текущие значения переменных num_10, num_S и текстового поля txt_B в окно Immediate.

  3. Откройте окно Immediate (<Ctrl+G>) и проанализируйте значения, которые контролируемые величины принимали в ходе выполнения программы.

  4. Оставьте окно Immediate видимым на экране и запустите программу командой Step Into в меню Debbug.

  5. Введите исходные данные в текстовые поля формы и последовательным нажатием клавиши <F8> выполните программу в пошаговом режиме, наблюдая в окне Immediate за изменением значений выводимых оператором Debug.Print величин.

Задание 2 Работа с окном Locals

  1. Откройте окно Locals командой Locals Window в меню Viev.

  2. Запустите программу в пошаговом режиме и проследите значения переменных num_P, num_Q, num_10, num_S на каждом шаге выполнения программы в окне Locals. Вид окна Locals на первом шаге выполнения цикла For i = 1 …Next I показан рис. 4.2.

  3. Просмотрите и попробуйте изменить в окне Locals свойства кнопок и текстовых полей, открыв контейнер специального объекта ME и контейнер соответствующего элемента управления. Вид окна Locals при открытых свойствах формы и кнопки cmd_Clear показан на рис. 4.3.

  4. Сохраните книгу Debug1.xlsm и подготовьте отчет по лабораторной работе.

Задание для самостоятельной работы

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

Рис. 4.2 Вид окна Locals на одном из шагов отладки программы

Рис. 4.3 Вид окна Locals при открытых свойствах формы и кнопки cmd_Clear

Методические материалы

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

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

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

В режим паузы программу можно перевести:

  • сразу запустить программу в режиме пошагового выполнения (меню Debug>Step Into или клавиша <F8>). В этом случае программа будет переходить в режим паузы после выполнения каждого оператора;

  • установить в программе точку останова (breakpoint). Это можно сделать установкой указателя в нужной строке кода и выбором в меню Debug команды Toggle Breakpoint (<F9>). Второй вариант - просто щелкнуть мышкой по рамке слева от строки. Снятие точки останова - сделать все то же самое еще раз;

  • еще одна возможность приостановить выполнение программы - воспользоваться контролируемым выражением в окне Watches.

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

В режим паузы можно:

  • продолжить выполнение программы в пошаговом режиме - команда Debug->Step Into (<F8>);

  • если в строке программы происходит вызов какой-то процедуры, которая уже отлажена, можно без остановок перейти к следующему оператору - Debug>Step Over (<Shift>+<F8>);

  • довести выполнение начатой процедуры до конца - команда Debug>Step Out (Ctrl>+<Shift>+<F8>);

  • исполнить код не пошагово, а участками. Для этого надо щелкнуть правой кнопкой мыши по нужному участку кода и в контекстном меню выбрать Run to Cursor или воспользоваться той же командой в меню Debug (<Ctrl>+<F8>);

  • "перепрыгнуть" через какой-то участок кода, вызывающий ошибку - команда Debug>Set Next Statement (<Ctrl>+<F9>), а затем перетащить желтую отметку по левой границе вниз или вверх;

  • вернуться к месту остановки без долгих розысков - Show Next Statement;

  • продолжить выполнение после остановки - <F5> или воспользоваться командой Continue (она появится вместо команды Run) в меню Run;

  • прекратить выполнение программы командой Reset (<Alt>+<F4>).

В окне Immediate (вызов из меню View или <Ctrl>+<G>) можно просматривать или изменять значения переменных и свойств объектов.

Вывод в окно Immediate значений переменной a можно произвести, вписав в код программы строку Debug.Print a.

Изменение значений перемененных и свойств в окне Immediate производится точно так же, как в коде программы. В окне Immediate можно также вызывать процедуры и функции программы или методы объектов - точно так же, как в коде программы.

Чтобы не печатать в окне Immediate выражения и имена переменных, которые уже есть в коде, можно воспользоваться перетаскиванием участков кода в окно Immediate из окна редактора кода с нажатой клавишей <Ctrl> для копирования.

Окно Watches (Контролируемые выражения) предназначено для контроля за отдельными выражениями и значениями переменных.

Чтобы добавить контролируемое выражение в окно Watches, нужно щелкнуть по нему правой кнопкой мыши и выбрать из контекстного меню команду Add Watch.

Для редактирования контролируемого выражения в окне Watches используется команда Edit Watch, для удаления - Delete Watch, для добавления нового - Add Watch.

Вид окна Watches с введенными двумя контролируемыми выражениями приведен на рис. 4.4.

Ртс. 4.4 Вид окна Watches с добавленными контролируемыми выражениями

Лабораторная работа № 5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]