Окно Immediate используется в VBA Excel при написании и отладке процедур для тестирования отдельных строк кода, проверки текущих значений переменных и в качестве калькулятора.
Отображается на экране окно Immediate сочетанием клавиш Ctrl+G или через меню редактора VBA: View → Immediate Window.
Чтобы протестировать выполнение отдельных строк кода VBA Excel в окне Immediate необходимо:
- ввести строку кода в окне Immediate,
- нажать клавишу Enter.
Код в окне Immediate можно вводить с использованием контекстных подсказок и выбором из них объектов, свойств и методов, точно так же, как и непосредственно в модуле VBA. Можно строку кода скопировать из процедуры и вставить в окно Immediate из буфера обмена. При нажатии клавиши Enter курсор может находиться в любом месте проверяемой строки.
Пример 1
Откройте окно Immediate, вставьте в него строку
Range(«A1:A5») = «Тестируем окно Immediate» |
и нажмите Enter. В первые пять ячеек первого столбца активного листа Excel будет записана строка «Тестируем окно Immediate». Таким же образом будет выполняться любая тестируемая строка вашего кода VBA.
Проверка значений переменных
Для отображения в окне Immediate значений переменных используется метод Print класса Debug (Debug.Print). Рассмотрим работу этого метода сразу на примере.
Пример 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer2() Dim a As Byte, b As Byte, c As Byte a = 15 b = (a + 35) / 5 c = a * b — 50 ‘Каждая переменная в отдельной строке: Debug.Print a Debug.Print b Debug.Print c ‘Все переменные в одной строке ‘с разделителем «точка с запятой»: Debug.Print «a = « & a; «b = « & b; _ «c = « & c ‘с разделителем «запятая»: Debug.Print «a = « & a, «b = « & b, _ «c = « & c End Sub |
Помечаем маркерами строки с методом Debug.Print, кликнув по левому полю напротив нужных строк, чтобы в этих местах остановить исполнение кода. Строка с маркером, на котором остановилась программа, будет выполнена после очередного нажатия кнопки Run Macro или клавиши F5.
Результаты выполнения кода смотрите на изображении:
Проверка значений переменных
Если при размещении нескольких элементов после метода Debug.Print не указать разделитель, редактор VBA при запуске кода на выполнение автоматически вставит между элементами разделитель «точка с запятой». Сравните с результатом использования в качестве разделителя символа «запятая».
При работе с переменными можно изменять их значение непосредственно в окне Immediate. Введите строку с присвоением переменной нового значения и нажмите клавишу Enter. Значение переменной будет перезаписано.
Пример 3
Пример изменения значения переменной в окне Immediate во время исполнения кода VBA Excel:
Sub Primer3() Dim a As Variant a = WorksheetFunction.Pi Debug.Print a ‘Вводим в окне Immediate строку ‘a = «Сейчас число Пи округлим» ‘нажимаем Enter и далее F5 Debug.Print a ‘Вводим в окне Immediate строку ‘a = 3.14 ‘нажимаем Enter и далее F5 Debug.Print a End Sub |
В этом примере переменной a присваивается значение числа Пи. Далее мы непосредственно в окне Immediate дважды меняем значение этой переменной. Маркер остановки исполнения кода ставим на второй и третьей строке Debug.Print a. Результаты смотрите на изображении:
Изменение значения переменной в окне Immediate
Окно Immediate как калькулятор
Чтобы воспользоваться окном Immediate как калькулятором введите в нем ключевое слово «Print» или символ «?», затем вычисляемое выражение и нажмите клавишу Enter. При таких вычислениях пробелы в выражениях игнорируются.
Вычисления в окне Immediate
Как видно на изображении, в окне Immediate можно вычислять не только математические выражения, но и получать значения встроенных функций VBA и рабочего листа Excel.
Количество строк в окне Immediate
Согласно проведенным опытам, максимальное количество строк в окне Immediate составляет 201 позицию: двести строк с данными и одна — пустая. При заполнении пустой строки, под ней добавляется новая пустая строка, а первая (верхняя) строка с данными исчезает.
Таким образом, максимальная вместимость окна Immediate ограничена 200 строками с данными. Это замечание актуально при выведении больших объемов информации с помощью метода Debug.Print
. Допустимое количество знаков в одной строке — 950. Тестирование проводилось в VBA Excel 2016.
- 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 здесь — Шаблон Excel для отладки VBA
Печать отладки Excel VBA — пример № 1
Для применения отладочной печати в Excel VBA необходимо выполнить следующие шаги.
Шаг 1: Перейдите в окно VBA, на вкладке меню «Вставка» выберите «Модуль», как показано ниже.
Шаг 2: В недавно открытом модуле напишите подкатегорию VBA Debug Print или вы можете выбрать любое другое имя для этого.
Код:
Sub VBA_Debug1 () End Sub
Шаг 3: Теперь напрямую используйте Debug Print, как показано ниже. Как мы уже говорили, в Debug Print нет синтаксиса. Мы можем выбрать все, что мы хотим напечатать.
Код:
Sub VBA_Debug1 () Debug.Print End Sub
Шаг 4: Давайте напечатаем любой случайный текст, который мы хотим видеть, и заключаем его в кавычки, чтобы увидеть результат.
Код:
Sub VBA_Debug1 () Debug.Print "Так работает Debug Print !!" End Sub
Шаг 5: Как мы знаем, вывод Debug Print будет виден только в Immediate Window. Итак, мы будем открывать Immediate Window из строки меню View, как показано ниже.
После этого мы получим пустое окно Immediate, как показано ниже. Это место, где мы увидим весь вывод Debug Print.
Шаг 6: Теперь скомпилируйте код и запустите его, нажав кнопку Play, расположенную под строкой меню. Мы увидим, что печать Debug пропустила вывод в окне Immediate, как показано ниже.
Печать отладки Excel VBA — пример № 2
В этом примере мы увидим, как распечатать любое значение, используя Debug print в Excel VBA. Для этого выполните следующие шаги:
Шаг 1: В модуле напишите подкатегорию под любым именем, как показано ниже.
Код:
Sub VBA_Debug2 () End Sub
Шаг 2: Нам понадобится переменная как целое число.
Код:
Sub VBA_Debug2 () Dim A As Integer End Sub
Шаг 3: Присвойте любое значение этому целому числу.
Код:
Sub VBA_Debug2 () Dim A As Integer A = 1 End Sub
Шаг 4: Теперь мы будем использовать Debug print и назначим переменную, которую мы только что определили напрямую.
Код:
Sub VBA_Debug2 () Dim A As Integer A = 1 Debug. Печать A End Sub
Шаг 5: Теперь мы запустим код, нажав клавишу F5. Мы увидим, что значение, хранящееся в переменной A, теперь печатается в окне Immediate.
Аналогичным образом давайте определим различные типы переменных в одном и том же коде и посмотрим, какие изменения происходят.
Шаг 6: Объявите еще 2 переменные как Double и Long, где мы попытаемся сохранить десятичное значение и большие значения в 6 цифрах.
Код:
Sub VBA_Debug2 () Dim A в виде целого числа Dim B в виде двойного цвета C в качестве длинного конца Sub
Шаг 7: Теперь присвойте некоторые значения каждой определенной переменной в соответствии с их характером типов данных. Присвойте целое число переменной A, десятичное значение переменной B и любые 6 цифр или большее число переменной C.
Код:
Sub VBA_Debug2 () Dim A как целое число Dim B как двойное значение C как длинное A = 1 B = 123.123 C = 123123123 End Sub
Шаг 8: Теперь дайте отдельные отладочные отпечатки каждой из переменных, чтобы мы увидели отдельные значения, но в одном и том же непосредственном окне.
Код:
Sub VBA_Debug2 () Dim A как целое число Dim B как двойное значение C как длинное A = 1 B = 123.123 C = 123123123 Debug.Print A Debug.Print B Debug.Print C End Sub
Шаг 9: Теперь запустите полный код, нажав клавишу F5 или нажав кнопку воспроизведения. Мы увидим, что за один раз все значения сохраняются в переменных A, B и C, которые можно увидеть в непосредственном окне.
Печать отладки Excel VBA — пример № 3
В этом примере мы увидим, как будет выполняться любое математическое выражение, если мы будем использовать непосредственное окно для просмотра результатов. Для этого выполните следующие действия, чтобы использовать отладочную печать в Excel VBA.
Шаг 1: Запишите подкатегорию VBA Debug Print, как показано ниже.
Код:
Sub VBA_Debug3 () End Sub
Шаг 2: Здесь нам нужно попробовать добавить 2 переменные. Для этого определим 2 переменные, в которые мы будем вводить входные числа, и 3- ю переменную, в которой мы будем хранить выходные данные, полученные от сложения первых двух переменных. Давайте рассмотрим эти переменные как A, B и C соответственно.
Код:
Sub VBA_Debug3 () Dim A как целое число Dim B как целое число Dim C как целое число
Шаг 3: Теперь присвойте любые числовые значения переменным A и B. Здесь мы рассмотрели их как 10 и 20 соответственно.
Код:
Sub VBA_Debug3 () Dim A как целое число Dim B как целое число Dim C как целое число A = 10 B = 20 End Sub
Шаг 4: Для целей добавления мы выполним математическую функцию, в которую добавим первую и вторую переменные A и B и получим вывод в переменной C.
Код:
Sub VBA_Debug3 () Dim A как целое число Dim B как целое число Dim C как целое число A = 10 B = 20 C = A + B End Sub
Шаг 5: Теперь мы будем использовать Debug print для печати вывода сложения переменных A и B под переменной C. Таким образом, только переменная C будет назначена в Debug Print для просмотра вывода сложения.
Код:
Sub VBA_Debug3 () Dim A как целое число Dim B как целое число Dim C как целое число A = 10 B = 20 C = A + B Debug.Print C End Sub
Шаг 6: Теперь запустите код, нажав клавишу F5 или нажав кнопку воспроизведения. Мы получим вывод сложения значений, хранящихся в переменных A и B под C, в ближайшем окне.
Таким образом, мы можем выполнить любой тип математического процесса и получить вывод в непосредственном окне вместо использования MsgBox, который также прост, но не так хорош, как Debug Print.
Плюсы Excel VBA Отладка Распечатать
- Это легко применить.
- Не нужно менять окно, чтобы увидеть вывод. Это мы легко видим в ближайшем окне.
- Мы можем даже удалить выходные данные из непосредственного окна, если цель не завершена.
- Компиляция кода не является обязательной.
- Если мы получим какую-либо ошибку, мы можем легко исправить это, просто увидев вывод в непосредственном окне.
То, что нужно запомнить
- Если в коде есть ошибка, то в появившемся окне будет вывод 0.
- Если текст длинный, то мы можем настроить размер окна в соответствии с нашими потребностями.
- Мы также можем настроить местоположение ближайшего окна.
Рекомендуемые статьи
Это руководство по VBA Debug Print. Здесь мы обсудим, как использовать Debug Print в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Шаги для создания словаря в Excel VBA
- Как распечатать этикетки из Excel?
- Комментарий блока VBA (шаблон Excel)
- Как напечатать комментарии в Excel?
Debug.Print is one of the useful tools presented in the VBA editorThe 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 works. 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 using 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 excelIn 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 explains how to use it, covering the following things.
Table of contents
- Excel VBA Debug.Print
- What is VBA Debug Print?
- How to Use Excel VBA Debug Print?
- Examples of Excel VBA Debug.Print
- Example #1 – Displaying the Values of the Variables
- Example #2 – Debug print to File
- Example #3 – Displaying the Factorial of a Number in the Immediate Window
- Example #4 – Printing the Full name of the Active Workbook
- Recommended Articles
You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA Debug Print (wallstreetmojo.com)
What is VBA Debug Print?
Debug is an object in VBA used with the two methods called “Assert” and “Print.” The “Print” is helpful for in-display messages, and “Asserts” is useful in evaluating the conditions. In VBA, debug. In addition, one can use the print statement 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 the code to facilitate access to many users. These are just helpful in testing or evaluating the code to confirm that it is working correctly or not. It prints the variables, strings, numbers, arrays, and values in Excel 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.
For example,
Debug.print count, sum, average, standard deviation
As shown in the example, all the variables are separated by 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. If the 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 the 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 examples demonstrate the use of Debug.Print in Excel VBA.
You can download this VBA Debug Print Excel Template here – VBA Debug Print Excel Template
Example #1 – Displaying the Values of the Variables
First, go to the Developer tabEnabling the developer tab in excel can help the user perform various functions for VBA, Macros and Add-ins like importing and exporting XML, designing forms, etc. This tab is disabled by default on excel; thus, the user needs to enable it first from the options menu.read more, click on “Macros,” and create a macro to write the code in the VBA and add a name to it.
After adding a name, click on “Create.” It opens the VBA Editor.
Develop a small program, as shown in the figure.
Code:
Sub Variables() Dim X As Integer Dim Y As String Dim Z As Double X = 5 Y = "John" Z = 105.632 Debug.Print X Debug.Print Y Debug.Print Z End Sub
The screenshot shows three dimensions or variables decreasing X, Y, and Z as an integer, string, and double. One can use the Debug.Print these values. It will display the output 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 the immediate window.
One can simplify this program by separating the Debug.Print statements by a comma.
Code:
Sub Variables() Dim X As Integer Dim Y As String Dim Z As Double X = 5 Y = "John" Z = 105.632 Debug.Print X, Y, Z End Sub
The debug 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 the VBA Debug.Print to display output to a file when the length of the text is too high.
The program is developed to print the output on a file, as shown in the figure.
Code:
Sub DebugPrintToFile() Dim s As String Dim num As Integer num = FreeFile() Open "D:ArticlesExceltest.txt" For Output As #num s = "Hello, world!" Debug.Print s ' write to the immediate window Print #num, s ' write output to file Close #num End Sub
In this program, two variables, S and Num, are considered string and integer. The open statement creates a text file with the name test. A column called “Hello World” is declared into the variable S.
When you run the VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more manually or using the F5 key, one can write the output into the immediate window, and the file displays in the folder at a time.
The output of the file shows in the below-mentioned figure.
Printing output to file is beneficial when presenting long text.
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:
Public Sub Fact() Dim Count As Integer Dim number As Integer Dim Fact As Integer number = 5 Fact = 1 For Count = 1 To number Fact = Fact * Count Next Count Debug.Print Fact End Sub
One must consider three variables for determining the factorial, 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 uses outside the “for” loop to display the value after completing the circle. The output is determined.
If we use the Debug.Print statement inside the “for” loop; the fact-value is displayed for every recurring time, as shown in the figure.
Code:
Public Sub Fact() Dim Count As Integer Dim number As Integer Dim Fact As Integer number = 5 Fact = 1 For Count = 1 To number Fact = Fact * Count Debug.Print Fact Next Count End Sub
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.
Then, the program develops, as shown in the figure.
Code:
Sub Activework() Dim count As Long For count = 1 To Workbooks.count Debug.Print Workbooks(count).FullName Next count Debug.Print count End Sub
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 workbook’s path in the drives displays accurately using the VBA Debug.Print statement.
Things to Remember
- The main issue with the debug .print is no text wrapping option for long strings in the immediate window.
- We should bring the immediate window to the top to see the output in the user interface.
- It is impossible to wrap the long text displayed in the immediate window. In this situation, we must show the result to a file stored in the drive.
Recommended Articles
This article has been a guide to VBA Debug.Print. Here, we learn how to use the VBA Debug.Print statement to analyze VBA code output along with examples and explanations. Below are some useful Excel articles related to VBA: –
- Switch Case in VBA
- VBA Break For Loop
- VBA DatePart
- VBA Print
Содержание
- VBA Debug Печать — Как использовать отладочную печать в Excel VBA (примеры)
- Excel VBA Debug Print
- Как использовать отладочную печать в Excel VBA?
- Печать отладки Excel VBA — пример № 1
- Печать отладки Excel VBA — пример № 2
- Печать отладки Excel VBA — пример № 3
- Плюсы Excel VBA Отладка Распечатать
- То, что нужно запомнить
- Рекомендуемые статьи
- VBA – Debug.Print and the Immediate Window
- Displaying the Immediate Window
- Executing Lines of Code
- Questions and the Immediate Window
- Run a Macro from the Immediate Window
- Using Debug.Print
- Using the Immediate Window When Running Code
- VBA Coding Made Easy
- VBA Code Examples Add-in
- VBA: How to Debug Code
- VBA: How to Debug Code
- Summary
- Examining Your Code
- Run Current Procedure (F5)
- Stepping Over Code
- Stepping Out of Code
- Breakpoints
- Using VBA Debug.Print
- Additional Resources
VBA Debug Печать — Как использовать отладочную печать в Excel VBA (примеры)
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 здесь — Шаблон Excel для отладки VBA
Печать отладки Excel VBA — пример № 1
Для применения отладочной печати в 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, как показано ниже.
Печать отладки Excel VBA — пример № 2
В этом примере мы увидим, как распечатать любое значение, используя 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 — пример № 3
В этом примере мы увидим, как будет выполняться любое математическое выражение, если мы будем использовать непосредственное окно для просмотра результатов. Для этого выполните следующие действия, чтобы использовать отладочную печать в 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 Отладка Распечатать
- Это легко применить.
- Не нужно менять окно, чтобы увидеть вывод. Это мы легко видим в ближайшем окне.
- Мы можем даже удалить выходные данные из непосредственного окна, если цель не завершена.
- Компиляция кода не является обязательной.
- Если мы получим какую-либо ошибку, мы можем легко исправить это, просто увидев вывод в непосредственном окне.
То, что нужно запомнить
- Если в коде есть ошибка, то в появившемся окне будет вывод 0.
- Если текст длинный, то мы можем настроить размер окна в соответствии с нашими потребностями.
- Мы также можем настроить местоположение ближайшего окна.
Рекомендуемые статьи
Это руководство по VBA Debug Print. Здесь мы обсудим, как использовать Debug Print в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Шаги для создания словаря в Excel VBA
- Как распечатать этикетки из Excel?
- Комментарий блока VBA (шаблон Excel)
- Как напечатать комментарии в Excel?
Источник
In this Article
The VBA Immediate Window is used to quickly run lines of VBA code, as well as fetch information about your code or Excel file. This tool allows you to test individual lines of code, which is useful when you are writing and debugging code. The output is displayed in the Immediate Window.
You need to display the Immediate Window first. In order to do this, you would press Alt + F11 to enter the Visual Basic Editor. Once you have inserted a module. Press Ctrl + G to view the Immediate Window.
You should see the following:
Executing Lines of Code
One of the things that the Immediate Window allows you to do is test a line of code. The following code will show you how to use the Immediate Window to fill Cell A1 of the Active Sheet with a light orange fill color. Type in the following line and then press Enter on your keyboard:
You can use the Immediate Window to get information about your workbook. You can do this by using the question mark. If you enter a statement preceded by a question mark then the Immediate Window will deliver the appropriate answer. Let’s say you have the number 5, in cell A1 which is selected. The following code will allow you to use the Immediate Window to get this value:
You can run a macro from the Immediate Window by typing in the name of the macro and pressing Enter. If your macro contains arguments then you can use the Immediate Window and pass the arguments to the macro through the Immediate Window. The following code shows you how to call a macro named CountWorksheets from the Immediate Window:
After pressing Enter, the result is shown on the worksheet in Cell A1.
Using Debug.Print
You can use Debug.Print as part of your sub procedures and this tells the Immediate Window to display certain information. This is used when you don’t want to display values or results in a cell in the workbook itself or in a message box. The following code uses the Debug.Print statement as part of a sub procedure and displays the results in the Immediate Window.
The result when you press F5 to run the macro is shown in the Immediate Window:
You can also use the Immediate Window to set or get a variable’s value while you are stepping through your code:
The following code has a breakpoint that is inserted as shown below:
If you enter ?SName in the Immediate Window while stepping into your code using F8, at the break point you will get the following result:
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
VBA Code Examples Add-in
Easily access all of the code examples found on our site.
Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.
Источник
VBA: How to Debug Code
How to locate and fix errors, bugs, and other unintended features in the VBA code
VBA: How to Debug Code
When writing and running VBA code, it is important for the user to learn how to debug code errors. It is the expectation of the Excel user that the code will work as expected. However, there are instances when users encounter errors and bugs in the code that may affect its integrity. The code will often run into problems, and the user will need to debug the errors first before they can continue writing additional lines of code.
While some of the errors may be highlighted and warnings displayed, there are errors and bugs that require users to re-examine their code to find, expunge any bugs they find, and solve errors that affect the smooth execution of the code.
Summary
- VBA debugging is a process of locating and fixing errors, bugs, and other unintended features in the VBA code.
- VBA comes with various built-in debugging tools that can be used to find errors and bugs, thereby eliminating the need to recompile the code.
- Some of the debugging tools available in VBA Editor include stepping over, stepping out, breakpoints, and debug print.
Examining Your Code
When examining the VBA code for errors, the most straightforward debugging technique is to review the code. It requires looking at the code afresh in an attempt to check any existing errors or other unintended features. Finding errors using the review method requires knowledge of VBA code and the experience to detect such errors. It may help identify errors, but it is not as efficient as the built-in debugging tools.
The VBA Editor comes with a built-in debugging mechanism that allows Excel users to interact and run the code. When the user launches the VBA Editor (by pressing Alt+F11) in Excel, the editor window opens, and there is a debug option at the top menu, as shown in the figure below:
When the user clicks the debug menu, a drop-down list will appear, containing a list of commands that can be used to debug the VBA code. The commands come with shortcut keys that users can use to execute the command.
Run Current Procedure (F5)
One of the methods used to debug VBA code is by running the code. The shortcut key for the command is F5. Start by placing the cursor into the UserForm or Sub (macro) and then press F5 to run the sub. Please note that F5 will not work when running a sub that requires parameters to execute a function.
Stepping Over Code
Stepping over code is one of the commands available under the debug menu of the VBA Editor. The command requires users to skillfully step over each line of the VBA code in the second sub. If the code calls for another sub, simply step over the second sub and continue running the code. To run the code, press Shift+F8 simultaneously to execute the second sub.
Stepping Out of Code
The stepping out command helps the user step out of the current running sub. The shortcut for the command is to press Ctrl+Shift+F8. It can be used when the user wants to step out of a sub that they entered either intentionally or accidentally. When the command is executed, the code in the current running sub will be executed. However, the code will stop at the next statement after the call to the sub.
Breakpoints
The breakpoint specifies the line in your code where VBA should pause the execution of the macro operation when debugging the code. Specifying the breakpoint helps prevent VBA from running into a loop of IF statement.
The shortcut key for adding a breakpoint is F9. Create a breakpoint, position the cursor on the specific line of your code where you want VBA to pause, and press F9. Alternatively, locate the line of code where you want to add the breakpoint and click on the left grey margin beside the line.
A dark red dot will appear on the margin beside the specified line to indicate that the breakpoint has been created. The specified line of code will also be highlighted with the same color (dark red). The VBA Editor allows the user to set as many breakpoints as is required when debugging the code to check that it is working correctly.
To remove the breakpoint, simply click on the dot again or press F9 with the cursor positioned in the highlighted line of code. If there are many breakpoints, the user can remove all of them at the same time by pressing Ctrl+Shift+F9.
Using VBA Debug.Print
The Debug.Print tool is a useful feature in the VBA editor that helps Excel users to evaluate how the code is working. In addition, it analyzes changes in the variables created in the program. Debug.Print is an alternative to the MsgBox feature in VBA, which is also used to display the output of the window when running the program.
Unlike Msgbox, Debug.Print eliminates the need for any confirmation or acknowledgment every time. It is also used to show the values of variables by displaying a log of returned values in the immediate window. The tool is effective in evaluating a code to confirm that it is working properly, as well as detecting any bugs in the code. It prints out the variables, numbers, arrays, and strings in the active and empty Excel sheets.
Additional Resources
CFI offers the Business Intelligence & Data Analyst (BIDA)® certification program for those looking to take their careers to the next level. To keep learning and advancing your career, the following resources will be helpful:
Источник
Skip to content
Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье. Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить ее отладку. Тогда вы будете уверены, что функция работает правильно.
Мы рассмотрим несколько способов, как это сделать:
- Что такое отладка функции?
- Способ 1. Использование MsgBox
- Способ 2. Пошаговое выполнение.
- Способ 3. Применение оператора Debug.Print
- Способ 4. Вызов функции из процедуры.
Вы можете выбрать для себя наиболее подходящий метод.
Что такое отладка функции?
Когда вы создаете пользовательскую функцию, всегда существует возможность, что вы допустите ошибку и она не сразу будет работать так, как вам нужно.
Пользовательские функции обычно достаточно сложные. И не всегда они сразу начинают работать правильно. Формула может возвратить неверный результат или ошибку #ЗНАЧ!. В отличие от стандартных функций Excel, никаких других сообщений вы не увидите.
Есть ли способ отследить работу пользовательской функции по шагам, чтобы проверить, как работает каждый оператор, входящий в нее? Да, есть. Для этого и используется отладка.
Я предложу вам несколько способов проверки работы пользовательской функции, чтобы вы могли выбрать наиболее подходящий для себя.
В качестве примера используем пользовательскую функцию GetMaxBetween из нашей предыдущей статьи, которая вычисляет максимальное число в указанном диапазоне значений:
Аргументы функции — это диапазон ячеек, в которых записаны числа, а также верхний и нижний предел значений.
Способ 1. Поместите в важных местах функцию MsgBox.
Для того, чтобы следить за выполнением расчетов, можно в нужных местах выводить на экран значения самых важных переменных. Это можно сделать при помощи всплывающих диалоговых окон.
MsgBox — это диалоговое окно, которое вы можете использовать, чтобы показывать пользователю какое-то сообщение.
MsgBox является функцией и имеет синтаксис, аналогичный другим функциям VBA:
MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )
prompt — это обязательный аргумент. Он содержит сообщение, которое вы видите в диалоговом окне. Его также можно использовать для отображения значений отдельных переменных.
Все остальные аргументы являются не обязательными.
[buttons] — определяет, какие кнопки и значки отображаются в MsgBox. Например, если я использую vbOkOnly, то будет отображаться только кнопка OK. Даже если вы пропустили этот аргумент, эта кнопка используется по умолчанию.
[title] — здесь вы можете указать заголовок окна сообщения.
Приступим к отладке. Чтобы показать сообщение, добавим в код пользовательской функции GetMaxBetween перед оператором Case Else следующую строку:
MsgBox vMax, , «Count — » & i
Получим следующий код:
Function GetMaxBetween(rngCells As Range, MinNum, MaxNum)
Dim NumRange As Range
Dim vMax
Dim arrNums()
Dim i As Integer
ReDim arrNums(rngCells.Count)
For Each NumRange In rngCells
vMax = NumRange
Select Case vMax
Case MinNum + 0.01 To MaxNum - 0.01
arrNums(i) = vMax
i = i + 1
MsgBox vMax,, "Count -" & i
Case Else
GetMaxBetween = 0
End Select
Next NumRange
GetMaxBetween = WorksheetFunction.Max(arrNums)
End Function
С помощью переменной vMax в диалоговом окне мы увидим, какие числа соответствуют условиям для отбора, чтобы из них затем выбрать наибольшее. При помощи выражения «Count — » & i в заголовке окна мы указываем, сколько чисел мы уже выбрали, чтобы определить максимальное значение. С каждым новым значением счетчик будет увеличиваться.
В ячейку С1 нашего рабочего листа запишем формулу
=GetMaxBetween(A1:A6;10;50)
После того, как будет нажата клавиша Enter, вы увидите сообщение, как на скриншоте ниже:
Это первое число из диапазона A1:A6, которое соответствует условиям: больше 10, но меньше 50.
После того, как вы нажмете ОК, появится второе сообщение с числом 14. Остальные числа не соответствуют условиям отбора. Поэтому функция завершает работу и возвращает наибольшее из двух значений — 17.
Таким образом, мы шаг за шагом отследили всю работу нашей функции и выяснили, что она работает верно.
Функцию MsgBox можно использовать в самых важных местах кода пользовательской функции, чтобы контролировать изменение значений отдельных переменных. Окна с сообщениями могут оказаться очень полезными, когда у вас большая функция и много вычислений. В этом случае вам будет легко определить, в какой части кода происходит ошибка.
Способ 2. Определите точки остановки и выполните функцию пошагово.
Вы можете добавить в код вашей функции точки останова (Breakpoint), на которых будет останавливаться выполнение вычислений. Так можно пошагово проследить процесс расчёта. При этом вы можете посмотреть, как изменяются значения переменных.
Чтобы добавить точку остановки, поместите курсор в строку с оператором, в котором вы решили приостановить выполнение. Потом нажмите правую кнопку мыши и выберите команду Debug –> Toggle Breakpoint или просто нажмите клавишу F9
. Также можно кликнуть в нужном месте на вертикальной серой области слева от кода функции.
Появится красный кружок, как вы видите на скриншоте ниже. Строка кода, где будет остановлен расчет, выделяется красным цветом.
Теперь при работе функции будет открываться окно редактора VBA. Курсор будет установлен в точке остановки.
Если вы наведете курсор мыши на любую из переменных в коде функции, вы сможете увидеть их текущее значение. Для контроля выполнения вычислений это очень полезно. Вы видите это действие на скриншоте ниже.
Чтобы продолжить вычисления, просто нажмите клавишу F5
.
Примечание. После точки останова вы можете приступить к пошаговому отслеживанию хода вычислений. Если вы нажмете кнопку F8, будет выполнена только одна следующая строка кода VBA. Желтая линия со стрелкой также переместится в позицию последнего выполненного кода.
Поскольку выполнение функции снова приостанавливается, вы можете просматривать текущие значения всех переменных функции с помощью курсора мыши.
Следующее нажатие F8
продвинет нас на шаг вперед. Таким образом, вы можете нажимать F8
до конца расчета. Или нажмите F5
, чтобы продолжить вычисление до следующей точки останова.
В случае возникновения ошибки курсор будет остановлен в той точке кода, где произошла ошибка. И вы также увидите всплывающее сообщение об ошибке. Это позволяет легко определить причину проблемы.
Указанные вами точки останова действуют, пока вы не закрыли файл. При повторном его открытии вам нужно снова их указывать. Согласитесь, что это не всегда удобно.
Эту проблему можно решить. Вставьте в код функции в нужных точках оператор Stop, и вы сможете прервать выполнение программы так же, как при использовании точек останова.
Когда VBA встретит оператор Stop, он остановит расчёты и будет ожидать ваших действий. Проверьте значения переменных, затем нажмите F5
для продолжения.
Оператор Stop является частью программы и поэтому не удаляется при закрытии книги, как это происходит с точкой останова. Когда вы закончите отладку, удалите его сами. Либо превратите в комментарий, поставив перед ним одинарную кавычку (‘).
Способ 3. Отладка при помощи оператора Debug.Print
В коде функции вы можете разместить оператор Debug.Print. Это полезно, чтобы проконтролировать значения переменных, которые циклически изменяются.
Пример такого кода вы видите на скриншоте ниже.
Оператор Debug.Print i, vMax выводит числа, которые были обработаны функцией, и их порядковые номера (начиная с 1).
В окне Immediate вы видите два числа (17 и 14) из выбранного диапазона, которые соответствуют установленным ограничениям и среди которых и будет определено максимальное. Цифры 1 и 2 означают, что функция выполнила 2 цикла, в которых были выбраны числа. Мы видим значения самых важных переменных, как ранее делали при помощи MsgBox. Но при этом не останавливали работу функции.
Способ 4. Вызвать функцию из процедуры
Можно вызвать пользовательскую функцию не из ячейки рабочего листа, а из процедуры. В этом случае все ошибки будут показаны в окне Visual Basic Editor.
Вот как можно вызвать из процедуры пользовательскую функцию GetMaxBerween:
Sub Test()
Dim x
x = GetMaxBetween(Range("A1:A6"), 10, 50)
MsgBox (x)
End Sub
Установите курсор в любое место кода и нажмите F5. Если ошибки в функции нет, вы увидите всплывающее окно с результатом расчетов.
В случае ошибки вы увидите соответствующее сообщение в редакторе VBA. Расчет будет приостановлен, и строка кода, в которой произошла ошибка, будет выделена жёлтым цветом. Вы легко определите, где и почему возникла проблема.
Это все. Теперь вы создали свою надстройку, добавили ее в Excel и можете использовать в ней пользовательскую функцию. Если вы хотите использовать больше функций, просто напишите их код в модуле надстройки в редакторе VBA и сохраните его.
На сегодня все. Мы рассмотрели различные способы отладки пользовательских функций и узнали, как использовать их в своей рабочей книге. Мы очень надеемся, что эти рекомендации будут вам полезны. Если возникнут вопросы, пишите в комментариях к этой статье.
Excel VBA Debug Print
Debug Print is one of the most useful but underrated tools VBA has. Debug Print can be used in place of MsgBox. It helps in analyzing the process and output in the immediate window. Debug Print and MsgBox in VBA works on the same principles.
They both show the values like a message. But there are some major difference and benefits of using Debug Print over MsgBox. Debug Print, shows us the value stored in any variable or in itself in Debug Print like MsgBox. It also helps in debugging the error after executing the complete code. There is no need of clicking on the Ok button after we get the message, by which we can save a small amount of time and extra step to perform.
There is no proper syntax of Debug Print. We can add anything and whatever we want to see as output in the immediate window.
How to Use Debug Print in Excel VBA?
Below are the different examples to use Debug Print in excel by using VBA code.
You can download this VBA Debug Print Excel Template here – VBA Debug Print Excel Template
Excel VBA Debug Print – Example #1
For applying Debug Print in Excel VBA, we need to follow the below steps.
Step 1: Go to the VBA window, under the Insert menu tab select Module as shown below.
Step 2: In the newly opened Module, write the subcategory VBA Debug Print or you can choose any other name for that.
Code:
Sub VBA_Debug1() End Sub
Step 3: Now directly use Debug Print as shown below. As we discussed, Debug Print doesn’t have any syntax. We can choose anything we want to print.
Code:
Sub VBA_Debug1() Debug.Print End Sub
Step 4: Let’s print any random text which we want to see and quote that text in inverted commas to see the output.
Code:
Sub VBA_Debug1() Debug.Print "This is how Debug Print works!!" End Sub
Step 5: As we know, the output of Debug Print will only be seen in Immediate Window. So, we will be opening the Immediate Window from the View menu bar as shown below.
After that, we will be getting a blank Immediate Window as shown below. This is a place where we will be seeing all the output from Debug Print.
Step 6: Now compile the code and run it by clicking on the Play button located below the menu bar. We will see, the Debug print has omitted the output in Immediate window as shown below.
Excel VBA Debug Print – Example #2
In this example, we will see, how to print any value using Debug print in excel VBA. For this, follow the below steps:
Step 1: In a module, write the subcategory in any name as shown below.
Code:
Sub VBA_Debug2() End Sub
Step 2: We will need a variable as an Integer.
Code:
Sub VBA_Debug2() Dim A As Integer End Sub
Step 3: Assign any value to that integer.
Code:
Sub VBA_Debug2() Dim A As Integer A = 1 End Sub
Step 4: Now we will use Debug print and assign the variable which we have just defined directly.
Code:
Sub VBA_Debug2() Dim A As Integer A = 1 Debug.Print A End Sub
Step 5: Now we will run the code by pressing F5 key. We will see, the value stored in variable A is now printed in the Immediate window.
In a similar way, let’s define different types of variables in the same code and see, what changes happen.
Step 6: Declare the 2 more variables as Double and Long where we will try to store decimal value and large values in 6 digits.
Code:
Sub VBA_Debug2() Dim A As Integer Dim B As Double Dim C As Long End Sub
Step 7: Now assign some values to each defined variable as per their character of data types. Assign the whole number to variable A, decimal value to variable B and any 6 digits or larger number to variable C.
Code:
Sub VBA_Debug2() Dim A As Integer Dim B As Double Dim C As Long A = 1 B = 123.123 C = 123123123 End Sub
Step 8: Now give individual Debug Prints to each of the variables so that, we will be seeing the separate values but in the same immediate window.
Code:
Sub VBA_Debug2() Dim A As Integer Dim B As Double Dim C As Long A = 1 B = 123.123 C = 123123123 Debug.Print A Debug.Print B Debug.Print C End Sub
Step 9: Now run the complete code by pressing the F5 key or by clicking on the Play Button. We will see, in one shot all the values are stored in variables A, B, and C which can be seen in the immediate window.
Excel VBA Debug Print – Example #3
In this example, we will see how any mathematical expression would run if we use an immediate window to see the output. For this, follow the below steps to use Debug Print in Excel VBA.
Step 1: Write the subcategory of VBA Debug Print as shown below.
Code:
Sub VBA_Debug3() End Sub
Step 2: Here, we will need to try to perform an addition of 2 variables. For this define 2 variables in which we will be submitting the input numbers and 3rd variable where we will store the output coming from addition of the first two variables. Let’s consider those variables as A, B, and C respectively.
Code:
Sub VBA_Debug3() Dim A As Integer Dim B As Integer Dim C As Integer End Sub
Step 3: Now allot any numerical values to variable A and B. Here, we have considered those as 10 and 20 respectively.
Code:
Sub VBA_Debug3() Dim A As Integer Dim B As Integer Dim C As Integer A = 10 B = 20 End Sub
Step 4: For the purpose of adding, we will perform a mathematical function where we will add first and second variable A and B and get the output in variable C.
Code:
Sub VBA_Debug3() Dim A As Integer Dim B As Integer Dim C As Integer A = 10 B = 20 C = A + B End Sub
Step 5: Now we will use Debug print to print the output of addition of variable A and B under variable C. So, only variable C will be assigned in Debug Print to see the output of addition.
Code:
Sub VBA_Debug3() Dim A As Integer Dim B As Integer Dim C As Integer A = 10 B = 20 C = A + B Debug.Print C End Sub
Step 6: Now run the code by pressing F5 key or by clicking on Play Button. We will get the output of addition of values stored in variable A and B under C in the immediate window.
By this, we can perform any type of mathematical process and get the output in an immediate window instead of using MsgBox which is also easy but not as good as Debug Print.
Pros of Excel VBA Debug Print
- It is easy to apply.
- No need to change the window to see the output. That we easily can see in the immediate window.
- We can even delete the output data from an immediate window once the purpose is incomplete.
- Compiling the code is optional.
- If we get any error then we can easily rectify that just from seeing the output in the immediate window.
Things to Remember
- If there is an error in the code, then the immediate window will give us the output as 0.
- If the text is long, then we can adjust the size of the immediate window as per our need.
- We can also adjust the location of an immediate window.
Recommended Articles
This is a guide to VBA Debug Print. Here we discuss how to use Debug Print in Excel using VBA code along with practical examples and downloadable excel template. You can also go through our other suggested articles –
- VBA RGB
- VBA XML
- VBA Block Comment
- VBA IsError
Return to VBA Code Examples
In this Article
- Displaying the Immediate Window
- Executing Lines of Code
- Questions and the Immediate Window
- Run a Macro from the Immediate Window
- Using Debug.Print
- Using the Immediate Window When Running Code
The VBA Immediate Window is used to quickly run lines of VBA code, as well as fetch information about your code or Excel file. This tool allows you to test individual lines of code, which is useful when you are writing and debugging code. The output is displayed in the Immediate Window.
Displaying the Immediate Window
You need to display the Immediate Window first. In order to do this, you would press Alt + F11 to enter the Visual Basic Editor. Once you have inserted a module. Press Ctrl + G to view the Immediate Window.
You should see the following:
Executing Lines of Code
One of the things that the Immediate Window allows you to do is test a line of code. The following code will show you how to use the Immediate Window to fill Cell A1 of the Active Sheet with a light orange fill color. Type in the following line and then press Enter on your keyboard:
Range("A1").Interior.Color = RGB(246, 174, 134)
The result is:
Questions and the Immediate Window
You can use the Immediate Window to get information about your workbook. You can do this by using the question mark. If you enter a statement preceded by a question mark then the Immediate Window will deliver the appropriate answer. Let’s say you have the number 5, in cell A1 which is selected. The following code will allow you to use the Immediate Window to get this value:
?ActiveCell.Value
The result is:
Run a Macro from the Immediate Window
You can run a macro from the Immediate Window by typing in the name of the macro and pressing Enter. If your macro contains arguments then you can use the Immediate Window and pass the arguments to the macro through the Immediate Window. The following code shows you how to call a macro named CountWorksheets from the Immediate Window:
CountWorksheets
After pressing Enter, the result is shown on the worksheet in Cell A1.
Using Debug.Print
You can use Debug.Print as part of your sub procedures and this tells the Immediate Window to display certain information. This is used when you don’t want to display values or results in a cell in the workbook itself or in a message box. The following code uses the Debug.Print statement as part of a sub procedure and displays the results in the Immediate Window.
Sub UsingDebugPrint()
Dim FirstName As String
Dim LastName As String
FirstName = "Jane"
LastName = "Williams"
Debug.Print FirstName & " " & LastName
End Sub
The result when you press F5 to run the macro is shown in the Immediate Window:
Using the Immediate Window When Running Code
You can also use the Immediate Window to set or get a variable’s value while you are stepping through your code:
Sub GettingAndSettingVariableValues()
Dim LName As String
Dim SName As String
Dim Age As Integer
LName = "John"
SName = "Smith"
Age = 31
End Sub
The following code has a breakpoint that is inserted as shown below:
If you enter ?SName in the Immediate Window while stepping into your code using F8, at the break point you will get the following result:
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
На чтение 8 мин. Просмотров 5.3k.
VBA Immediate Window является удивительным инструментом, который позволяет получить моментальные ответы о ваших файлах Excel, и быстро выполнить код. Он встроен в редактор Visual Basic и имеет множество различных применений, которые могут быть очень полезны при написании макросов, отладке кода и отображении результатов кода.
Каждый пользователь Excel может получить выгоду от Immediate Window, даже если вы не пишете макросы. Эта статья расскажет про 5 различных применений Immediate Window. Как только вы поймете возможности этого инструмента, вы будете использовать его постоянно.
Содержание
- Где находитсяImmediate Window?
- Эта пустая коробка волшебна!
- Открепить Immediate Window
- Заключение
Immediate Window
находится в окне редактора Visual Basic.
Самый быстрый способ добраться до Immediate Window — это:
- Нажмите Alt + F11 (удерживая клавишу Alt, затем нажмите клавишу F11) из любой места Excel. Откроется окно редактора Visual Basic. (Mac версия Fn + Alt + F11)
- Нажатие Ctrl + G открывает окно Immediate и помещает текстовый курсор в него. Начните вводить свой код. (Версия для Mac — Ctrl + Cmd + G)
Когда вы откроете VB Editor (Alt + F11 ), вы можете увидеть, что Immediate Window автоматически появляется в правом нижнем углу. Это его местоположение по умолчанию. Если его там нет, вы можете нажать Ctrl + G или
меню View> Immediate Window.
Эта пустая коробка волшебна!
Когда вы щелкнете внутри Immediate Window, вы увидите пустое
поле с мигающим текстовым курсором. На первый взгляд это не слишком увлекательно,
но Immediate Window может быть очень мощным и полезным инструментом.
Думайте об этом, как о пустой ячейке на листе. Довольно скучно, пока вы не добавите формулу, верно?
Итак, давайте рассмотрим 5 примеров, которые помогут вам извлечь максимальную пользу из этой волшебной коробки.
# 1 — Получить информацию об активной книге
Простейшее использование Immediate Window — это быстрое получение информации о Excel-файле, который в данный момент открыт и активен в фоновом режиме. Вы можете проверить любую строку кода VBA в Immediate Window, и она сразу же даст вам результат.
Например, чтобы узнать, сколько листов в активной книге, введите следующую строку кода в Immediate Window и нажмите клавишу «Enter».
?Activeworkbook.Worksheets.Count
Ответ будет отображен в следующей строке Immediate Window,
прямо под кодом.
Задайте вопрос, любой вопрос …
Помещение знака вопроса (?) в начале оператора говорит Immediate Window, что мы задаем ему вопрос и ожидаем результата.
В следующем скриншоте показано несколько примеров того, как мы можем использовать Immediate Window для получения значения, формата чисел и цвета заливки активной ячейки.
Обратите внимание, что Immediate Window отображает интеллектуальные подсказки в тот момент, когда я печатаю. Intellisense — это раскрывающееся меню, в котором отображаются свойства и методы объекта, на который я ссылаюсь. Это позволяет очень быстро и легко вводить код в Immediate Window.
# 2 — Выполнить строку кода VBA
Вам не нужно писать целый макрос, если вам достаточно выполнить одну строку кода в вашей книге.
Удалите знак вопроса в начале оператора, и Immediate Window выполнит эту строку кода.
Selection.HorizontalAlignment = xlCenterAcrossSelection
На изображении выше показано, как отформатировать выделенные ячейки с помощью выравнивания по центру выделения.
Вы также можете использовать следующую строку кода, чтобы сделать лист «очень скрытым».
Worksheets("Лист1").Visible = xlVeryHidden
Другой пример — скрыть содержимое ячейки, сделав цвет шрифта
таким же, как цвет заливки (фона).
Range("A1").Font.Color = Range("A1").Interior.Color
Я использую эту строку кода в инструменте оглавления Tab Hound, чтобы скрыть некоторые настройки, хранящиеся в ячейке A1. Даже если пользователь изменит цвет заливки листа, содержимое в ячейке A1 все равно будет скрыто после выполнения кода.
# 3 — Запустить макрос
Вы можете запустить макрос из Immediate Window, введя имя
макроса (процедура) и нажав Enter.
Конечно, вы также можете сделать это, нажав клавишу F5 или
кнопку «Выполнить макрос» в VB Editor, но что если ваш макрос содержит
аргументы?
Макрос не может быть запущен изнутри процедуры, если он содержит аргументы. Тем не менее, вы можете вызвать макрос из непосредственного окна.
Пример ниже представляет собой простой макрос, который вводит текущую дату (сейчас) в ячейку и меняет цвет шрифта на синий (Color = vbBlue). Этот макрос требует, чтобы для запуска ему было передано два аргумента: имя листа и адрес ячейки, где будет введена отметка даты.
Для такого макроса вы обычно будете вызывать его из другого
макроса и указывать аргументы в макросе, который его вызывает. Но если вы
просто хотите протестировать макрос, содержащий аргументы, вы можете
использовать Immediate Window для его вызова.
Это отлично подходит для написания и отладки кода. Возможно,
вы не захотите запускать весь стек процедур (макросов) в коде, но вы можете
использовать Immediate Window, чтобы вызывать только тот конкретный макрос, над
которым вы работаете.
В приведенном выше примере показано, как можно указать
аргументы после имени макроса. Для аргументов, которые являются строковыми
переменными (текст), вам необходимо заключить переменную в кавычки.
Как вы можете видеть на изображении, интеллектуальный помощник доступен в Immediate Window, что позволяет легко указать аргументы для макроса.
# 4 — Просмотр информации об отладке
Вы когда-нибудь видели в Интернете код VBA, в котором есть строка, подобная следующей?
Debug.Print xxxxx
«xxxxx» являются некоторой переменной, которую код вычисляет или производит.
Debug.Print говорит VBA напечатать эту информацию в Immediate Window. Это может быть полезно, когда вы хотите увидеть значение переменной в определенной строке вашего кода, без необходимости хранить переменную где-то в рабочей книге или показывать ее в окне сообщения. Это особенно полезно, когда вы пишете или отлаживаете код.
Пример ниже представляет собой макрос, который проходит по всем листам в книге и проверяет, является ли каждый лист пустым (не используется). Если лист пустой, он отображается в окне Immediate Window с помощью Debug.Print.
Конечная цель этого макроса может состоять в том, чтобы удалить все пустые листы в книге, но мы могли бы сначала протестировать код перед тем, как фактически удалить какие-либо листы.
Строка Debug.Print создает список пустых листов в Immediate Window, и затем мы можем вручную проверить каждый из этих листов, чтобы убедиться, что они действительно пустые.
# 5 — Получить или установить значение переменной
Immediate
Window также можно использовать для получения ответов о выполняемой в данный
момент процедуре (макросе). Если вы просматриваете свой код (F8) или добавляете
точку останова (F9) или добавляете строку STOP в свой код, тогда код будет
приостановлен. Когда код приостановлен, вы можете использовать Immediate
Window, чтобы получить информацию о любых переменных или объектах, на которые
есть ссылки в коде.
В следующем примере показан макрос, который создает список
всех листов в активной книге. Существует множество различных способов написания
этого кода, но в этом примере я использую переменную «lSht» в цикле «For Next»
для циклического перемещения по рабочим листам, а затем добавляю имя листа на
активный лист.
Я добавил точку останова (F9) в коде, чтобы приостановить
код при выполнении этой строки. Когда код приостановлен, Immediate Window можно
использовать для оценки или изменения переменных. На изображении выше я
использовал знак вопроса, чтобы проверить значение переменной lSht. Затем я
использовал переменную, чтобы получить имя листа, который в данный момент
обрабатывается в цикле.
Наконец, я изменил переменную lSht на 5, используя знак равенства (lSht = 5). Это эффективно пропустит некоторые листы в цикле, потому что я изменил переменную с 2 на 5.
Это простой пример, но Immediate Window может пригодиться при пошаговом выполнении кода.
Если вы хотите узнать, как я заставил Immediate Window
плавать поверх приложения Excel на некоторых скриншотах.
Этот скринкаст покажет вам, как вы можете отсоединить
Immediate Window.
Вот
пошаговые инструкции:
- Щелкните левой кнопкой мыши и удерживайте
верхнюю панель Immediate Window. - Перетащите его из окна VB Editor. Immediate
Window становится свободным плавающим окном, которое вы можете поместить поверх
Excel. - Чтобы повторно закрепить его, дважды щелкните на
верхней панели окна.
Вы можете сделать это с любым из окон в редакторе VB,
включая окна Project, Properties, Locals и Watch. Многие разработчики
настраивают VB Editor не так, как макет по умолчанию. Некоторые предпочитают,
чтобы окна проекта и свойств располагались справа, а не слева. Окно VB Editor
дает вам большую гибкость для настройки вашего представления.
Заключение
Immediate Window — очень универсальный инструмент, который действительно может помочь при написании и отладке макросов. Это отличный способ получить быстрые ответы о вашем файле или приложении. Если вы новичок в VBA, Immediate Window будет очень полезен, когда вы начнете изучать и писать код.