Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Einführung in Debug.Print und MsgBox | Einführung in VBA und das Excel-Objektmodell
Excel VBA für Geschäftsautomatisierung

Einführung in Debug.Print und MsgBox

Swipe um das Menü anzuzeigen

Beide ermöglichen es, einen Wert während der Codeausführung anzuzeigen, sind jedoch für unterschiedliche Zielgruppen konzipiert. Das Verwechseln dieser beiden Methoden ist eine häufige Anfängerangewohnheit, die bewusst korrigiert werden sollte.

Debug.Print

Debug.Print [outputlist]
  • outputlist — eine oder mehrere Ausdrücke, die ausgegeben werden, optional verbunden mit ; oder &;
  • Keine Klammern, kein Rückgabewert — es handelt sich um eine Anweisung, nicht um eine Funktion;
  • Gibt immer in das Direktfenster aus.
Debug.Print total            ' one value
Debug.Print "Total: "; total ' semicolon — adds a space between items
Debug.Print "Total: " & total' & — concatenates with no extra space

MsgBox

MsgBox(prompt, [buttons], [title], [helpfile], [context])
MsgBox "Done."                                        ' statement form — no parentheses needed
result = MsgBox("Continue?", vbYesNo, "Confirm")       ' function form — parentheses required
Note
Hinweis

Klammern um die Argumente von MsgBox werden nur verwendet, wenn ein Rückgabewert erfasst wird. Wird MsgBox als einfache Anweisung (ohne Zuweisung) genutzt, sind Klammern tatsächlich ein Fehler — MsgBox("Done.") funktioniert zwar, aber sobald ein zweites Argument ohne Zuweisung hinzugefügt wird, führt MsgBox ("Continue?", vbYesNo) zu einem Syntaxfehler. Klammern in der Anweisungsform weglassen, nur bei result = MsgBox(...) verwenden.

Zweck der jeweiligen Form

Ein einfacher Test: Fragen Sie sich, für wen die Nachricht eigentlich bestimmt ist. Wenn die Antwort lautet: "Für mich, während ich diesen Code schreibe und teste", dann verwenden Sie Debug.Print — es kostet nichts, es vorübergehend zu belassen, und es ist leicht zu entfernen, da es für niemanden sichtbar ist, der die fertige Arbeitsmappe nutzt. Wenn die Antwort lautet: "Für die Person, die dieses Makro gerade ausführt und dies sehen muss", dann verwenden Sie MsgBox — eine Bestätigungsabfrage oder eine "Fertig"-Meldung gehören in diese Kategorie, da sie Teil des fertigen Nutzererlebnisses und kein Debugging-Hilfsmittel sind.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Einführung in Debug.Print und MsgBox

Beide ermöglichen es, einen Wert während der Codeausführung anzuzeigen, sind jedoch für unterschiedliche Zielgruppen konzipiert. Das Verwechseln dieser beiden Methoden ist eine häufige Anfängerangewohnheit, die bewusst korrigiert werden sollte.

Debug.Print

Debug.Print [outputlist]
  • outputlist — eine oder mehrere Ausdrücke, die ausgegeben werden, optional verbunden mit ; oder &;
  • Keine Klammern, kein Rückgabewert — es handelt sich um eine Anweisung, nicht um eine Funktion;
  • Gibt immer in das Direktfenster aus.
Debug.Print total            ' one value
Debug.Print "Total: "; total ' semicolon — adds a space between items
Debug.Print "Total: " & total' & — concatenates with no extra space

MsgBox

MsgBox(prompt, [buttons], [title], [helpfile], [context])
MsgBox "Done."                                        ' statement form — no parentheses needed
result = MsgBox("Continue?", vbYesNo, "Confirm")       ' function form — parentheses required
Note
Hinweis

Klammern um die Argumente von MsgBox werden nur verwendet, wenn ein Rückgabewert erfasst wird. Wird MsgBox als einfache Anweisung (ohne Zuweisung) genutzt, sind Klammern tatsächlich ein Fehler — MsgBox("Done.") funktioniert zwar, aber sobald ein zweites Argument ohne Zuweisung hinzugefügt wird, führt MsgBox ("Continue?", vbYesNo) zu einem Syntaxfehler. Klammern in der Anweisungsform weglassen, nur bei result = MsgBox(...) verwenden.

Zweck der jeweiligen Form

Ein einfacher Test: Fragen Sie sich, für wen die Nachricht eigentlich bestimmt ist. Wenn die Antwort lautet: "Für mich, während ich diesen Code schreibe und teste", dann verwenden Sie Debug.Print — es kostet nichts, es vorübergehend zu belassen, und es ist leicht zu entfernen, da es für niemanden sichtbar ist, der die fertige Arbeitsmappe nutzt. Wenn die Antwort lautet: "Für die Person, die dieses Makro gerade ausführt und dies sehen muss", dann verwenden Sie MsgBox — eine Bestätigungsabfrage oder eine "Fertig"-Meldung gehören in diese Kategorie, da sie Teil des fertigen Nutzererlebnisses und kein Debugging-Hilfsmittel sind.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5
some-alt