Když začínáte s VBA, první překážkou není psaní kódu — je jí ladění. Debug.Print je nejjednodušší nástroj, který vám okamžitě ukáže, co se v makru děje. Žádné breakpointy, žádné MsgBox-y, které vám zastaví běh programu.
Co je Debug.Print a kde najdete výstup
Debug.Print zapíše libovolnou hodnotu do okna Immediate v editoru VBA. Okno otevřete klávesovou zkratkou Ctrl + G nebo přes menu View → Immediate Window.
Sub PrvniDebug()
Dim jmeno As String
jmeno = "Dušan"
Debug.Print "Ahoj, " & jmeno
End SubLadění smyčky — kde MsgBox selhává
MsgBox uvnitř smyčky vás donutí 100× klikat OK. Debug.Print zapíše vše najednou.
Sub VypisRadku()
Dim i As Long
For i = 1 To 10
Debug.Print "Řádek " & i & ": " & Cells(i, 1).Value
Next i
End SubFormátovaný výstup s timestampem
Při delším běhu makra je užitečné vidět, kdy která akce proběhla.
Sub LogSCasem()
Dim t As Date
t = Now
Debug.Print Format(t, "hh:nn:ss") & " | Start zpracování"
"tok-c">' ... vaše operace ...
Debug.Print Format(Now, "hh:nn:ss") & " | Hotovo (" & _
DateDiff("s", t, Now) & " s)"
End SubVlastní logovací funkce pro větší projekty
U rozsáhlejších maker se vyplatí udělat malou pomocnou proceduru. Snadno pak logování přepnete za jeden řádek vypínačem.
"tok-c">' Vypínač logování pro celý projekt
Public Const LOG_ENABLED As Boolean = True
Public Sub Log(ByVal msg As String)
If Not LOG_ENABLED Then Exit Sub
Debug.Print Format(Now, "hh:nn:ss") & " | " & msg
End Sub
Sub Priklad()
Log "Start"
"tok-c">' ...
Log "Konec"
End SubKdy Debug.Print nestačí
- Když potřebujete krokovat řádek po řádku — použijte F8 a breakpoint (F9).
- Když ladíte chyby u koncového uživatele — log raději zapište do souboru.
- Když výstup obsahuje tisíce řádků — okno Immediate má limit historie (~200 řádků dle verze).
Často kladené dotazy
Jak otevřu okno Immediate ve VBA editoru?+
Stiskněte Ctrl + G v editoru VBA, nebo zvolte View → Immediate Window. Okno se zobrazí ve spodní části editoru.
Vidí výstup Debug.Print koncový uživatel makra?+
Ne. Debug.Print zapisuje pouze do okna Immediate v editoru VBA. Pro logování u uživatele zapisujte do textového souboru nebo do skrytého listu.
Zpomalí Debug.Print spuštění makra?+
Velmi mírně. Při tisících iterací výpis může mít drobný dopad, ale obvykle zanedbatelný oproti přínosu pro ladění.
Jaký je rozdíl mezi Debug.Print a MsgBox?+
MsgBox zastaví běh makra a čeká na potvrzení uživatelem — nevhodné ve smyčkách. Debug.Print pouze zapíše hodnotu do Immediate okna a makro pokračuje dál.
Autor
Dušan Kahánek
VBA / Power BI / Microsoft 365 specialista
