debug print vba что это

VBA Excel. Окно Immediate (отладка кода, вычисления)

Окно Immediate используется в VBA Excel при написании и отладке процедур для тестирования отдельных строк кода, проверки текущих значений переменных и в качестве калькулятора.

Проверка строк кода в Immediate

Чтобы протестировать выполнение отдельных строк кода VBA Excel в окне Immediate необходимо:

Код в окне Immediate можно вводить с использованием контекстных подсказок и выбором из них объектов, свойств и методов, точно так же, как и непосредственно в модуле VBA. Можно строку кода скопировать из процедуры и вставить в окно Immediate из буфера обмена. При нажатии клавиши Enter курсор может находитmся в любом месте проверяемой строки.

Пример 1
Откройте окно Immediate, вставьте в него строку

и нажмите Enter. В первые пять ячеек первого столбца активного листа Excel будет записана строка «Тестируем окно Immediate». Таким же образом будет выполняться любая тестируемая строка вашего кода VBA.

Проверка значений переменных

Для отображения в окне Immediate значений переменных используется метод Print класса Debug (Debug.Print). Рассмотрим работу этого метода сразу на примере.

Пример 2

Помечаем маркерами строки с ключевой фразой Debug.Print, кликнув по левому полю напротив нужных строк, чтобы в этих местах остановить исполнение кода. Строка с маркером, на котором остановилась программа, будет выполнена после очередного нажатия кнопки Run Macro или клавиши F5.

Результаты выполнения кода смотрите на изображении:

Проверка значений переменных

Если при размещении нескольких элементов после ключевой фразы Debug.Print не указать разделитель, редактор VBA при запуске кода на выполнение автоматически вставит между элементами разделитель «точка с запятой». Сравните с результатом использования в качестве разделителя символа «запятая».

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

Пример 3
Пример изменения значения переменной в окне Immediate во время исполнения кода VBA Excel:

Источник

VBA Debug Print

Excel VBA Debug Print

Отладка печати является одним из самых полезных, но недооцененных инструментов VBA. Отладочная печать может использоваться вместо MsgBox. Это помогает в анализе процесса и вывода в непосредственном окне. Debug Print и MsgBox в VBA работают по тем же принципам.

Они оба показывают значения как сообщение. Но есть некоторые существенные различия и преимущества использования Debug Print по сравнению с MsgBox. Debug Print, показывает нам значение, хранящееся в любой переменной или в самой Debug Print, например, MsgBox. Это также помогает в отладке ошибки после выполнения полного кода. После получения сообщения не нужно нажимать кнопку «ОК», благодаря чему мы можем сэкономить небольшое количество времени и выполнить дополнительный шаг.

Нет правильного синтаксиса Debug Print. Мы можем добавить что угодно и что угодно, чтобы видеть как вывод в непосредственном окне.

Как использовать отладочную печать в Excel VBA?

Ниже приведены различные примеры использования Debug Print в Excel с использованием кода VBA.

Для применения отладочной печати в Excel VBA необходимо выполнить следующие шаги.

Шаг 1: Перейдите в окно VBA, на вкладке меню «Вставка» выберите «Модуль», как показано ниже.

Шаг 2: В недавно открытом модуле напишите подкатегорию VBA Debug Print или вы можете выбрать любое другое имя для этого.

Шаг 3: Теперь напрямую используйте Debug Print, как показано ниже. Как мы уже говорили, в Debug Print нет синтаксиса. Мы можем выбрать все, что мы хотим напечатать.

Шаг 4: Давайте напечатаем любой случайный текст, который мы хотим видеть, и заключаем его в кавычки, чтобы увидеть результат.

Шаг 5: Как мы знаем, вывод Debug Print будет виден только в Immediate Window. Итак, мы будем открывать Immediate Window из строки меню View, как показано ниже.

После этого мы получим пустое окно Immediate, как показано ниже. Это место, где мы увидим весь вывод Debug Print.

Шаг 6: Теперь скомпилируйте код и запустите его, нажав кнопку Play, расположенную под строкой меню. Мы увидим, что печать Debug пропустила вывод в окне Immediate, как показано ниже.

В этом примере мы увидим, как распечатать любое значение, используя Debug print в Excel VBA. Для этого выполните следующие шаги:

Шаг 1: В модуле напишите подкатегорию под любым именем, как показано ниже.

Шаг 2: Нам понадобится переменная как целое число.

Шаг 3: Присвойте любое значение этому целому числу.

Шаг 4: Теперь мы будем использовать Debug print и назначим переменную, которую мы только что определили напрямую.

Шаг 5: Теперь мы запустим код, нажав клавишу F5. Мы увидим, что значение, хранящееся в переменной A, теперь печатается в окне Immediate.

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

Шаг 6: Объявите еще 2 переменные как Double и Long, где мы попытаемся сохранить десятичное значение и большие значения в 6 цифрах.

Шаг 7: Теперь присвойте некоторые значения каждой определенной переменной в соответствии с их характером типов данных. Присвойте целое число переменной A, десятичное значение переменной B и любые 6 цифр или большее число переменной C.

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

Шаг 9: Теперь запустите полный код, нажав клавишу F5 или нажав кнопку воспроизведения. Мы увидим, что за один раз все значения сохраняются в переменных A, B и C, которые можно увидеть в непосредственном окне.

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

Шаг 1: Запишите подкатегорию VBA Debug Print, как показано ниже.

Шаг 2: Здесь нам нужно попробовать добавить 2 переменные. Для этого определим 2 переменные, в которые мы будем вводить входные числа, и 3- ю переменную, в которой мы будем хранить выходные данные, полученные от сложения первых двух переменных. Давайте рассмотрим эти переменные как A, B и C соответственно.

Читайте также:  при какой температуре разрушается ботулизм

Шаг 3: Теперь присвойте любые числовые значения переменным A и B. Здесь мы рассмотрели их как 10 и 20 соответственно.

Шаг 4: Для целей добавления мы выполним математическую функцию, в которую добавим первую и вторую переменные A и B и получим вывод в переменной C.

Шаг 5: Теперь мы будем использовать Debug print для печати вывода сложения переменных A и B под переменной C. Таким образом, только переменная C будет назначена в Debug Print для просмотра вывода сложения.

Шаг 6: Теперь запустите код, нажав клавишу F5 или нажав кнопку воспроизведения. Мы получим вывод сложения значений, хранящихся в переменных A и B под C, в ближайшем окне.

Таким образом, мы можем выполнить любой тип математического процесса и получить вывод в непосредственном окне вместо использования MsgBox, который также прост, но не так хорош, как Debug Print.

Плюсы Excel VBA Отладка Распечатать

То, что нужно запомнить

Рекомендуемые статьи

Источник

Метод Print

Синтаксис

объект. Print [ outputlist ]

Синтаксис метода Print имеет следующий описатель объекта и часть:

Part Описание
object Необязательный параметр. Выражение объекта, которое оценивает объект в списке Applies To.
outputlist Необязательно указывать. Выражение или список выражений, которые необходимо напечатать. Если этот элемент опущен, печатается пустая строка.

Аргумент outputlist имеет следующий синтаксис и части:

Part Описание
Spc(n) Необязательное. Используется для вставки пробелов в выходные данные. В этом случае n — количество пробелов, которые необходимо вставить.
Tab(n) Необязательное. Используется для установки точки вставки в столбец с абсолютным номером; в этом случае n — номер столбца. Используйте Tab без аргумента, чтобы установить точку вставки в начало следующей зоны печати.
expression Необязательное. Числовое или строковое выражение, которое необходимо напечатать.
charpos Необязательное. Указывает точку вставки следующего символа. Используйте точку с запятой (;), чтобы установить точку вставки сразу после последнего отображенного символа. Используйте Вкладку(n) для позиционирования точки вставки на абсолютном номере столбца. Используйте Tab без аргумента, чтобы добавить точку вставки в начало следующей зоны печати. Если аргумент charpos не указан, следующий символ печатается на следующей строке.

Примечания

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

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

Данные о дате написаны с помощью стандартного формата коротких дат, распознаемой системой. Когда компонент даты или времени отсутствует или равен нулю, записываются только предоставленные данные.

Ничего не записывается, если данные outputlist имеют значение Empty. Однако, если данные списка выходных данных Null— Null это выходные данные. В этом случае ключевое слово Null переводится на соответствующий язык.

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

Поскольку метод Print обычно печатается символами с пропорциональными интервалами, взаимосвязь между количеством напечатанных символов и количеством занятых ими столбцов фиксированной ширины отсутствует. Например, широкая буква, такая как «W», занимает больше одного столбца фиксированной ширины, а узкая, такая как «i», — меньше. Для использования символов, ширина которых больше среднего значения, табличные столбцы должны быть расположены на достаточном расстоянии друг от друга. Кроме того, вы можете распечатать с помощью шрифта с фиксированной высотой (например, Courier), чтобы убедиться, что каждый символ использует только один столбец.

Пример

С помощью метода Print в этом примере отображается значение переменной MyVar в немедленном окне. Обратите внимание, что метод Print применим только к тем объектам, которые отображают текст.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Debug Print

Excel VBA Debug.Print

Debug Print is one of the useful tools presented in the VBA editor VBA Editor The Visual Basic for Applications Editor is a scripting interface. These scripts are primarily responsible for the creation and execution of macros in Microsoft software. read more 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 prompt 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 shows the log of returned output values to the immediate windows. It saves a lot of time for users. The present article explains the use of excel Use Of Excel In today’s corporate working and data management process, Microsoft Excel is a powerful tool.» Every employee is required to have this expertise. The primary uses of Excel are as follows: Data Analysis and Interpretation, Data Organizing and Restructuring, Data Filtering, Goal Seek Analysis, Interactive Charts and Graphs. read more VBA Debug Print with many examples and explaining how to use it covering the following things.

You are free to use this image on your website, templates etc, Please provide us with an attribution link How to Provide Attribution? Article Link to be Hyperlinked
For eg:
Source: VBA Debug Print (wallstreetmojo.com)

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 messages and asserts in useful in the evaluation of the conditions. In VBA, debug. The 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 display 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 correctly or not. It prints 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 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 can transfer the output to the immediate window even if 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 concerning changes in the code.

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

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

After adding a 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 prompt window. Press CTRL+G to see the result, as shown in the screenshot.

Run this code using the 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 string and integer. The open statement is used to create a text file with the name test. A column called “Hello World” is declared into the variable S.

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—a print statement to show the 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. The print statement is used outside the “for” loop to display the value after completing the circle. The output is determined.

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

Code:

Run the code by pressing the 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 prompt 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.

The path of the workbook in the drives is accurately displayed by using the VBA debugprint statement.

Источник

Отлов ошибок и отладка кода VBA

Очень часто начинающие работать в VBA сталкиваются с различными ошибками, которые выдает код в момент выполнения. Если не знать как поступить в данном случае – то очень сложно будет исправить код быстро, а то и вообще невозможно будет определить причину ошибки без помощи более «продвинутых» пользователей. Новички зачастую делают правки наугад, что может порождать иные ошибки, а это в свою очередь не только затрудняет поиск первоначальной ошибки, но и может привести к невозможности исправить код вообще. Поэтому в этой статье я решил описать как производить отладку кода и определять ошибки.
Чтобы описанное в статье можно было сразу опробовать в практике советую скачать файл пример:

Пример таблицы и кода (35,5 KiB, 2 562 скачиваний)

Что будет рассмотрено:

Помимо этого в конце статьи можно скачать файл с кодами ошибок VBA и их расшифровками.

Исходные данные
Допустим, имеется простая таблица

И код, который должен пройтись по каждой строке таблицы, перемножить цену (столбец Цена) на количество (столбец Продажи шт), просуммировать перемноженные данные и вывести результирующую сумму в ячейку В17 :

Option Explicit Sub PrimitiveCode() Dim lr As Long, dblSumm As Double, dblIncr As Double ‘цикл от первой строки таблицы до последней For lr = 1 To 14 ‘перемножение Цены на Количество (C*E) dblIncr = Cells(l, 3).Value * Cells(lr, 5).Value ‘прибавление результата к переменной общей суммы dblSumm = dblSumm + dblIncr Next ‘выводим результат в ячейку B17 Cells(17, 2).Value = dblSumm End Sub

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

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

Подробнее об этой ошибке и её причинах можно почитать в статье: Variable not defined или что такое Option Explicit и зачем оно нужно?
Если кратко, то переменной l нет среди объявленных переменных(Dim l As) и мы не можем её использовать. В данном случае это опечатка и там должна быть lr, а не l. Исправляем переменную и код будет выглядеть так:

Sub PrimitiveCode() Dim lr As Long, dblSumm As Double, dblIncr As Double ‘цикл от первой строки таблицы до последней For lr = 1 To 14 ‘перемножение Цены на Количество (C*E) dblIncr = Cells(lr, 3).Value * Cells(lr, 5).Value ‘прибавление результата к переменной общей суммы dblSumm = dblSumm + dblIncr Next ‘выводим результат в ячейку B17 Cells(17, 2).Value = dblSumm End Sub

С виду код теперь выполнен правильно и ошибок вызывать не должен. Однако, если его попытаться выполнить опять получим ошибку – на этот раз ошибку типов данных(Type Mismatch):

В момент появления главное нажать Debug, а не End (если будет желание прочитать про тип ошибки подробнее – можно еще нажать Help, текст будет на английском). VBA подсветит желтым строку, вычисления или операции в которой вызывают ошибку:

Теперь самый важный этап – необходимо определить причину ошибки. С виду все хорошо – одна ячейка перемножается на другую. Без опыта сложно сходу понять, что это ошибка типов данных, хоть VBA прямо об этом говорит(Type Mismatch – в переводе «Несовпадение типов»). Поэтому самое надежное в этом случае – это определить значение каждой составляющей той строки, в которой возникла ошибка. В случае с кодом выше можно воспользоваться двумя методами:

Окна Locals и Watches
Так же для отслеживания значений переменных очень удобно использовать окно Locals и окно Watches.
Окно Locals
Окно Locals отображает все локальные переменные, задействованные в выполняемой в настоящий момент процедуре:

Как видно в этом окне отображается имя переменной, её тип и значение. Все хорошо, но в этом окне отображаются исключительно локальные переменные, объявленные на уровне модуля. Переменных других модулей, объявленные как Public и используемые в текущей процедуре там не отображаются. Подробнее про видимость переменных можно узнать в статье: Что такое переменная и как правильно её объявить?

Окно Watches
Окно Watches представляет большую ценность – в это окно можно просто «перетащить» нужную переменную или объект и в этом окне будут отражены все данные об имени переменной, её типе и текущем значении:

Теперь рассмотрим чуть подробнее как перетаскивать в это окно данные. На примере кода выше:

If lr = 10 Then ‘код End if

Пошаговая отладка кода
После знакомства с отладкой кода при возникновении ошибки работать с пошаговой отладкой будет проще.
Что такое вообще пошаговая отладка?
Это просмотр этапов выполнения кода строка за строкой.

Для чего это может быть нужно?

Как делать пошаговую отладку? Все просто: устанавливаете курсор в любом месте внутри кода и нажимаете клавишу F8 (либо выбрать в меню DegubStep Into). Теперь при каждом нажатии клавиши F8 код будет выполнять одну строку кода за другой в той очередности, в которой они расположены в процедуре. Если внутри процедуры будет вызов второй процедуры или функции – код пошагово выполнит и её и затем вернется в основную процедуру.
Так же хочу привести еще пару сочетаний клавиш, которые удобно применять при пошаговой отладке:

Теперь можно запустить код любым удобным способом (в отладке это как правило делается клавишей F5 или с панели: RunRun Sub/UserForm). Как только код дойдет до указанной точки останова он остановится и строка будет подсвечена желтым. Дальше можно либо продолжить выполнение в пошаговом режиме(нажимая F8), либо(проверив значения нужных переменных и объектов) нажать опять F5 и код продолжит выполняться автоматически, пока не выполнится или не достигнет другой точки останова. Самих же точек останова может быть сколько угодно и расположены они могут быть в любой процедуре или функции.
Следует помнить, что после закрытия файла с кодом точки останова не сохраняются и при следующем открытии книги их необходимо будет установить заново, если это необходимо.

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

Ошибки VBA с описанием (152,0 KiB, 5 000 скачиваний)

Удачи в программировании!

Статья помогла? Поделись ссылкой с друзьями!

Источник

Читайте также:  какой корабль затонул 10 июля
Сказочный портал