Excel 2016-snelmenus aanpassen in VBA

Excel 2016-snelmenus aanpassen in VBA

Vóór Excel 2007 gebruikten VBA-programmeurs het CommandBar-object voor het maken van aangepaste menu's, aangepaste werkbalken en aangepaste snelmenu's (rechtsklik). Vanaf Excel 2007 bevindt het CommandBar-object zich in een nogal vreemde positie. Als u code schrijft om een ​​menu of een werkbalk aan te passen, onderschept Excel die code en negeert veel van uw opdrachten.

In plaats van uw goed doordachte interfaceverbetering weer te geven, dumpt Excel 2007 (zoals latere versies) eenvoudig uw aangepaste menu's en werkbalken in een allesomvattend linttabblad met de naam Add-Ins.

Menu- en werkbalkaanpassingen komen terecht in de Add-Ins → Menu Commands of de Add-Ins → Custom Toolbars groep. Maar het aanpassen van snelmenu's (die ook het CommandBar-object gebruiken) werkt nog steeds zoals het altijd heeft gedaan - nou ja, een soort van.

Onder de streep? Het CommandBar-object is niet erg handig meer, maar het blijft de enige manier om snelmenu's aan te passen.

Een nieuw item toevoegen aan het snelmenu Cel

Hieronder vindt u voorbeeldcode die een nieuw item toevoegt aan het snelmenu dat verschijnt wanneer u met de rechtermuisknop op een cel klikt. U zou deze voorbeelden aan uw behoeften moeten kunnen aanpassen.

U kunt het hulpprogramma Case wijzigen een beetje verbeteren door het beschikbaar te maken via het snelmenu Cel.

De AddToShortcut-procedure voegt een nieuw menu-item toe aan het Cell-snelmenu. U kunt het aanpassen zodat het naar uw eigen macro's verwijst door de eigenschappen Caption en OnAction van het object met de naam NewControl te wijzigen.

Sub ToevoegenToShortCut()
  Dim Bar als CommandBar
  Dim NewControl als CommandBar-knop
  VerwijderenVanSnelkoppeling
  Set Bar = Application.CommandBars ("Cel")
  Stel NewControl = Bar.Controls.Add _ in
     (Type:=msoControlButton, ID:=1, _
     tijdelijk:=waar)
  Met NewControl
    .Caption = "&Change Case"
    .OnAction = "ChangeCase"
    .Style = msoButtonIconAndCaption
  Eindigt met
Einde sub

Wanneer u een snelmenu wijzigt, blijft die wijziging van kracht totdat u Excel opnieuw start. Met andere woorden, gewijzigde snelmenu's worden niet opnieuw ingesteld wanneer u de werkmap sluit die de VBA-code bevat. Daarom, als u code schrijft om een ​​snelmenu te wijzigen, schrijft u bijna altijd code om het effect van uw wijziging ongedaan te maken.

De procedure DeleteFromShortcut verwijdert het nieuwe menu-item uit het snelmenu Cel:

Sub DeleteFromShortcut()
  Bij fout Hervatten volgende
  Application.CommandBars ("Cel").Controls _
    (“&Change Case”).Verwijderen
Einde sub

Dit laat zien hoe het nieuwe menu-item wordt weergegeven nadat u met de rechtermuisknop op een cel hebt geklikt.

Excel 2016-snelmenu's aanpassen in VBA

Het snelmenu Cel met een aangepast menu-item: Hoofdletter wijzigen.

De eerste daadwerkelijke opdracht na de declaratie van een aantal variabelen roept de procedure DeleteFromShortcut aan. Deze verklaring zorgt ervoor dat er slechts één menu-item Case wijzigen wordt weergegeven in het snelmenu Cel. Probeer die regel te becommentariëren (zet een apostrof aan het begin van de regel) en voer de procedure een paar keer uit - maar laat je niet meeslepen!

Klik met de rechtermuisknop op een cel en u kunt meerdere exemplaren van het menu-item Case wijzigen zien. Verwijder alle items door DeleteFromShortcut meerdere keren uit te voeren (eenmaal voor elk extra menu-item).

Ten slotte hebt u een manier nodig om het snelmenu-item toe te voegen wanneer de werkmap wordt geopend en om het menu-item te verwijderen wanneer de werkmap wordt gesloten. Dit is eenvoudig te doen. Voeg deze twee gebeurtenisprocedures toe aan de ThisWorkbook-codemodule:

Privé subwerkboek_Open()
Bel AddToShortCut
Einde sub
Private Sub Workbook_BeforeClose (Annuleren als Boolean)
Oproep VerwijderenVanSnelkoppeling
Einde sub

De procedure Workbook_Open wordt uitgevoerd wanneer de werkmap wordt geopend en de procedure Workbook_BeforeClose wordt uitgevoerd voordat de werkmap wordt gesloten. Precies wat de dokter heeft voorgeschreven.

Wat is er anders in Excel 2013 en Excel 2016?

Als u VBA hebt gebruikt om met snelmenu's in Excel 2007 of eerder te werken, moet u op de hoogte zijn van een belangrijke wijziging.

Als uw code in het verleden een snelmenu wijzigde, was die wijziging van kracht voor alle werkmappen. Als u bijvoorbeeld een nieuw item aan het rechtsklikmenu Cel hebt toegevoegd, wordt dat nieuwe item weergegeven wanneer u met de rechtermuisknop op een cel in een werkmap klikt (plus andere werkmappen die u later opent). Met andere woorden, er zijn wijzigingen in het snelmenu aangebracht op applicatieniveau .

Excel 2013 en Excel 2016 gebruiken een enkele documentinterface en dat heeft invloed op snelmenu's. Wijzigingen die u aanbrengt in snelmenu's zijn alleen van invloed op het actieve werkmapvenster. Wanneer u de code uitvoert die het snelmenu wijzigt, wordt het snelmenu voor andere vensters dan het actieve venster niet gewijzigd. Dit is een radicale afwijking van hoe het vroeger werkte.

Nog een wending: als de gebruiker een werkmap opent (of een nieuwe werkmap maakt) wanneer het actieve venster het gewijzigde snelmenu weergeeft, geeft de nieuwe werkmap ook het gewijzigde snelmenu weer. Met andere woorden, nieuwe vensters tonen dezelfde snelmenu's als het venster dat actief was toen de nieuwe vensters werden geopend.

Kortom: als u in het verleden een werkmap of invoegtoepassing opende die snelmenu's wijzigde, kon u er zeker van zijn dat de gewijzigde snelmenu's in alle werkmappen beschikbaar zouden zijn. Die zekerheid heb je niet meer.

Maak aangepaste snelmenu's in Access 2007

Het macro-ontwerpvenster is anders in Access 2007 vergeleken met latere versies, dus vouw de volgende secties uit om mee te gaan als u Access 2007 gebruikt.

Stap 1 voor Access 2007: Maak een macrogroep die de menuopdrachten bevat

In deze stap maakt u een macrogroep, waarvan elke macro een afzonderlijke opdracht in uw snelmenu zal zijn.

Wat is een macrogroep?

Een macrogroep is een enkel macroobject dat twee of meer onafhankelijke macro's bevat. De afzonderlijke macro's worden geïdentificeerd door voor elke macro een naam te typen in de kolom Macronamen. In de volgende afbeelding  is Macro3  een macrogroep. NotFoundMsg  en  FoundMsg  zijn individuele macro's binnen de groep, waarbij elke macro bestaat uit twee macroacties.

Voorbeeld van een macrogroep

Opmerking:  De  kolom Macronaam  is standaard verborgen.  Als u de kolom  Macronaam wilt weergeven  , klikt u op het  tabblad  Ontwerpen in de  groep  Tonen/Verbergen op Macronamen .

  1. Klik op het   tabblad  Maken in de  groep  Overige op Macro . Als deze opdracht niet beschikbaar is, klikt u op de pijl onder de  knop Module  of  Klassemodule  en klikt u vervolgens op  Macro .

  2. Klik op het  tabblad Ontwerpen  in de   groep  Tonen/Verbergen op Macronamen  om de  kolom Macronaam weer te geven  .

  3. Voor elke opdracht die u in uw aangepaste snelmenu wilt hebben:

    • Voer in de  kolom Macronaam  de tekst in die u wilt weergeven in het snelmenu (bijvoorbeeld 'Rapport afdrukken' of 'Opslaan').

      Opmerking:  Als u een toegangssleutel wilt maken zodat u het toetsenbord kunt gebruiken om de opdracht te kiezen, typt u een en-teken (&) vóór de letter die u als toegangssleutel wilt gebruiken in de opdrachtnaam (bijvoorbeeld '&Opslaan'). Deze letter wordt onderstreept op het menu.
    • Selecteer in de  kolom Actie  de eerste actie die u wilt uitvoeren wanneer u op de opdracht in het snelmenu klikt.

    • Als u meer acties wilt uitvoeren wanneer u deze opdracht selecteert, voegt u deze toe op de volgende regels. Laat voor elke volgende actie de  cel Macronaam  leeg.

      Opmerking:  Om een ​​regel tussen twee menuopdrachten te maken, typt u een koppelteken (-) in de  kolom Macronaam  tussen de betreffende menuopdrachten.
  4. Sla de macro op en geef hem een ​​naam, bijvoorbeeld   mcrShortcutMenuCommands .

De volgende afbeelding toont een voorbeeld van een macrogroep voor een aangepast menu of snelmenu.

Een menumacrogroep in de ontwerpweergave

Stap 2 voor Access 2007: Maak een macro die het menu maakt

Deze stap lijkt misschien overbodig, maar om het snelmenu te maken op basis van de macrogroep die u in stap 1 hebt gemaakt, moet u een tweede macro maken die de   macroactie Menu toevoegen bevat. Deze macro wordt ook wel de "menumacro" genoemd.

  1. Klik op het   tabblad  Maken in de  groep  Overige op Macro . Als deze opdracht niet beschikbaar is, klikt u op de pijl onder de  knop Module  of  Klassemodule  en klikt u vervolgens op  Macro .

  2. Selecteer op de eerste regel van de macro  AddMenu  in de  actielijst  .

  3. Typ onder  Actieargumenten in het  vak Menunaam  de naam van het menu (bijvoorbeeld 'Rapportopdrachten'). Dit argument is niet vereist, maar wordt aanbevolen als u in stap 3 van plan bent het menu toe te voegen aan een linttabblad (zoals het  tabblad Invoegtoepassingen  van een formulier of rapport). Als het menu in stap 3 als snelmenu wordt toegevoegd, wordt het  argument Menunaam  genegeerd.

  4. Voer in het  vak Menu Macronaam  de naam in van de macro die u in stap 1 hebt gemaakt.

  5. Sla de macro op en geef deze een naam, bijvoorbeeld  mcrAddShortcutMenu .

De volgende afbeelding toont een voorbeeld van een menumacro waarmee het menu wordt gemaakt dat we in stap 1 hebben ontworpen.

Een menumacro in de ontwerpweergave

Stap 3 voor Access 2007: Voeg het menu toe aan een besturingselement, formulier, rapport of database

Afhankelijk van waar u het menu wilt laten verschijnen, gebruikt u een of meer van de volgende procedures.

  • Voeg het menu toe aan het tabblad Invoegtoepassingen van een formulier of rapport

    Gebruik deze procedure als u wilt dat het menu verschijnt op het  tabblad Invoegtoepassingen  voor een specifiek formulier of rapport, zoals weergegeven in de volgende afbeelding:

    Tabblad Add-Ins met een aangepast menu

    1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport waar u het menu wilt weergeven en klik vervolgens op  Ontwerpweergave .

    2.  Klik  op het   tabblad  Ontwerp in de groep Weergeven/verbergen op Eigenschappenblad .

    3. Selecteer het volledige object door  Formulier  of  Rapport te selecteren  in de lijst bovenaan het taakvenster Eigenschappenblad.

    4. Op het  tabblad Overige  op het eigenschappenvenster typt u in het  eigenschappenvak Snelmenu  de naam van de macro die u in stap 2 hebt gemaakt (in dit voorbeeld 'mcrAddShortcutMenu').

      De volgende keer dat u het formulier of rapport opent, verschijnt het  tabblad Invoegtoepassingen  op het lint. Klik op het tabblad om het menu te zien.

      Zie het artikel Een aangepast lint maken in Access voor meer informatie over lintaanpassingstechnieken, zoals het toevoegen van aangepaste tabbladen of het verbergen van de standaardtabbladen  .

      Het lint is een onderdeel van de Microsoft Office Fluent-gebruikersinterface.

  • Voeg het menu toe als snelmenu voor een formulier, rapport of besturingselement

    Gebruik deze procedure als u wilt dat het menu verschijnt wanneer u met de rechtermuisknop op een specifiek formulier, rapport of besturingselement klikt, zoals weergegeven in de volgende afbeelding:

    Een eenvoudig snelmenu

    1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport waarin u het snelmenu wilt weergeven en klik vervolgens op  Ontwerpweergave .

    2.  Klik  op het   tabblad  Ontwerp in de groep Weergeven/verbergen op Eigenschappenblad .

    3. Selecteer het besturingselement of object waaraan u het snelmenu wilt koppelen.

      Opmerking:  Als u het hele object wilt selecteren, selecteert u  Formulier  of  Rapport  in de lijst boven aan het taakvenster Eigenschappenblad.

    4. Op het  tabblad Overige  op het eigenschappenvenster typt u in het  eigenschappenvak Snelmenubalk  de naam van de macro die u in stap 2 hebt gemaakt (in dit voorbeeld 'mcrAddShortcutMenu').

  • Voeg het menu toe als een globaal snelmenu

    Deze procedure vervangt alle standaard snelmenu's in de huidige database. Aangepaste snelmenu's die u aan specifieke formulieren, rapporten of besturingselementen hebt gekoppeld, worden niet beïnvloed.

    1. Klik op de  Microsoft Office-knop  en klik vervolgens op  Toegangsopties .

    2. Klik in het   dialoogvenster  Toegangsopties op Huidige database .

    3. Typ onder  Lint- en werkbalkopties in het  vak Snelmenubalk  de naam van de macro die u in stap 2 hebt gemaakt (in dit voorbeeld "mcrAddShortcutMenu").

  • Aangepaste snelmenu's vervangen de standaard snelmenu's voor de objecten waaraan ze zijn gekoppeld. Als u bepaalde Access-opdrachten voor deze menu's wilt behouden, gebruikt u de  actie RunCommand  om de opdrachten in de macrogroepen te plaatsen voor de menu's waarin u ze wilt hebben.

  • Een aangepast snelmenu dat aan een besturingselement is gekoppeld, vervangt alle andere aangepaste snelmenu's die in de database zijn gedefinieerd. Een aangepast snelmenu dat aan een formulier of rapport is gekoppeld, vervangt een aangepast globaal snelmenu.

  • Wanneer u een menumacro opgeeft voor een formulier, rapport of database, wordt deze menumacro uitgevoerd telkens wanneer het formulier, rapport of de database wordt geopend. Als u wijzigingen aanbrengt in de menumacro of de macrogroep die de opdrachten definieert terwijl het formulier, rapport of database geopend is, moet u het formulier, rapport of database sluiten en opnieuw openen om de wijzigingen te zien.

  • Om een ​​submenu te maken, volgt u stap 1 om een ​​afzonderlijke macrogroep te maken die alleen de submenuopdrachten bevat. Volg daarna stap 1 opnieuw om de opdrachten voor het menu op een hoger niveau te definiëren. Voeg het submenu toe als een item in de macrogroep op een hoger niveau met behulp van de   macroactie Menu toevoegen. De volgende afbeelding toont de macrogroep voor een menu dat een submenu bevat, en toont vervolgens het resulterende snelmenu. De derde regel in de macrogroep maakt het  submenu Exporteren naar...  ( mcrSubMenu ).

    Een snelmenu dat een submenu bevat

    U kunt meerdere submenuniveaus maken door  AddMenu-  acties te gebruiken in de macrogroepen voor elk menuniveau. Zorg ervoor dat u   voor elke  AddMenu- actie een waarde opgeeft voor het argument Menunaam  , anders verschijnt het submenu als een lege regel in het menu op een hoger niveau.

  • Macrovoorwaarden worden alleen ondersteund in de menumacro op het hoogste niveau. Met andere woorden: u kunt een voorwaarde in een menumacro gebruiken om te bepalen of een bepaald menu of snelmenu wordt weergegeven, maar alleen voor de menu's op het hoogste niveau. U kunt geen voorwaarden gebruiken om opdrachten of submenu's in de menu's weer te geven of te verbergen. U kunt ook een voorwaarde gebruiken om een ​​aangepast snelmenu of een globaal snelmenu te verbergen of weer te geven.

  • Optioneel kan de menumacro die u in stap 2 maakt, onderdeel zijn van een macrogroep. Als u bijvoorbeeld meerdere snelmenu's voor verschillende objecten of besturingselementen hebt, kunt u één macro-object maken dat alle benodigde menumacro's bevat. Zorg ervoor dat de  kolom Macronaam wordt weergegeven  en typ een unieke naam voor elke macro. Gebruik in stap 3 de volgende notatie om naar de macro te verwijzen:  macrogroepsnaam.macronaam . Bijvoorbeeld  mcrAddShortcutMenus.AddMenu2 .


Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet is een dynamisch werkplatform waarmee u projecten kunt beheren, workflows kunt bouwen en kunt samenwerken met uw team.

Deel punt

Deel punt

SharePoint is een webgebaseerd samenwerkingssysteem dat gebruikmaakt van een verscheidenheid aan workflowtoepassingen, “lijst”-databases en andere webcomponenten, evenals beveiligingsfuncties om controle te geven over de samenwerking van bedrijfsgroepen.

Eeuwigdurende kalender 1.0.38/1.0.36

Eeuwigdurende kalender 1.0.38/1.0.36

Van Nien Agenda is een applicatie voor het bekijken van agenda's op uw telefoon, waarmee u snel de lunisolaire datum op uw telefoon kunt zien en zo uw belangrijke werk kunt regelen.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook is een bedrijfs- en productiviteitsapplicatie ontwikkeld door Microsoft Corporation.

Klik omhoog

Klik omhoog

ClickUp is een van de hoogst gewaardeerde productiviteitsplatforms voor elk bedrijf. Grote bedrijven zoals Google, Booking.com, San Diego Padres en Uber gebruiken allemaal ClickUp om de productiviteit op de werkplek te verhogen.

PDF-XChange-viewer 2.5.322.10

PDF-XChange-viewer 2.5.322.10

PDF is een veelgebruikt formaat geworden voor het lezen, maken en verzenden van tekstdocumenten. Op zijn beurt is er een toename geweest in het aantal programma's dat voor dit soort documentatie wordt gebruikt. PDF-XChange Viewer behoort tot een groeiend aantal PDF-viewers.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice biedt een compleet pakket Office-applicaties die wedijveren met Microsoft 365, vooral in Excel, PowerPoint en Word. Hiermee kunt u uw projecten effectiever beheren en worden verschillende bestandsformaten ondersteund.

Download iTaxviewer 1.8.7

Download iTaxviewer 1.8.7

iTaxViewer-software is tegenwoordig de populairste software voor het lezen van XML-bestanden. Deze software is een applicatie voor het lezen van elektronische belastingaangiften in XML-formaat van de Algemene Afdeling Belastingen.

Nitro PDF-lezer

Nitro PDF-lezer

Nitro PDF Reader is een handige PDF-editor die alle basistaken dekt die de meeste mensen dagelijks uitvoeren met PDF-documenten.

Foxit-lezer 12

Foxit-lezer 12

Foxit Reader is in de eerste plaats een PDF-lezer en biedt u ook de mogelijkheid PDF-bestanden te maken, te ondertekenen, te bewerken en aantekeningen toe te voegen. Het werkt op besturingssystemen, er zijn plug-ins voor verschillende programma's uit het Microsoft Office-pakket.