Zoeken…


Syntaxis

  • Debug.Print (string)
  • Stop Stop

Debug.Print

Om een lijst van de beschrijvingen van de foutcodes naar het directe venster af te drukken, geeft u dit door aan de functie Debug.Print :

Private Sub ListErrCodes()
    Debug.Print "List Error Code Descriptions"
    For i = 0 To 65535
        e = Error(i)
        If e <> "Application-defined or object-defined error" Then Debug.Print i & ": " & e
    Next i
End Sub

U kunt het directe venster weergeven door:

  • V iew | selecteren Ik regel Windows vanuit de menubalk
  • Gebruik de sneltoets Ctrl-G

Hou op

De opdracht Stop onderbreekt de uitvoering wanneer deze wordt aangeroepen. Vanaf daar kan het proces worden hervat of stap voor stap worden uitgevoerd.

Sub Test()
    Dim TestVar as String
    TestVar = "Hello World"
    Stop                    'Sub will be executed to this point and then wait for the user
    MsgBox TestVar
End Sub

Direct venster

Als u een regel macrocode wilt testen zonder een hele sub uit te voeren, kunt u opdrachten rechtstreeks in het venster Direct typen en op ENTER om de regel uit te voeren.

Om de uitvoer van een lijn te testen, kunt u deze voorafgaan met een vraagteken ? om rechtstreeks naar het directe venster af te drukken. Als alternatief kunt u ook de print gebruiken om de uitvoer af te drukken.

Druk in Visual Basic Editor op CTRL + G om het venster Direct te openen. Om uw huidig geselecteerde blad te hernoemen naar "Voorbeeldblad", typt u het volgende in het venster Direct en drukt u op ENTER

   ActiveSheet.Name = "ExampleSheet"

Om de naam van het huidig geselecteerde blad rechtstreeks in het venster Direct af te drukken

? ActiveSheet.Name
ExampleSheet

Deze methode kan erg handig zijn om de functionaliteit van ingebouwde of door de gebruiker gedefinieerde functies te testen voordat ze in code worden geïmplementeerd. Het onderstaande voorbeeld laat zien hoe het venster Direct kan worden gebruikt om de uitvoer van een functie of een reeks functies te testen om een verwachte te bevestigen.

'In this example, the Immediate Window was used to confirm that a series of Left and Right 
'string methods would return the desired string

'expected output: "value"
print Left(Right("1111value1111",9),5) ' <---- written code here, ENTER pressed
value                                  ' <---- output

Het directe venster kan ook worden gebruikt om de toepassing, werkmap of andere benodigde eigenschappen in te stellen of opnieuw in te stellen. Dit kan handig zijn als u Application.EnableEvents = False in een subroutine die onverwacht een fout veroorzaakt, waardoor deze wordt gesloten zonder de waarde op True te resetten (wat frustrerend en onverwachte functionaliteit kan veroorzaken. In dat geval kunnen de opdrachten direct worden getypt naar het directe venster en voer uit:

? Application.EnableEvents       ' <---- Testing the current state of "EnableEvents"
False                            ' <---- Output
Application.EnableEvents = True  ' <---- Resetting the property value to True
? Application.EnableEvents       ' <---- Testing the current state of "EnableEvents"
True                             ' <---- Output

Voor meer geavanceerde foutopsporingstechnieken kan een dubbele punt : worden gebruikt als scheidingsteken voor regels. Dit kan worden gebruikt voor expressies met meerdere regels zoals looping in het onderstaande voorbeeld.

x = Split("a,b,c",","): For i = LBound(x,1) to UBound(x,1): Debug.Print x(i): Next i '<----Input this and press enter
a '<----Output
b '<----Output
c '<----Output

Gebruik de timer om knelpunten in prestaties te vinden

De eerste stap bij het optimaliseren voor snelheid is het vinden van de langzaamste delen van code. De Timer VBA-functie retourneert het aantal seconden dat is verstreken sinds middernacht met een precisie van 1 / 256ste van een seconde (3.90625 milliseconden) op pc's met Windows. De VBA-functies Now en Time zijn slechts tot op de seconde nauwkeurig.

Dim start As Double       ' Timer returns Single, but converting to Double to avoid 
start = Timer             ' scientific notation like 3.90625E-03 in the Immediate window
' ... part of the code
Debug.Print Timer - start; "seconds in part 1" 

start = Timer
' ... another part of the code
Debug.Print Timer - start; "seconds in part 2"

Een breekpunt toevoegen aan uw code

U kunt eenvoudig een breekpunt toevoegen aan uw code door op de grijze kolom links van de regel van uw VBA-code te klikken waar u wilt dat de uitvoering stopt. Er verschijnt een rode stip in de kolom en de breekpuntcode is ook rood gemarkeerd.

U kunt meerdere breekpunten toevoegen in uw code en de uitvoering wordt hervat door op het pictogram 'spelen' in uw menubalk te drukken. Niet alle code kan een breekpunt zijn als variabele definitielijnen, de eerste of laatste regel van een procedure en commentaarregels kunnen niet als breekpunt worden geselecteerd.

voer hier de afbeeldingsbeschrijving in

Debugger Locals-venster

Het venster Locals biedt eenvoudige toegang tot de huidige waarde van variabelen en objecten binnen het bereik van de functie of subroutine die u uitvoert. Het is een essentieel hulpmiddel voor het opsporen van fouten in uw code en het doorlopen van wijzigingen om problemen te vinden. Hiermee kunt u ook eigenschappen verkennen waarvan u nog niet wist dat ze bestonden.

Neem het volgende voorbeeld,

Option Explicit
Sub LocalsWindowExample()
    Dim findMeInLocals As Integer
    Dim findMEInLocals2 As Range
    
    findMeInLocals = 1
    Set findMEInLocals2 = ActiveWorkbook.Sheets(1).Range("A1")
End Sub

Klik in de VBA-editor op Beeld -> Lokaal venster

Waar het locals-menu zich in het venster bevindt

Door vervolgens door de code te bladeren met behulp van F8 nadat we in de subroutine hebben geklikt, zijn we gestopt voordat we findMeinLocals toewijzen. Hieronder zie je dat de waarde 0 is --- en dit zou worden gebruikt als je er nooit een waarde aan zou toewijzen. Het bereikobject is 'Niets'.

Bij deze stap zijn de variabelen niets ...

De variabelen tonen is niets.

Als we stoppen vlak voordat de subroutine eindigt, kunnen we de definitieve waarden van de variabelen zien.

Stel een foutopsporingspunt in ... als je wilt

We kunnen findMeInLocals zien met een waarde van 1 en het type Integer, en FindMeInLocals2 met een type Bereik / Bereik. Als we op het + -teken klikken, kunnen we het object uitbreiden en de eigenschappen ervan bekijken, zoals aantal of kolom.

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow