Zpět na blog
VBA 23. června 2025 6 min čtení

Jak začít programovat makra ve VBA pro Excel – Debug.Print

Praktický průvodce příkazem Debug.Print ve VBA pro Excel. Naučte se ladit makra bez breakpointů — rychle, jednoduše a profesionálně.

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.

Základní použitíVBA
Sub PrvniDebug()
    Dim jmeno As String
    jmeno = "Dušan"
    Debug.Print "Ahoj, " & jmeno
End Sub

Ladění smyčky — kde MsgBox selhává

MsgBox uvnitř smyčky vás donutí 100× klikat OK. Debug.Print zapíše vše najednou.

Výpis hodnot ve smyčceVBA
Sub VypisRadku()
    Dim i As Long
    For i = 1 To 10
        Debug.Print "Řádek " & i & ": " & Cells(i, 1).Value
    Next i
End Sub

Formátovaný výstup s timestampem

Při delším běhu makra je užitečné vidět, kdy která akce proběhla.

Log s časovou značkouVBA
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 Sub

Vlastní 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.

Centralizované logováníVBA
"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 Sub

Kdy 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