Hoe een macro opnemen in excel?
BELANGRIJKSTE PUNTEN
- Een macro opnemen betekent dat u de acties die u uitvoert vastlegt in Excel.
- U moet de macrorecorder gebruiken om een macro op te nemen.
- De macrorecorder genereert de code achterin terwijl u de activiteit uitvoert.
- In Excel kunt u niet pauzeren tijdens het opnemen van een macro.
- De macrorecorder creëert geen perfecte code, dus zorg ervoor dat u uw code na het opnemen opschoont.
Deze gids helpt u alle aspecten van het opnemen van een macro te leren. U leert ook hoe u de code kunt opschonen nadat u deze hebt opgeslagen.
Dus laten we beginnen.
Wat is macrorecorder?
Excel Macro Recorder is een tool die (niet alle) acties die u in Excel uitvoert, kan vastleggen en daarvoor code genereert . Voer één keer een specifieke taak uit, en er wordt daarvoor een macro gegenereerd, en de volgende keer moet u die code uitvoeren, in plaats van die taak handmatig uit te voeren.
Denk aan een videocamera, deze werkt zo en genereert code voor de activiteit die je uitvoert.
U moet begrijpen dat er momenten kunnen zijn waarop een macrorecorder geen code kan leveren. Het is echter nog steeds een geweldige manier om de code te leren als u deze niet kent.
U vindt de macrorecorderknop op het tabblad Ontwikkelaars .
Het gebruik van VBA voor het programmeren in Excel is een van de geavanceerde vaardigheden in Excel en om aan de slag te gaan met VBA moet u bedreven zijn in het opnemen van macro’s.
Plannen voordat u een macro opneemt
Als je een video wilt opnemen, moet je eerst wat planning maken, zoals het maken van een script, het zorgen voor de juiste verlichting, enz.
Op dezelfde manier vereist het opnemen van een macro enige planning.
Het punt is dat je geen code wilt krijgen voor de activiteit die je niet wilt uitvoeren terwijl je de opgenomen macro opnieuw gebruikt.
De beste manier om dit te doen is door de stappen op te schrijven die u moet voltooien en deze vervolgens tijdens het opnemen te volgen.
Hier zullen we een macro opnemen die de volgende opmaak op de geselecteerde cel kan toepassen:
- Letterkleur: rood
- Lettergrootte: 12
- Letterstijl: Verdena
- Lettertype tekst: vet
Zoals ik al zei, planning is essentieel, en voordat we deze macro opnemen, is er één ding waar we voor moeten zorgen, en dat is het selecteren van de doelcel voordat we beginnen met opnemen.
Zoals ik al zei, planning is essentieel, en voordat we deze macro opnemen, is er één ding waar we voor moeten zorgen, en dat is het selecteren van de doelcel voordat we beginnen met opnemen.
De reden is dat als we een cel selecteren tijdens het opnemen van de macro, deze selectie ook wordt opgeslagen.
Dus wanneer u deze macro opnieuw uitvoert, wordt die specifieke cel geselecteerd om alle opmaak erop toe te passen. Maar wat we willen is de opmaak toepassen op de cel, die actief is (die geselecteerd is).
Stappen voor het opnemen van een macro met Macro Recorder
Om een MACRO in Excel op te slaan, kunt u de volgende stappen volgen:
- Selecteer eerst cel A4 (dit is de cel waar we de opmaak zullen toepassen en onze macro zullen opnemen).
- Ga daarna naar het tabblad “Ontwikkelaars” en voordat u op de knop “OPSLAAN” drukt, schakelt u de relatieve referentie in (we zullen hier binnen een paar minuten meer over leren).
- Druk op de opnameknop.
- En op het moment dat u erop klikt, krijgt u een dialoogvenster waarin u enkele details kunt invullen over de macro die u gaat opnemen (ja, we moeten deze invullen).
- Macronaam: “HighlightCell”.
- Sneltoets: Druk op Shift+H om de sneltoets Control+Shift+H in te stellen.
- Macro opslaan in: Selecteer Persoonlijke macromap.
- Beschrijving: Deze macro past een rode kleur, lettergrootte 12, Verdana-letterstijl toe en maakt het lettertype vetgedrukt.
- Klik ten slotte op OK.
- Op dit punt geeft Excel een ster om alles op te slaan (u kunt het pictogram op de statusbalk zien met de tekst “Er wordt een macro opgenomen, klik om de opname te stoppen”).
- Pas nu dus de vier opmaak toe die we hebben gekozen.
- Letterkleur: rood
- Lettergrootte: 12
- Letterstijl: Verdena
- Lettertype tekst: vet
- Zodra je dat hebt gedaan, ga je terug naar het tabblad Ontwikkelaar en klik je op “Opname stoppen” of je kunt de opname ook stoppen vanuit de statusbalk waar staat “klik hier om de opname te stoppen”. registratie”.
Gefeliciteerd! Je hebt het gedaan en op dit punt heb je een macro opgeslagen in je werkmap, maar nu is het volgende dat je het moet begrijpen.
Hoe Macro Recorder code genereert
De macrorecorder genereert achterin een code voor je terwijl je de activiteiten uitvoert.
Om dit te begrijpen, moet je eerst de code zien. Om dit te doen, opent u de Visual Basic-editor en gaat u naar het tabblad Ontwikkelaars ➜ Visual Basic Editor.
En open vervolgens module1 waar u uw code hebt opgeslagen.
In het codevenster ziet u de volledige code die door de macrorecorder is gegenereerd, samen met alle door u ingevoerde gegevens.
Zoals u kunt zien, staan de macronaam, sneltoets en beschrijving vóór de code.
Laten we nu de code begrijpen (zoals ik al eerder zei, macrorecorder creëert geen perfecte code, dus je moet deze elke keer opschonen, en dat zullen we in het volgende deel leren).
U hebt alle vier de activiteiten voltooid en de macrorecorder heeft de vierdelige code gegenereerd.
- In het eerste deel zegt de code dat de letterkleur van de geselecteerde cel rood moet zijn, en daarvoor wordt een numerieke waarde gebruikt.
- Het tweede deel van de code geeft aan dat de lettergrootte van de geselecteerde cellen “12” moet zijn.
- En in het derde deel staat dat de lettertypestijl “Verdana” moet zijn.
- Ten slotte staat er in het vierde deel dat het lettertype van de geselecteerde cel vetgedrukt moet zijn.
Schone opgenomen macro
Op dit punt hebt u uw eerste macro opgenomen en weet u hoe deze code wordt gegenereerd. Maar u moet de code die u in de module heeft, opruimen.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub
Als je goed kijkt, is dat veel langer dan de activiteiten die hij kan doen. Er zijn veel eigenschappen in deze code opgenomen die niet vereist zijn.
Niet alleen met deze code, elke keer dat u een macro opneemt, moet u deze elke keer opruimen.
Maar voordat u begint met het opschonen van die code, moet u de vier activiteiten onthouden die u hebt uitgevoerd en waarvoor u code in uw module nodig heeft:
- Letterkleur: rood
- Lettergrootte: 12
- Letterstijl: Verdena
- Lettertype tekst: vet
Laten we de coderegels identificeren die deze vier activiteiten uitvoeren.
Nu heb je de coderegels geïdentificeerd die de daadwerkelijke activiteiten uitvoeren die je hebt uitgevoerd, en we hebben ook deze vierdelige code.
Het is tijd om de code op te schonen en alle ongewenste regels te verwijderen. Volg onderstaande stappen.
- In het EERSTE deel heeft u de regelcode nodig die de RODE lettertypekleur toepast, dus de eigenschap “TintAndShade” heeft deze niet nodig.
- In het TWEEDE deel hebben we nu de lettergrootte nodig, niet alle andere eigenschappen, dus verwijder deze.
- Daarna hebben we in het DERDE deel de eigenschap fontnaam nodig, dus verwijder alle andere eigenschappen.
- In deel VIER heb je maar één regel code, namelijk om het lettertype vetgedrukt te maken.
Op dit punt ziet de code er zo uit, wat veel lager is dan de code die door de macrorecorder wordt gegenereerd.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub
Maar je kunt nog steeds meer doen.
Als je goed naar de code kijkt, wordt er vier keer “With Selection.Font” gebruikt, maar aangezien je voor alle vier de eigenschappen naar hetzelfde object verwijst, kun je het dus één keer gebruiken.
De uiteindelijke code zal dus zijn:
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub
Wanneer u deze code uitvoert, worden dezelfde activiteiten uitgevoerd die u hebt vastgelegd.
Wat heb je gedaan?
In de nieuwe code heb je alleen coderegels die de activiteiten uitvoeren die je nodig hebt.
Het punt dat u hier moet begrijpen is dat er bij elk object altijd eigenschappen zijn, en wanneer de macrorecorder opneemt, voegt hij al die eigenschappen toe aan dat object, zelfs als u ze niet gebruikt.
Daarom moet u al deze eigenschappen uit de code verwijderen.
En het andere is dat zelfs als u slechts één object in uw code gebruikt, de macrorecorder er keer op keer naar verwijst wanneer u verschillende activiteiten uitvoert en daarom hebt u ‘Met selectie. Lettertype’ één keer gebruikt en alle eigenschappen eronder toegevoegd. .
Om de door de macrorecorder gegenereerde code op te schonen, moet u in alle situaties de daadwerkelijke coderegels identificeren die de activiteiten uitvoeren die u nodig hebt, en de rest verwijderen.
Bij het opschonen van opgeslagen macrocode kunt u het beste stap voor stap fouten in de code opsporen.
Lees het
- Open de VBA-editor en het Excel-venster naast elkaar en druk vervolgens op F8 om de code stap voor stap uit te voeren.
- Omdat u het Excel-venster aan de zijkant geopend heeft, kunt u zien welke coderegel de activiteit uitvoert.
- En zodra u de code heeft geïdentificeerd die u nodig heeft, kunt u de code verwijderen, wat niet nodig is.
Geef een macro een naam
Elke keer dat u een macro opneemt, is het noodzakelijk om die macro een naam te geven, maar er zijn een paar regels waaraan een naam moet voldoen:
- De naam van een macro kan maximaal 80 tekens lang zijn.
- U kunt geen spaties, leestekens of speciale tekens gebruiken.
- Het moet beginnen met een letter.
Afgezien van deze regels zijn er een paar woorden die door VBA niet als naam mogen worden gebruikt.
Aan de andere kant is het essentieel om een betekenisvolle naam te gebruiken in plaats van standaardnamen zoals Macro1 of Test1.
Omdat u geen spaties in een macronaam kunt gebruiken, kunt u een onderstrepingsteken gebruiken of de eerste letter van elk woord met een hoofdletter schrijven om de leesbaarheid te vergroten.
De opgenomen macro opslaan
Voordat u een macro opneemt, moet u opgeven waar u deze wilt opslaan. Hiervoor heeft u drie opties:
- Nieuwe werkmap : u kunt deze optie selecteren als u uw macro in een nieuwe werkmap wilt opslaan.
- Deze werkmap : Door deze optie te selecteren, kunt u de macro in de huidige werkmap opslaan.
- Persoonlijke macrowerkmap : Met deze optie heeft u toegang tot macro’s uit alle werkmappen.
Relatieve referentie
Toen ik de bovenstaande macro opnam, zei ik dat je “Gebruik relatieve referenties” moest selecteren voordat je op de knop “Opname starten” drukte.
Wanneer u in Excel een macro opneemt, gebruikt Excel standaard “Absolute Referentie”. U kunt dit echter wijzigen voordat u een macro opneemt.
Het punt is dat het gebruik van relatieve verwijzingen cruciaal is als je wilt dat een macro de vastgelegde activiteit ergens in het werkblad uitvoert.
Om u het verschil tussen de twee referentiemodi te laten begrijpen, wil ik dat u de activiteit op twee verschillende manieren vastlegt.
- Selecteer eerst cel A1 en begin met het opnemen van een macro (zonder “Gebruik relatieve referentie”) en selecteer vervolgens cel E5 .
- U krijgt onderstaande code per macrorecorder:
Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
- Selecteer opnieuw cel A1, schakel ‘Gebruik relatieve referentie’ in en registreer dezelfde activiteit (selecteer cel E5).
- Maar op dit moment is de code die je hebt anders:
Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub
Je hebt deze twee codes opgenomen, waarbij dezelfde activiteit werd uitgevoerd, maar met verschillende referentiemodi. RECHTS?
De eerste macrocode is vrij eenvoudig te begrijpen; er staat dat je cel E5 moet selecteren.
En als u deze macro uitvoert, doet deze hetzelfde: cel E5 selecteren, welke cel u op dit punt ook hebt geselecteerd.
Aan de andere kant zegt de tweede macrocode iets anders, en als u een andere cel selecteert voordat u deze code uitvoert, wordt een andere cel geselecteerd.
Waarvoor?
Toen u deze macro opnam, was de actieve cel A1 en vervolgens selecteerde u E5, vier cellen lager en vier cellen rechts van cel A1.
Omdat u deze macro met een relatieve verwijzing hebt opgeslagen, wordt hierdoor altijd de cel geselecteerd, die zich vier cellen lager en vier cellen rechts van de actieve cel bevindt.
Stel dat de actieve cel D4 is, dan wordt cel H8 geselecteerd, vier cellen naar beneden en vier cellen naar rechts.
U kunt de referentie op elk moment wijzigen, zelfs midden in de opname.
Macro-pauze
Helaas kunt u in Excel een macro niet onderbreken terwijl deze wordt opgenomen. Dit kan in Microsoft Word, maar niet in Excel.
Als u een macro opneemt waarbij u veel activiteiten moet uitvoeren, kunt u deze het beste in delen opnemen, zodat er minder kans op fouten is.
Beperkingen voor macrorecorders
Ja, er zijn enkele beperkingen bij de macrorecorder. Er zijn veel dingen die u kunt doen met VBA-code, maar de macrorecorder kan niet alle activiteiten opnemen.
- Kan geen aangepaste functie maken : met VBA kunt u een aangepaste functie maken die u in het werkblad kunt gebruiken, maar dit is niet mogelijk bij het opnemen van een macro.
- Kan ingebouwde functies niet gebruiken : VBA heeft zijn eigen functies ( VBA-functies ), maar u kunt deze niet gebruiken met de macrorecorder.
- Kan voorwaarden niet testen : wanneer u een macro opneemt, kunt u de VBA IF Then Else-instructie niet gebruiken om de voorwaarden te controleren.
- Kan niet herhalen : in VBA kunt u lusinstructies gebruiken tijdens het schrijven van code, maar dit is niet mogelijk met de macrorecorder.
- Kan geen activiteit uitvoeren met object : Wanneer u een macro opneemt, kunt u geen actie uitvoeren zonder daadwerkelijk een object te selecteren. Als u bijvoorbeeld tekst uit een bepaalde cel vetgedrukt wilt maken, moet u eerst die cel selecteren.
Is het de moeite waard om een macrorecorder te gebruiken?
Ik durf te wedden dat je deze vraag in je hoofd hebt, en dat deze terecht is. Om deze vraag te beantwoorden wil ik een persoonlijk verhaal met u delen.
Een paar jaar geleden werkte ik aan VBA-code om een draaitabel in te voegen , en op dat moment was ik me niet bewust van alle objecten die ik moest gebruiken om deze code te schrijven. Dus wat ik deed, ik nam een macro op terwijl ik handmatig een draaitabel maakte.
Vervolgens heb ik naar deze code gekeken om het hele proces te begrijpen dat betrokken is bij het invoegen van een draaitabel. Ja, deze code was niet perfect, maar gaf me een idee om te schrijven.
Wat ik bedoel is dat er situaties kunnen zijn waarin u de code moet schrijven, en dat de macrorecorder u op dat moment kan helpen. De macrorecorder hielp me ook bij het schrijven van codes voor dit inventarissjabloon .
Wrap
U moet zich op de volgende punten concentreren om succesvol een macro op te nemen:
- Definieer de werkmap waarin u de macro wilt opslaan en sluit alle andere werkmappen.
- Zorg ervoor dat u het juiste object selecteert om de macro op te nemen.
- Zorg ervoor dat u beslist of u absolute of relatieve verwijzingen wilt gebruiken voordat u de macro opslaat.
- Plan de acties die u wilt ondernemen.
Gerelateerde tutorials
Veel Gestelde Vragen
Het staat in de codegroep op het tabblad Ontwikkelaars.
Je kunt het zien vanuit de Visual Basic-editor.
Niet echt, u moet deze code opruimen nadat u deze hebt opgeslagen.