Excel VBA Immediate Window - 5 geweldige manieren om het te gebruiken!

'Onmiddellijk venster' kan een handig hulpmiddel zijn om te gebruiken bij het werken met VBA in Excel.

Met het venster Direct kunt u snel dingen doen zoals:

  • Informatie krijgen over Excel-bestanden (zoals het aantal bladen in een werkmap of de naam van de werkmap)
  • Snel debug.Print informatie op
  • Voer een regel code uit in seconden
  • Voer een macro uit (of roep een functie aan)
  • Informatie krijgen over variabelen (of de waarde of variabelen instellen)

Hoewel u het directe venster niet hoeft te gebruiken om met VBA in Excel te werken, kunt u een stuk efficiënter werken als u weet hoe u het goed kunt gebruiken.

In deze zelfstudie behandel ik alles wat u moet weten over het directe venster en hoe u het het beste kunt gebruiken (uitgelegd met voorbeelden).

Laten we beginnen!

Wat is een onmiddellijk venster in Excel VBA?

Immediate Window is een onderdeel van de VB Editor die je kunt gebruiken om wat snelle dingen te doen.

Om u een voorbeeld te geven, als u een werkmap heeft met enkele verborgen werkbladen en u wilt snel het aantal werkbladen weten, dan kunt u dat in een paar seconden doen met het venster Direct.

Immediate Window doet nog veel meer (zoals je later in deze tutorial zult zien). Maar laten we om te beginnen het onmiddellijke venster beschouwen als een hulpmiddel om u te helpen uw werk in Excel VBA te versnellen.

Waar vind je het onmiddellijke venster?

Wanneer u de Excel VB-editor opent, ziet u mogelijk al het directe venster als onderdeel van de VB-editor. En als je het nog niet ziet, kun je het gemakkelijk laten verschijnen.

Hieronder vindt u de stappen om de VB-editor te openen en het onmiddellijke venster zichtbaar te maken:

  1. Klik op het tabblad 'Ontwikkelaar' in het Excel-lint (als u het tabblad Ontwikkelaar niet ziet, klik dan hier om te leren hoe u het kunt krijgen)
  2. Klik in de codegroep op ‘Visual Basic’. Dit opent de VB Editor
  3. Klik in de VB Editor op de optie 'Bekijken' in het menu
  4. Klik op Direct venster. Hierdoor verschijnt het onmiddellijke venster in de VB-editor.

Als u meer vertrouwd bent met snelkoppelingen, vindt u hieronder enkele om de bovenstaande stappen te versnellen:

  • Om de VB-editor te openen - ALT + F11 (dit werkt zelfs als je het tabblad Ontwikkelaar niet in het lint hebt)
  • Om het directe venster te tonen - Controle + G (gebruik deze de VB Editor is open)

Voorbeelden van het gebruik van het directe venster in Excel VBA

Nu u weet waar u het directe venster kunt vinden, laten we enkele geweldige voorbeelden bekijken waar u het kunt gebruiken bij het werken met Excel VBA.

Informatie krijgen over de bestanden/werkmappen

Het ‘Immediate Window’ is een plek waar je vragen kunt stellen over de werkboeken en je krijgt meteen het antwoord.

Stel dat u bijvoorbeeld een werkmap heeft en u wilt weten hoeveel bladen er in de werkmap staan, dan kunt u de onderstaande code in het directe venster typen en op de enter-toets drukken.

?ActiveWorkbook.Sheets.Count

Dit zal u onmiddellijk het totale aantal bladen in de actieve werkmap vertellen.

Dit kan handig zijn wanneer u een werkmap heeft met veel bladen en u deze niet handmatig kunt tellen (of niet wilt), of wanneer u een werkmap heeft met verborgen bladen en u het totaal wilt weten Graaf.

De ? (vraagteken) hoort vóór de zoekopdracht te worden gebruikt, zodat VBA kan begrijpen dat u een vraag stelt. Als u dit vraagteken niet gebruikt, geeft het directe venster u geen details/antwoord.

Dit is een heel eenvoudig voorbeeld waarbij Immediate Window u wat informatie geeft en tijd bespaart.

Hieronder staan ​​nog enkele voorbeelden:

De naam van de actieve werkmap ophalen

?ActiveWorkbook.Name

Om de naam van het actieve blad te krijgen

?Actiefblad.Naam

Om het pad van de werkmap te krijgen (het adres waar het is opgeslagen)

?ActiveWorkbook.Path

Dus als je iets nodig hebt over een object (zoals een werkmap, werkbladen, grafieken, vormen, bereik, enz.), kun je direct venster gebruiken om deze informatie snel te krijgen.

Informatie over Debug.Print ophalen

In Excel VBA wordt Debug.Print gebruikt om de waarde van een variabele direct in het directe venster weer te geven.

De onderstaande code zou bijvoorbeeld onmiddellijk het bericht "Goedemorgen" in het directe venster weergeven.

Sub DisplayMessage() Debug.Print "Good Morning" End Sub

U kunt de Debug.Print-regel in uw code gebruiken om snel wat gegevens in het directe venster te krijgen of om uw code te debuggen.

Als u bijvoorbeeld de namen van alle bladen in een werkmap wilt krijgen, kunt u de onderstaande code gebruiken:

Sub GetSheetNames() Voor elke sh In ActiveWorkbook.Sheets Debug.Print sh.Name Volgende sh End Sub

De bovenstaande code gaat door elk blad in de actieve werkmap en geeft de naam in het directe venster.

Debug.Print is een handige techniek om uw code te debuggen. Als u bijvoorbeeld een lus uitvoert en wilt zien hoe vaak de lus is uitgevoerd, kunt u eenvoudig een Debug.Print-regel plaatsen die eenvoudig de oplopende getallen toont wanneer elke lus wordt uitgevoerd.

Als je gebruikt Debug.Print om de code te debuggen, vergeet niet om deze te verwijderen als u klaar bent.

Voer een macro (of een functie) uit

Hoewel er verschillende manieren zijn om een ​​macro in Excel uit te voeren, is een van de snelle manieren om het directe venster te gebruiken.

Om een ​​macro uit te voeren, hoeft u alleen maar de naam van de macro in het directe venster in te voeren en op de enter-toets te drukken (de cursor moet aan het einde van de macronaam staan ​​om dit te laten werken).

Hieronder ziet u een voorbeeld, waarbij zodra u de naam van de macro invoert in het directe venster, de code wordt uitgevoerd (waarbij de code het bericht "Goedemorgen" in het directe venster weergeeft).

Dit kan handig zijn als u een code heeft en wilt controleren of deze naar verwachting presteert of niet. U kunt een of meer Debug.Print-regels in de code hebben en de macro vanuit het directe venster uitvoeren.

Het toont u direct de waarden in het directe venster en u kunt controleren of alles goed werkt of niet.

U kunt het directe venster ook gebruiken om aangepaste functies uit te voeren.

In het onderstaande voorbeeld wordt bijvoorbeeld een functie gemaakt om te controleren of een getal even of oneven is. U kunt deze functie uitvoeren vanuit het directe venster door de functie te typen met het argument dat nodig is. U moet in dit geval het vraagteken gebruiken omdat u het vraagt ​​om een ​​waarde te retourneren die in de functie is opgeslagen.

Voer een regel code uit (of meerdere regels code)

Met onmiddellijk venster kunt u ook een regel code uitvoeren (of meerdere regels codes).

Het beste hiervan is dat u eenvoudig het directe venster kunt openen, de code kunt uitvoeren en kunt sluiten (in tegenstelling tot een macro die u in een modulevenster moet plaatsen en vervolgens uitvoeren).

Een use-case waarbij dit handig kan zijn, is wanneer u snel alle bladen in de werkmap wilt verbergen.

Hieronder vindt u de code die u in het directe venster kunt plaatsen om alle bladen in de werkmap zichtbaar te maken. Plaats de cursor aan het einde van de regel en zodra u op de enter-toets drukt, worden alle bladen zichtbaar.

Voor elk blad in Thisworkbook.Sheets: Sheet.Visible=True: Next Sheet

Merk op dat hoewel dit eruit ziet als een enkele regel code, het uit drie delen bestaat.

Elk deel wordt gescheiden door een : (dubbele punt), die werkt als een regeleinde. Hierdoor kunt u de For Next-lus in het directe venster gebruiken om door elk blad te gaan en de zichtbare eigenschap te wijzigen in TRUE (waardoor elk verborgen blad zichtbaar wordt).

Variabele waarden ophalen

Als u begint met het maken van complexe VBA-codes, zou u op variabelen moeten vertrouwen om het werk te doen.

Een variabele is iets dat een waarde bevat en deze waarde kan veranderen wanneer de code wordt uitgevoerd. U kunt een direct venster gebruiken om deze variabelewaarden te controleren.

Hieronder staat een eenvoudige code die de som geeft van de eerste 10 positieve gehele getallen en het resultaat in het directe venster toont.

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 To 10 k = k + i Next i Debug.Print i, k End Sub

Zodra u deze code uitvoert, ziet u het onderstaande resultaat in het onmiddellijke venster. Dit vertelt je meteen dat de code goed werkt en het verwachte resultaat geeft.

Als het niet de verwachte resultaten geeft, kunt u de code debuggen.

Veel mensen gebruiken een berichtvenster tijdens het debuggen van de code. Hoewel het prima werkt, vind ik het een beetje opdringerig omdat het me naar de Excel-werkmap brengt en een berichtvenster toont. Aan de andere kant is het gebruik van onmiddellijk venster om fouten op te sporen een stuk soepeler en houdt me in de Visual Basic-editor zelf.

Opmerking: als je met een complexe code werkt en meerdere variabelen hebt die je moet bijhouden, kun je beter een kijkvenster gebruiken. Met een kijkvenster kunt u een variabele toevoegen en vervolgens kunt u zien hoe die variabele in realtime verandert (of terwijl u door de code stapt).

Variabelewaarde instellen bij foutopsporing

Dit is een beetje geavanceerd gebruik van het Immediate-venster, maar als u het gebruikt, kan het een enorme tijdbesparing opleveren bij het debuggen van de code.

U kunt het directe venster gebruiken om de waarde van een variabele in te stellen terwijl u de code uitvoert in de foutopsporingsmodus (waar u een breekpunt instelt zodat de code niet volledig wordt uitgevoerd - maar tot op een specifieke regel).

Als u bijvoorbeeld een lus heeft die 10 keer loopt en u wilt controleren wat er gebeurt als de lus voor de 8e keer wordt uitgevoerd, hoeft u niet zeven keer door de lus te stappen om bij de achtste herhalingen te komen. U kunt eenvoudig een breekpunt voor de lus toevoegen en de lusvariabele wijzigen in 8. Als u nu de code uitvoert, laat het u zien wat er gebeurt als de lussen voor de 8e keer worden uitgevoerd.

Dit wordt een stuk handiger wanneer u complexe codes schrijft en specifieke lussen wilt debuggen.

Stel dat u een code heeft zoals hieronder weergegeven:

Sub UnhideSheets() For i = 1 To Worksheets.Count Debug.Print Sheets(i).Name Volgende i End Sub

De bovenstaande code vermeldt eenvoudig de bladnamen van alle bladen in de werkmap in het directe venster.

Als u niet de namen van alle bladen wilt weergeven, maar alleen de bladen na het 10e blad, kunt u een breekpunt in de tweede regel van de lus plaatsen (zodat er niets na die regel wordt uitgevoerd) en vervolgens de variabele 'i' tot 11.

Om de variabelenaam in het directe venster te wijzigen, voert u de volgende regel in:

ik=11

Dit zorgt ervoor dat de eerste 10 keer van de lus worden genegeerd en uw variabelewaarde wordt ingesteld op 11.

Het onmiddellijke venster vastzetten/loskoppelen

U kunt direct een venster laten koppelen aan de VB-editor - wat betekent dat het op één plaats in de VB-editor blijft en ermee wordt verplaatst en vergroot.

En u kunt het ook loskoppelen, wat betekent dat het onafhankelijk is van de VB-editor en kan worden verplaatst als een op zichzelf staand venster.

Hieronder ziet u hoe u de docking-instellingen voor het directe venster kunt wijzigen:

  1. Klik op de optie Extra in het menu in de VB Editor
  2. Klik op 'Opties'
  3. Klik in het dialoogvenster Opties op het laatste tabblad - Docking
  4. Vink de optie Direct venster aan om het dockable te maken en schakel het uit om het un-dockable te maken.
  5. Klik OK

Als alternatief, als het directe venster zichtbaar is, kunt u ook met de rechtermuisknop klikken en de dockbare eigenschap ervan wijzigen.

Dockable betekent dat het directe venster een onderdeel van het bestaande venster zou worden door zichzelf op bepaalde plaatsen te plaatsen, zoals links van het venster of onderaan. Hierdoor kunnen de gekoppelde vensters samen bewegen en groter worden.

Onmiddellijk venster wordt niet weergegeven - hier zijn enkele manieren om het te krijgen

Er kunnen meerdere redenen zijn waarom dit gebeurt.

De meest voorkomende reden dat u niet direct een venster ziet, is dat het niet zichtbaar is gemaakt. Het is mogelijk niet standaard zichtbaar en om het te laten verschijnen, moet u naar de optie Weergeven in het menu gaan en op de optie Direct venster klikken. Dit zorgt ervoor dat het zichtbaar is in de VB Editor.

U kunt ook het toetsenbord Control + G gebruiken om het onmiddellijke venster te laten verschijnen. Gebruik deze sneltoets terwijl u in de VB Editor bent.

Een andere reden waarom u het directe venster mogelijk niet ziet, is dat het is geminimaliseerd en nu zo gesloten is dat u het niet kunt zien (zoals hier gemeld). Doe gewoon een snelle scan en kijk of je ergens een klein blauw/rood vierkantje op de loer ziet liggen. U kunt de cursor eroverheen bewegen en u ziet een optie om het formaat te wijzigen.

Als je het directe venster helemaal niet kunt zien, is hier iets dat voor veel mensen heeft gewerkt (dit gebeurt vaak vanwege veranderingen in de schermresolutie):

  1. Open de VB-editor
  2. Druk op Ctrl-G om de focus op het directe venster te geven (of klik op de optie Bekijken in het menu en klik vervolgens op direct venster)
  3. Houd de ALT-toets ingedrukt en druk vervolgens op de spatiebalk. Dit toont drop-down opties voor het directe venster.
  4. Druk op M (voor Verplaatsen)
  5. Gebruik de pijltjestoetsen om het venster te verplaatsen
  6. Als je eenmaal weet waar het is, maak het dan groter

Ik heb dit van een forum hier en merkte ook dat hetzelfde werd voorgesteld als een oplossing voor het onmiddellijke VBA-venster dat niet verschijnt.

Een ander ding dat u kunt proberen, is het onmiddellijke venster ontkoppelbaar maken (ga naar Extra -> Opties -> Docking en schakel de optie voor direct venster uit). Dit heeft voor sommige mensen gewerkt.

Misschien vind je de volgende artikelen ook leuk:

  • Excel persoonlijke macro-werkmap | Opslaan en gebruiken van macro's in alle werkmappen
  • Excel VBA-loops: voor volgende, doe terwijl, doe tot, voor elk (met voorbeelden)
  • Werken met werkbladen met Excel VBA
  • Een door de gebruiker gedefinieerde functie (UDF) maken in Excel VBA

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave