Een macro uitvoeren in Excel

Hoewel het uitvoeren van een macro in Excel niet moeilijk is, zijn er veel manieren om ze uit te voeren. Sommige manieren zijn bedoeld om het gebruik van macro's gemakkelijker te maken, terwijl andere manieren de manier waarop een gebruiker omgaat met uw werkmap volledig kunnen veranderen. In dit artikel bespreken we enkele voor de hand liggende manieren om macro's uit te voeren, zoals de macro'slijst en knopbesturingselementen, en enkele meer obscure manieren zoals de VB-editor en gebeurtenissen.

Ten eerste: zorg ervoor dat macro's zijn ingeschakeld

De beveiligingsfuncties van Excel schakelen standaard macro's uit. Bij het openen van een werkmap met macro's, wordt gebruikers meestal gevraagd of ze macro's willen inschakelen.

Als u geen macro's kunt uitvoeren, probeert u deze instructies te volgen:

  • Bewaar de werkmap
  • Sluit de werkmap en open deze opnieuw
  • Wanneer de werkmap wordt geladen, ziet u een Veiligheidswaarschuwing prompt (hieronder afgebeeld). Klik Zet inhoud aan.

Een macro uitvoeren vanuit de macrolijst

Een lijst met macro's is toegankelijk via het tabblad Weergave. Om deze lijst te bekijken:

  • Selecteer de Weergave tabblad
  • Klik op de knop met het label Macro's om de macrolijst te openen

  • Selecteer de macro die u wilt uitvoeren in de lijst en klik vervolgens op de Loop knop

U kunt de macrolijst ook op elk moment weergeven door op . te drukken ALT+F8.

Een macro uitvoeren met een sneltoets

U kunt een sneltoets toewijzen aan een macro die u vaak gebruikt, in de vorm van CTRL+ of CTRL+SHIFT+. Om dit te doen:

  • Open de macrolijst (Weergave > Macro's, of ALT+F8)
  • Selecteer de macro waarop u een snelkoppeling wilt toepassen
  • Klik Opties… om te laten zien Macro-opties subdialoogvenster

  • In het tekstvak onder Sneltoets, typ een enkele letter en klik vervolgens op Oke. Als u de SHIFT-toets ingedrukt houdt terwijl u de letter typt, wordt op het label naast het vak SHIFT weergegeven als onderdeel van de snelkoppeling

OPMERKING: het wordt ten zeerste aanbevolen om SHIFT te gebruiken bij het maken van een sneltoets! Excel gebruikt CTRL+ sneltoetsen voor zichzelf, b.v. CTRL+C om te kopiëren of CTRL+V om op te slaan. Als u een macro-snelkoppeling maakt met deze of andere Excel-snelkoppelingen, overschrijft u de Excel-snelkoppeling totdat u de macro-snelkoppeling opnieuw toewijst.

Voer een macro uit vanuit de VB Editor

Macro's kunnen ook worden uitgevoerd vanuit de VB Editor. Met de VB-editor kunt u de code van een macro bekijken en eventuele wijzigingen aanbrengen voordat u deze uitvoert.

Een macro uitvoeren in de VB Editor:

  • Open de VB Editor (tabblad Ontwikkelaar > Visual Basic of ALT+F11)

  • In de Project venster, dubbelklik op de module die de macro bevat die u wilt testen
  • In het codevenster van de module, plaats de cursor ergens in de code van de macro tussen "Sub" en "End Sub"
  • Klik op de Loop knop op de werkbalk of druk op sneltoets F5

Een macro uitvoeren met een knop of vorm

Het is vaak handig om een ​​besturingselement op het werkblad te hebben waarop een gebruiker kan klikken om een ​​macro uit te voeren, zoals een knopbesturingselement of een vorm. Dit is veel sneller voor eindgebruikers dan het openen van lijsten met macro's of het doorzoeken van macrocode in de VB Editor.

Informatie over het maken van een klikbare knop of vorm vindt u hier: Een knop toevoegen en een macro toewijzen in Excel.

Voer automatisch een macro uit met behulp van gebeurtenissen in VBA

Het is mogelijk om een ​​macro uit te voeren wanneer er iets gebeurt in Excel, bijvoorbeeld wanneer een werkmap wordt geopend of wanneer een celwaarde wordt gewijzigd. Deze heten Evenementen, en u kunt VBA-code voor hen schrijven om macro's aan te roepen of andere bewerkingen uit te voeren.

Om code voor een evenement te schrijven, moet je de VB Editor gebruiken. Om bijvoorbeeld gebeurtenissen voor de werkmap te bekijken:

  • Open de VB-editor (ALT+F11)
  • Dubbelklik op de Dit Werkboek object in de VB Editor's Projectvenster
  • Kies "Werkmap" in de vervolgkeuzelijst linksboven in het codevenster
  • Klik op de vervolgkeuzelijst aan de rechterkant om een ​​lijst met evenementen te zien

Hieronder vindt u een klein, maar nuttig voorbeeld van Excel-gebeurtenissen waarmee u macro's kunt uitvoeren.

Werkmap_Open()

De gebeurtenis Workbook_Open() wordt geactiveerd wanneer een werkmap wordt geopend. Als u de beveiligingswaarschuwing krijgt na het openen van een werkmap, wordt deze gebeurtenis geactiveerd nadat u op "Inhoud inschakelen" hebt geklikt.

12345 Privé subwerkboek_Open()MsgBox "Werkmap geopend!"Einde sub

Workbook_BeforeClose (Annuleren als Boolean)

Workbook_BeforeClose() wordt geactiveerd wanneer de gebruiker de werkmap probeert te sluiten. Het gebeurt voordat er controles worden uitgevoerd om te zien of de werkmap moet worden opgeslagen.

De Annuleren parameter kan worden ingesteld op True om te voorkomen dat de werkmap wordt gesloten.

123456789 Private Sub Workbook_BeforeClose (Annuleren als Boolean)If MsgBox("Weet u het zeker?", vbYesNo + vbQuestion, "Close") = vbNo DanAnnuleren = WaarStop alsEinde sub

Worksheet_Change (ByVal-doel als bereik)

Worksheet_Change() wordt geactiveerd wanneer de waarde van een cel wordt gewijzigd - of deze nu is gewijzigd door een macro, door een kopieer-/plakbewerking of door een externe link. Het wordt echter niet geactiveerd wanneer een waarde wordt herberekend via een formule.

De Doelwit parameter vertegenwoordigt de cellen waarvan de waarde is gewijzigd.

Als u de waarde van andere cellen binnen deze gebeurtenis wijzigt, wordt de gebeurtenis opnieuw geactiveerd. Dit kan mogelijk een oneindige lus veroorzaken. Als u celwaarden moet wijzigen zonder deze gebeurtenis te activeren, overweeg dan instelling Toepassing.Gebeurtenissen inschakelen tot niet waar eerst, en zet het dan terug op Waar aan het einde van de evenementenprocedure.

123456789 Private Sub Worksheet_Change (ByVal-doel als bereik)MsgBox "Cellen gewijzigd: " & Target.AddressApplication.EnableEvents = FalseBereik ("A2"). Waarde = Bereik ("A2"). Waarde + Doel. Cellen. AantalApplication.EnableEvents = TrueEinde sub

Worksheet_SelectionChange (ByVal-doel als bereik)

Deze gebeurtenis wordt geactiveerd wanneer verschillende cellen worden geselecteerd met het richtkruis. De parameter Doel vertegenwoordigt de nieuwe cellen die zijn geselecteerd.

U kunt deze gebeurtenis ook met code activeren, d.w.z. "Bereik ("A1").Selecteren". Net als bij Worksheet_Change(), moet je voorzichtig zijn met het selecteren van andere cellen binnen deze gebeurtenis, omdat je een oneindige lus kunt veroorzaken. Gebruik Application.EnableEvents.

123456789 Privé subwerkblad_SelectionChange (ByVal-doel als bereik)Als Target.Address = "$A$1" DanMsgBox "Cursor in uitgangspositie."Stop alsEinde sub

Een lopende macro stoppen

Een actieve macro kan worden onderbroken door op te drukken ESC of CTRL+BREAK. Standaard toont een onderbroken macro het volgende dialoogvenster:

Klikken op Einde stopt de macro, terwijl Doorgaan met zal het hervatten. Klikken op Debuggen opent de macro in de VB-editor en focust op de regel code waarop de uitvoering is onderbroken. (In de VB Editor kunt u de macro stoppen of hervatten met de knoppen Uitvoeren of Einde op de werkbalk.)

Application.EnableCancelKey

U kunt de mogelijkheid om een ​​macro te stoppen met ESC of CTRL+BREAK uitschakelen door de Application.EnableCancelKey eigendom. Deze eigenschap heeft drie mogelijke waarden:

  • xlInterrupt - dit is de standaardwaarde, waardoor Excel het bovenstaande dialoogvenster toont
  • xlUitgeschakeld - verwijdert de mogelijkheid om een ​​actieve macro te stoppen
  • xlErrorHandler - wanneer een interruptpoging wordt gedaan, wordt een fout gegenereerd die in code kan worden afgehandeld

Telkens wanneer de uitvoering van de code stopt, stelt Excel altijd de waarde van Application.EnableCancelKey opnieuw in op xlInterrupt.

Een goede reden om van deze eigenschap gebruik te maken is beveiliging. Als u bijvoorbeeld een macro had die delen van uw werkmap tijdelijk onbeschermd deed, zou een gebruiker de macro mogelijk direct na het opheffen van de beveiliging kunnen stoppen en toegang krijgen tot inhoud die u niet van plan was te hebben. Door Application.EnableCancelKey in te stellen, kunt u hun mogelijkheid om dit te doen volledig uitschakelen, of hun onderbreking netjes afhandelen met een Error Handler die de werkmap opnieuw beschermt.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MijnWachtwoord"Nieuwe gegevens. Doel kopiërenTarget.Worksheet.Protect "MijnWachtwoord"Application.EnableCancelKey = xlInterruptEinde sub

Sluit Excel geforceerd af met Windows Taakbeheer

Als de macro is blijven hangen, of Excel te druk is geworden om een ​​onderbrekingspoging te bevestigen, moet u Excel mogelijk zelf geforceerd afsluiten met de Windows Taakbeheer. (OPMERKING: als u dit doet, kunt u niet-opgeslagen werk kwijtraken en moet u vertrouwen op een automatisch herstellende versie van uw werkmap.)

  • Open Taakbeheer rechtstreeks met CTRL+SHIFT+ESC
  • Selecteer de "Processen” tabblad
  • Vouw het item "Microsoft Excel" uit om alle werkmappen weer te geven
  • Selecteer de werkmap die u wilt sluiten en klik vervolgens op Einde taak in de rechterbenedenhoek

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

wave wave wave wave wave