Introduktion till Debug.Print och MsgBox
Svep för att visa menyn
Båda låter dig se ett värde medan din kod körs, men de är avsedda för två olika målgrupper, och att blanda ihop dem är en vanlig vana i början som är värd att medvetet rätta till.
Debug.Print
Debug.Print [outputlist]
outputlist— ett eller flera uttryck att skriva ut, valfritt sammanfogade med;eller&;- Inga parenteser, inget returvärde — det är ett uttalande, inte en funktion;
- Skriver alltid till Immediate Window.
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
Parenteser runt MsgBox-argument används endast när du fångar ett returvärde. Används det som en vanlig sats (ingen tilldelning), är parenteser faktiskt ett misstag — MsgBox("Done.") körs fortfarande, men så snart du lägger till ett andra argument utan tilldelning, ger MsgBox ("Continue?", vbYesNo) ett syntaxfel. Ta bort parenteserna för satsform, lägg till dem endast när du skriver result = MsgBox(...).
Vad varje används till egentligen
Ett enkelt test: fråga vem meddelandet faktiskt är till för. Om svaret är "mig, medan jag skriver och testar den här koden," använd Debug.Print — det kostar inget att ha kvar tillfälligt och inget att ta bort senare, eftersom det aldrig visas för någon som använder den färdiga arbetsboken. Om svaret är "personen som kör det här makrot just nu och behöver se detta," använd MsgBox — en bekräftelseruta eller ett "klart"-meddelande hör till denna kategori, eftersom de är en del av den färdiga upplevelsen snarare än ett felsökningshjälpmedel.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal