Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel debug print

VBA-Урок 2. Отладчик (Debugger)

Иструмент в среде VBA для отладки кода программ. Уметь работать с дебагером жизненно важно каждому, кто пишет на VBA . Он нужен для того, чтобы проверить как работает ваш код, и чтобы найти и исправить в нем ошибки.

Откройте Visual Basic Editor (Alt + F11) . Создайте в нем модуль и пропишите следующий код:

Нажмите Ctrl + G, при этом внизу появится окно Immediate . В этом окне можно в ходе работы макроса изменять значения переменных, выполнять различный код VBA, не написан в модуле ранее.

Если стать курсором внутрь кода модуля и нажать F5, он выполнится полностью. Если нажать F8 — исполнится только одна строка кода. Нажатие F8 выполнит следующую строку кода и т.д. можно выполнить пошагово весь код. С помощью кнопки F9 можно создать точку остановки. Если потом вы запустите код с помощью кнопки F5, код будет выполнен до указанной строки и затем приостановится. Далее его можно будет продлить с помощью кнопок F5 или F8, описанных ранее.

Если внимательно рассмотреть код, вы увидите, что в переменные A, B, C, D присваиваются числа. Строки Debug.Print «текст» печатают указанный нами текст в открытое ранее окно Immediate , чтобы видеть, что происходит с переменной. Str (A) превращает число в текстовое значение. А Trim () убирает с него справа и слева пробелы. Оператор Round (С) округляет значения по правилам арифметики до целого числа (поэтому результат вычислений мы присваиваем в переменную целого типа Long , значит он должен быть целым). В конце кода мы специально создали ложную ситуацию, чтобы потренироваться использовать дебагер.

Станьте внутрь кода и нажмите F8 четыре раза. Желтым будет отмечено строку, который будет выполнен следующим. Наведите курсор на различные переменные. При этом появится всплывающее окошко, в котором увидите значение. Переменные, которым еще не были присвоены значения равны нулю.
Нажмите еще раз F8. В окне Immediate появится строка:
А = 10
Теперь мы можем изменить значение переменной A сразу в окне Immediate (например, изменим его на 8) . Для этого в новой строке окна Immediate напишите:
А = 8
и нажмите Enter . Теперь наведите на переменную A курсор и увидите, что его значение равно 8. чтобы увидеть значение, не приводя курсор, можно заставить его появиться в окне Immediate. Делается это так, введите в пустой строке окна Immediate:
?A
и нажмите Enter. Знак в окне Immediate означает то же самое, что и Debug.Print в коде. Просто так удобнее и короче писать. Сразу вы увидите число — результат вашего запроса.

Станьте курсором на последнюю строку кода (C = Round (C /D)) и нажмите F9. Появится точка остановки. Той же кнопкой ее можно убрать, но мы ее убирать пока не будем. Нажмите F5, программа выполнит все строки и остановится на последней. В окне Immediate появятся, сообщение о присвоении значений переменным. Мы добрались до последней строки кода. Он должен вызвать ошибку, так как содержит деления на ноль. Нажмите F8 и убедитесь в этом. В появившемся окне нажмите Debug. Если вы нажмете End, выполнение программы остановится, а мы хотим довести ее до конца.

Исправить ситуацию можно, изменив значение переменной D. Сейчас она равна нулю. В окне Immediate введите в пустой строке текст:
D = 2
и нажмите Enter . Теперь последней строкой кода мы делим не на ноль, а на 2, таким образом избегая ошибки. Нажмите F5 и программа завершит свою работу без ошибок.

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

VBA Debug Print

Excel VBA Debug.Print

Debug Print is one of the useful tool presented in the VBA editor to figure out how a program is working and it helps to analyze the changes in the values of variables created in the VBA program. It shows the output of the immediate window when we run the program without any bugs.

Debug.print offers the two main benefits over the use of Msgbox to display the output of the code. It eliminates the need for clicking the OK button every time and displays the log of returned output values to the immediate windows. It saves a lot of time of users. The present article explains the use of excel VBA Debug Print with many examples and explaining how to use it covering the following things.

What is VBA Debug Print?

Debug is an object in VBA and used with the two methods called Assert and Print. The print is helpful in display message and asserts in helpful in the evaluation of the conditions. In VBA, debug.print statement is used in any place of the coding program to show the values of a variable or messages in the Immediate Window. These do not need any acknowledgment or confirmation and do not show any effect on the code developed. It is safe and best to use in the code in the situation to facilitating access to many users. These are just helpful in testing or evaluation of the code to confirm that it is working properly or not. Printing the variables, strings, numbers, array, values in excel sheets, and empty and active sheets.

How to Use Excel VBA Debug Print?

VBA debug.print is the statement helpful in displaying more number of variables at a time in the immediate window. It is the best and alternative approach to show the output.

Debug.print count, sum, average, standard deviation

As shown in the example, all the variables are separated with commas. This statement is able to transfer the output to the immediate window even in the case of a window is not opened. It does not stop running the code as in Msgbox. This flexibility supports continuous monitoring of the changes in the output with respect to changes in the code.

Читать еще:  Vba excel выделить строку

The variables count, sum, average, and standard deviation are displayed in the same line with equal space among them. If Immediate Window is not opened, follow the following steps to see the output.

Steps to Open Immediate Window and See the Output

  • Press Ctrl + G or click on the ‘View’ menu in VBA editor.
  • Choose the option ‘Immediate Window’.
  • Place the cursor in the Window and again run the code.
  • Observe the output in the window.

Examples of Excel VBA Debug.Print

The following are the examples to demonstrate the use of debug print in excel VBA.

Example #1 – Displaying the Values of the Variables

First, go to the Developer tab, click on Macros and create a macro to write the code in the VBA and add a name to it.

After adding name click on create. This opens the VBA editor.

Develop a small program as shown in the figure.

Code:

As shown in the screenshot, three dimensions or variables are decreased as X, Y, and Z as an integer, string, and Double respectively. To print these values Debug.print is used and the output will be displayed in the immediate window. Press CTRL+G to see the output as shown in the screenshot.

Run this code using F5 key and press CTRL+G to see the output in Immediate Window.

This program can be simplified by separating the debug.print statements by a comma.

Code:

This debugs statement prints the output in the same line as shown in the screenshot.

Example #2 – Debug print to File

This example illustrates the use of VBA debug print to display output to a file when the length of the text is too high.

The program to print the output on a file is developed as shown in the figure.

Code:

In this program, two variables called S and Num are considered as a string and integer respectively. The open statement is used to create a text file with the name test. A string called “Hello World” is declared into the variable S.

When you run the VBA code manually or using F5 key then, the output is written into the immediate window and file at a time is shown in folder.

The output to file is shown in the below-mentioned figure.

Printing output to file is beneficial when long text is presented.

Example #3 – Displaying the Factorial of a Number in the Immediate Window

This example illustrates the use of the debug.print statement to show factorial of a number.

Code:

To determine the factorial, three variables are considered including the count, number, and fact. For loop is taken to repeat the multiplication of fact value with count to determine factorial of the number.

Here, debug.print statement is used outside “for” loop to display the value after completion of the loop. The output is determined as.

If we use debug.print statement in inside “for” loop, the fact-value is displayed for every recurring time as shown in the figure.

Code:

Run the code by pressing F5 key and see the output in the immediate window. In this situation, we should consider the last value as the factorial of the given number.

Example #4 – Printing the Full name of the Active Workbook

This example explains how to print the current workbook name into the immediate window

The program is developed as shown in the figure.

Code:

Here ‘count’ is the variable taken to count the number of active workbooks and to display the full name of the active workbook. The full name and number of active workbooks are displayed as shown in the figure.

How to dou

Программирование макросов на VBA в Excel

Table of Contents:

У вас могут возникнуть проблемы с кодом VBA, но как вы находите проблему? Иногда вашему VBA-коду может потребоваться некоторая отладка. Продолжайте читать, чтобы обнаружить четыре наиболее распространенных метода для отладки кода Excel VBA:

Вставка функций MsgBox в разных местах вашего кода

Вставка отладки. Операции печати

Использование встроенных средств отладки Excel

Изучение вашего кода

Возможно, самая простая методика отладки просто внимательно изучает ваш код, чтобы увидеть, можете ли вы найти проблему. Этот метод, конечно, требует знаний и опыта. Другими словами, вы должны знать, что делаете. Если вам повезет, ошибка выпрыгивает прямо, и вы ударяете по лбу и говорите: «О, да! «Когда боль на лбу уменьшается, вы можете решить проблему.

Обратите внимание на использование слов: «Если вам повезет. «Это потому, что часто вы обнаруживаете ошибки, когда работаете над своей программой в течение восьми часов подряд, это 2 a. м. , и вы используете кофеин и силу воли. В такие моменты вам повезло, если вы даже можете увидеть свой код, не говоря уже об обнаружении ошибок. Таким образом, не удивляйтесь, если просто изучить ваш код недостаточно, чтобы заставить вас найти и удалить все ошибки, которые он содержит.

Использование функции MsgBox

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

Когда вы выполняете подпрограмму, функция MsgBox отображает значение CellCount.

Часто полезно отображать значения двух или более переменных в окне сообщения. Следующий оператор отображает текущее значение двух переменных: LoopIndex (1) и CellCount (72), разделенных пробелом.

Обратите внимание, что две переменные объединены с оператором конкатенации (&) и вставляют пробельный символ между ними. В противном случае окно сообщения объединяет два значения вместе, делая их похожими на одно значение. Вы также можете использовать встроенную константу vbNewLine вместо символа пробела. vbNewLine вставляет разрыв строки, который отображает текст в новой строке. Следующий оператор отображает три переменные, каждая в отдельной строке:

Читать еще:  Excel vba шрифт

Использование окна сообщения для отображения значения трех переменных.

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

Если ваше окно сообщения показывает что-то неожиданное, нажмите Ctrl + Break, и вы увидите диалоговое окно с сообщением о том, что выполнение кода было прервано, у вас есть четыре варианта:

Нажмите Продолжить. Код продолжает выполняться.

Нажмите кнопку «Конец». Выполнение прекращается.

Нажмите кнопку «Отладка». VBE переходит в режим отладки.

Нажмите кнопку «Справка». Экран справки сообщает, что вы нажали Ctrl + Break. Другими словами, это не очень полезно.

Нажатие Ctrl + Break останавливает выполнение вашего кода и дает вам несколько вариантов.

Если на клавиатуре нет клавиши Break, попробуйте нажать Ctrl + ScrollLock.

Непосредственно используйте функции MsgBox при отладке кода. Просто убедитесь, что вы удалите их после определения и исправления проблемы.

Вставка отладки. Операции печати

В качестве альтернативы использованию функций MsgBox в вашем коде вы можете вставить один или несколько временных отладок. Печатные заявления. Используйте эти инструкции для печати значения одной или нескольких переменных в окне Immediate. Вот пример, который отображает значения трех переменных:

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

Debug. Печать отправляет вывод в окно Immediate, даже если это окно скрыто. Если окно Immediate VBE не отображается, нажмите Ctrl + G (или выберите «Вид»> «Немедленное окно»). Вот некоторые результаты в окне Immediate.

Отладка. Оператор печати отправляет выходные данные в окно Immediate.

В отличие от MsgBox, Debug. Операции с печатью не останавливают ваш код. Поэтому вам нужно следить за окном Immediate, чтобы узнать, что происходит.

После отладки кода обязательно удалите все отладки. Печатные заявления. Даже крупные компании, подобные Microsoft, иногда забывают удалить их Debug. Печатные заявления. В нескольких предыдущих версиях Excel каждый раз, когда надстройка Analysis ToolPak была открыта, вы увидите несколько странных сообщений в окне Immediate. Эта проблема была окончательно исправлена ​​в Excel 2007.

Использование отладчика VBA

Дизайнеры Excel глубоко знакомы с концепцией ошибок. Следовательно, Excel включает в себя набор средств отладки, которые могут помочь вам устранить проблемы в коде VBA.

Vba excel debug print

Execute commands immediately.

Evaluate expressions immediately.

This is a very useful way to pause code execution when the unexpected happens.
When a command is typed and Enter is pressed — the command is executed immediately.
To execute the command again click anywhere in the line and press Enter again.

You cannot enter block of code in the Immediate window since it only executes a line at a time after you press Enter.
If you are executing multiple statements in the Immediate window you do not have to declare your variables. Usign the «dim» keyword will generate an error.
You can use Debug.Print statements anywhere in your code to display variable values in the Immediate window. Very useful for seperating your code inot sections. Debug.Print «End of Section 3».
The Immediate window will not be oped by default if values are written to it, you should open it manually (View > Immediate Window) before execution starts.
There is currrently no way to clear the Immediate widnow programmatically.

The Local window does not allow you to change the values of your variables, just to display them.
It is even possible to change the contents of variables at run-time.
There are two ways to print to the immediate window, either by including Debug.Print statements in the actual code or by entering print statements directly.

Note In break mode, a statement in the Immediate window is executed in the context or scope that is displayed in the Procedure box. For example, if you type Print variablename, your output is the value of a local variable. This is the same as if the Print method had occurred in the procedure you were executing when the program halted.

Displaying Messages

use the immediate window to test a statement

Executing Commands

You can also execute commands or procedures directly.
Copy and paste the code from the Immediate window into the Code window but does not allow you to save code in the Immediate window.
Type or paste a line of code and press ENTER to run it.

Evaluate Expressions Immediately

To evaluate an expression in the Immediate Window, precede your expression with a question mark (?). This is a short-cut for «Print».
Print or ?

This window can perform two main tasks:

Useful Information

Floating point numbers are generally displayed in the immediate window to at most eight places beyond the decimal point even when sixteen places exist.
The immediate window contains the last 200 outputs implemented by Debug.Print

Important

In the immediate window it is also possible to assign values to variables or properties or to start macros by giving their name.
In the immediate window you can introduce new variables without any previous declaration (even when Option Explicit is not declared)
You can execute lines of code directly into the Immediate window.
You can execute multiple lines of code (including loops).
You can include vbCrLf to make long text strings more readable.

End Sub. РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций

РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций.

В окне Immediate не производится перенос текста на следующую строку, поэтому объем выводимой информации по возможности следует сократить. Удалять операцииDebug.Print из кода нет необходимо­сти, поскольку пользователь никогда не увидит окно Immediate. Однако, если количество операторов окажется слишком большим, это может несколько повлиять на производительность.

Читать еще:  Excel vba workbooks open

МетодDebug.Assert приостанавливает выполнение отдельной строки кода в зависимости от поставлен­ного условия. Например, если оператор кода считывает Debug.Assert False, код приостанавливает выпол­нение данной строки. Это позволяет выполнять код по шагам и отладить ошибки.

Никогда не используйте в коде зарезервированное словоStop. Следует учитывать, что, если оставить это ключевое слово, выполнение кода остановится при запуске приложения пользователем. Рекомендуется всегда использовать Debug.Assert False, поскольку данный оператор всегда удаляется компилятором.

Использование окна отладки

Чтобы открыть окно Immediate, необходимо запустить редактор Visual Basic и выбрать в меню коман­ду View | Immediate Window (Вид | Окно отладки) или нажать клавиши Ctrl+G. Окно отладки можно использовать для оценки и установки переменных, запуска функций и подпрограмм, а также для выво­да результатов выраженияDebug.Print.

Для оценки переменных в окне Immediate необходимо ввести знак вопроса с именем переменной, например, ? strName. Следует также помнить, что значение переменной можно определить, задержав курсор мыши над переменной в режиме прерывания.

Изменение значения переменной

Для изменения значения переменной в окнеImmediate необходимо ввести имя переменной со знакомравенства и новым значением, например,inti = 10.

Оценка встроенных функций

Для оценки встроенных функций в окне Immediate необходимо ввести знак вопроса и имя встроен­ной функции, например, ? Now.

Выполнение пользовательских функций

Для запуска пользовательских функций в окне Immediate необходимо ввести знак вопроса, имя фун­кции и соответствующие параметры, например, ? MyFunction.

Выполнение пользовательских подпрограмм

Для выполнения пользовательских подпрограмм в окне Immediate необходимо ввести имя подпрограммы и соответствующие параметры, например,MySubProcedure. Перед именем подпрограммы знак вопроса не ставится.

При запуске подпрограммы или функции в окне Immediate необходимо ввести имя подпрограммы или функции (знак вопроса перед именем подпрограммы не используется). Если подпрограмма или функция находится в модуле фор­мы, перед именем процедуры следует ввести имя формы (например,frmTest. MySubProcedure).

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

Выполнение операторов в окне Immediate

Для выполнения оператора кода в окне отладки необходимо поместить курсор где-нибудь в операторе. Курсор не обязательно должен находиться в начале или в конце оператора кода.

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

Перемещение в окне отладки

Для передвижения курсора используются мышь и клавиши со стрелками. С помощью клавиши Home можно передвинуть курсор к началу текущей строки кода, а с помощью клавиши End — к концу стро­ки.

Клавиши Page Up и Page Down позволяют переместиться на страницу вверх и вниз соответственно. Для установки курсора в начало окна Immediate необходимо нажать клавиши Ctrl+Home. Для перехо­да в конец окна отладки используется комбинация клавиш Ctrl+End.

Удаление кода в окне отладки

Для быстрого выделения всего кода в окне отладки в целях последующего удаления используется комбинация клавиш Shift+Ctrl+Home, если курсор находится в конце кода в окне Immediate. Весь код будет выделен, и можно нажать клавишу Delete для его удаления.

Если курсор находится в начале кода в окне Immediate, необходимо использоватькомбинацию кла­виш Shift+Ctrl+End для выделения всего кода. Затем можно нажать клавишу Delete.

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

Прерывание останавливает выполнение кода. Для установки точки прерывания необходимо поместить курсор на оператор и в меню редактора Visual Basic выбрать команду Run | Toggle Breakpoint (Выполнить | Переключить прерывания) или нажать клавишу F9. Следует помнить, что нельзя установить прерывание на пустой строке, строке комментария или строке кода, содержащей операторDim. Еще один способ установки прерывания — щел­кнуть на сером левом поле окна кода рядом с соответствующей строкой кода. При этом на левой границе появится большая красная точка, которая указывает на установленную точку прерывания.

При запуске программы выполнение приостанавливается на том операторе, где установлено прерывание (рис. 7). Автома­тически открывается модуль кода, и опера­тор кода будет выделен желтым цветом. Можно шаг за шагом проходить по коду, просматривать или менять значения пере­менных и т.п.

РИСУНОК 7. Выполнение кода приостановлено на точке прерывания

Для удаления точки прерывания необхо­димо в меню выбрать команду Run | Clear All Breakpoints (Выполнить | Убрать преры­вания) илинажать клавиши Ctrl+Shift+F9.

Выполнение кода в пошаговом режиме

Когда выполнение кода приостанавливается из-за прерывания, выражение кода, выделенное желтым цветом, не выполняется. Продолжить выполнение кода можно несколькими способами.

Для выполнения одного оператора кода одновременно необходимо в меню редактора Visual Basic выбрать команду Debug | Step Into (Отладка | Построчно) или нажать клавишу F8. Построчное выполне­ние кода — самый эффективный способ наблюдения за выполнением программы и значениями переменных в коде.

Некоторые разработчики предпочитают пользоваться панелью инструментов Debug. Чтобы открыть панель инструмен­тов, необходимо в меню выбрать команду View | Toolbars | Debug (Вид | Панели инструментов | Отладка). Л

Иногда одна процедура вызывает другие процедуры. Вызываемая процедура может быть абсолютно надежной (иными словами, полностью протестированной и свободной от ошибок). Для выполнения вызванной процедуры целиком, без пошагового перехода от строки к строке, необходимо в меню выб­рать команду Debug | Step Over (Отладка | Выполнение блока) Shift+FS.

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

Предположим, в пошаговом режиме выполняется процедура, вызывающая другую процедуру. Находясь в вызванной процедуре, можно быстро закончить выполнение оставшегося кода и возвратиться в исход­ную процедуру. Для этого в меню необходимо выбрать пункты Debug | Step Out (Отладка | Выход из блока) или нажать клавиши Ctrl+Shift+F8. Такая опция зачастую бывает достаточно полезной.

Ссылка на основную публикацию
Adblock
detector