Visual Basic for Applications:
Печать отладочного вывода

Как это сделать:

В VBA оператор Debug.Print является рабочей лошадкой для вывода отладочной информации в окно “Немедленный” (Immediate Window) в редакторе Visual Basic (VBE). Для эффективного использования этой функции необходимо, чтобы окно “Немедленный” было видимо (Вид > Окно “Немедленный” или нажать Ctrl+G в VBE).

Вот простой пример использования Debug.Print для вывода значения переменной и пользовательского сообщения:

Sub PrintDebugInfo()
    Dim sampleVar As Integer
    sampleVar = 42
    Debug.Print "Значение sampleVar: "; sampleVar
End Sub

Когда вы запускаете эту подпрограмму, в окне “Немедленный” отобразится:

Значение sampleVar: 42

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

Sub CheckValue()
    Dim valueToCheck As Integer
    valueToCheck = 9
    
    If valueToCheck > 10 Then
        Debug.Print "Значение больше 10."
    ElseIf valueToCheck < 10 And valueToCheck > 0 Then
        Debug.Print "Значение между 1 и 9."
    Else
        Debug.Print "Значение 10 или меньше 1."
    End If
End Sub

Выполнение CheckValue дает следующий результат:

Значение между 1 и 9.

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

Глубокое Погружение

Окно “Немедленный” и метод Debug.Print имеют глубокие корни в истории Visual Basic for Applications, отражая эволюцию практик отладки со временем. Изначально отладка была более текстовым и менее визуальным процессом, при котором разработчики в значительной мере полагались на операторы печати для понимания работы своего кода. С течением времени, по мере развития сред разработки, также развивались инструменты для отладки, включая точки останова, наблюдения и более сложные инструменты профилирования, которые обеспечивают более интерактивное и немедленное понимание поведения кода.

Тем не менее, Debug.Print и окно “Немедленный” по-прежнему чрезвычайно полезны, особенно для быстрых и грязных сессий отладки или при работе с кодом, который сложно прервать (как обработчики событий). Сказано это, важно признать, что полагаться исключительно на операторы печати для отладки в современном программировании может быть менее эффективным по сравнению с использованием интегрированных отладчиков с возможностями точек останова, наблюдения и инспекции стека.

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