Hej på er alla! debug.print skriver till immediate-fönstret och det händer inte vid kompilering. Däremot är msgbox ett fristående kommando så det kommer köras i alla fall. Så här skulle jag göra: Ett annat alternativ är ju att faktiskt inte använda subbar eller funktioner som argument till Debug.Print, iallafall inte om subben/funktionen ändrar tillståndet på objektet. Det är ju ofarligt att anropa Sqrt(a) eftersom den funktionen inte förändrar tillståndet på det anropande objektet och heller inte parametern a. Jo detta vet jag men finns det inte något sätt att stänga av det hela? Skälet till att det är på det viset är att just ditt problem. debug.print
Jag hoppas någon kan svara på min lilla fråga.
Vad kommer det sig att debug.print inte tas bort när jag kompelerar?
Om jag har en lågisk beräkning eller något sådant i debug.print så körs den även om jag har kompilerat.
För att testa så skrev jag
Debug.Print MsgBox("hej")
och dialogboxen kommer även när jag kör den kompilerade versionen.
Någon som vet om det finns någon inställning för detta eller måste jag ta bort att debug innan jag kompilerar
//TobbeSv: debug.print
/PelleSv: debug.print
Jo det vet jag men om man tex skriver detta
<code>
Option Explicit
Dim a As Long
Private Sub Form_Load()
a = 100
Debug.Print Test(a)
Label1.Caption = a
End Sub
Private Function Test(a) As Long
a = a * 100
End Function
</code>
så körs det även om det är kompilerat och i label1 så står det inte 100.
jag avänder ofta funktioner när jag testar i debug för test och vill inte ha med dessa när jag senare kompilerar.
Någon som har en ide eller är det så att jag måste komma i håg att kommentera bort dom?
//TobbeSv: debug.print
<code>
Option Explicit
'Sätt denna till false vid kompilering
#Const DebugMode = True
Dim a As Long
Private Sub Form_Load()
a = 100
#If DebugMode Then
Debug.Print Test(a)
#End If
Label1.Caption = a
End Sub
Private Function Test(a) As Long
a = a * 100
End Function
</code>Sv: debug.print
Om du däremot har en funktion IncreaseValue() som ökar en global (eller modul eller static) variabel med a vars returvärde du vill skriva ut med Debug.Print så får du helt enkelt lägga Debug.Print:en i slutet på funktionen IncreaseValue i st f utanför. Detta för att undvika att du anropar funktionen två gånger, dels i Debug.Print och dels när du verkligen behöver funktionen.
<code>
Private b As Integer
Private Sub MyTestSub()
b=0
' Debug.Print IncreaseValue(5) <--- inte bra
IncreaseValue(5)
End Sub
Private Function IncreaseValue(ByVal value As Integer) As Integer
b=b+a
Debug.Print b ' <--- bättre
IncreaseValue=b
End Function
</code>
/Per Hultqvist.Sv: debug.print
för ofta så har jag recordcount tex i debug.print
Och jag gillar inte att den skall göra den kollen mot objektet varje gång som det kör compilerat
//TobbeSv: debug.print
Fungerar ett program i debug-mode så skall det fungera precis likadant (eventuellt snabbare) i kompilerat läge.
/Niklas Jansson