Inhoudsopgave
Vandaag gaan we verder met het verkennen van aangepaste Excel-functies. Aangezien u al weet hoe u UDF's maakt (en, naar ik hoop, ook hebt geprobeerd ze toe te passen in uw Excel), laten we wat dieper graven en leren hoe u gebruikersgedefinieerde functies in Excel kunt gebruiken en opslaan.
Bovendien laten we u zien hoe u uw functies gemakkelijk kunt opslaan in een Excel-invoegbestand om ze later in een paar klikken te gebruiken.
Hier gaan we het dus over hebben:
Verschillende manieren om UDF's in Excel te gebruiken
UDF's gebruiken in werkbladen
Zodra u hebt gecontroleerd of uw UDF's correct werken, kunt u ze gebruiken in Excel-formules of in VBA-code.
U kunt aangepaste functies in een Excel-werkmap toepassen op dezelfde manier als u gewone functies gebruikt. Schrijf bijvoorbeeld in een cel de onderstaande formule:
= GetMaxBetween(A1:A6,10,50)
UDF kan worden gebruikt in combinatie met gewone functies, bijvoorbeeld om tekst toe te voegen aan de berekende maximumwaarde:
= CONCATENATE("Maximumwaarde tussen 10 en 50 is ", GetMaxBetween(A1: A6,10,50))
U ziet het resultaat in de onderstaande schermafbeelding:
U kunt het getal vinden dat zowel maximaal is als in het bereik ligt van 10 tot 50.
Laten we een andere formule controleren:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), de
De aangepaste functie GetMaxBetween controleert het bereik B2:B9 en vindt het maximumaantal tussen 10 en 50. Vervolgens krijgen we met behulp van INDEX + MATCH de productnaam die overeenkomt met deze maximumwaarde:
Zoals u ziet verschilt het gebruik van aangepaste functies niet veel van gewone Excel-functies.
Onthoud daarbij dat een door de gebruiker gedefinieerde functie alleen een waarde kan teruggeven, maar geen andere acties kan uitvoeren. Lees meer over de beperkingen van door de gebruiker gedefinieerde functies.
UDF's gebruiken in VBA-procedures en -functies
UDF's kunnen ook worden gebruikt in VBA-macro's. Hieronder ziet u de macrocode die zoekt naar de maximumwaarde in het bereik van 10 tot 50 in de kolom met de actieve cel.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubDe macrocode bevat de aangepaste functie
GetMaxBetween(.Cells, 10, 50)
Het vindt de maximale waarde in de actieve kolom. Deze waarde wordt dan gemarkeerd. Het resultaat van de macro ziet u in de onderstaande schermafbeelding.
Een aangepaste functie kan ook worden gebruikt binnen een andere aangepaste functie. Eerder in onze blog hebben we gekeken naar het probleem van het omzetten van een getal naar tekst met behulp van de aangepaste functie genaamd SpellNumber .
Met zijn hulp kunnen we de maximumwaarde uit het bereik halen en die onmiddellijk als tekst opschrijven.
Daartoe maken we een nieuwe aangepaste functie waarin we de functies GetMaxBetween en SpellNumber die ons al bekend zijn.
Functie SpellGetMaxBetween(rngCells Als Bereik, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) EindfunctieZoals u kunt zien, zijn de GetMaxBetween functie een argument is voor een andere aangepaste functie, SpellNumber Het definieert de maximale waarde, zoals we al vaak hebben gedaan. Dit getal wordt dan omgezet in tekst.
In de bovenstaande schermafbeelding kunt u zien hoe de SpellGetMaxBetween functie vindt het maximale getal tussen 100 en 500 en zet dat om in tekst.
UDF aanroepen vanuit andere werkmappen
Als u een UDF in uw werkmap hebt gemaakt, betekent dat helaas niet dat u geen problemen zult ondervinden.
In mijn ervaring creëren de meeste gebruikers vroeg of laat hun persoonlijke verzameling macro's en aangepaste functies om individuele processen en berekeningen te automatiseren. En hier doet zich het probleem voor - de code van door de gebruiker gedefinieerde functies in Visual Basic moet ergens worden opgeslagen om later bij het werk te kunnen worden gebruikt.
Om de aangepaste functie toe te passen, moet de werkmap waarin u deze hebt opgeslagen geopend zijn in uw Excel. Als dat niet het geval is, krijgt u de foutmelding #NAME! Deze foutmelding geeft aan dat Excel de naam van de functie die u in de formule wilt gebruiken niet kent.
Laten we eens kijken naar de manieren waarop u de aangepaste functies die u maakt kunt gebruiken.
Methode 1. Voeg de naam van de werkmap toe aan de functie
U kunt de naam van de werkmap waarin deze zich bevindt vóór de naam van de functie opgeven. Als u bijvoorbeeld een aangepaste functie hebt opgeslagen GetMaxBetween() in een werkmap met de naam My_Functions.xlsm dan moet u de volgende formule invoeren:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Methode 2. Sla alle UDF's op in één gemeenschappelijk bestand
Sla alle aangepaste functies op in één speciale werkmap (bijvoorbeeld, My_Functions.xlsm ) en kopieer de gewenste functie daaruit naar de huidige werkmap, indien nodig.
Telkens wanneer u een nieuwe aangepaste functie maakt, moet u de code ervan dupliceren in de werkmap waarin u de functie gaat gebruiken. Bij deze methode kunnen zich verschillende ongemakken voordoen:
- Als er veel werkbestanden zijn, en de functie is overal nodig, dan moet de code in elk boek worden gekopieerd.
- Vergeet niet de werkmap op te slaan in een formaat dat geschikt is voor macro's (.xlsm of .xlsb).
- Bij het openen van zo'n bestand zal de bescherming tegen macro's telkens een waarschuwing weergeven, die bevestigd moet worden. Veel gebruikers schrikken als ze een waarschuwing in de gele balk zien die vraagt om macro's in te schakelen. Om dit bericht niet te zien, moet u de bescherming van Excel volledig uitschakelen. Dit is echter niet altijd correct en veilig.
Ik denk dat u het met mij eens zult zijn dat het steeds openen van een bestand en het kopiëren van de code van gebruikersgedefinieerde functies daaruit of het schrijven van de naam van dit bestand in een formule niet de beste oplossing is. zo kwamen we tot de derde manier.
Methode 3. Een Excel-invoegtoepassing maken
Ik denk dat de beste manier is om vaak gebruikte aangepaste functies op te slaan in een Excel add-in bestand. Voordelen van het gebruik van de add-in:
- U hoeft de invoegtoepassing slechts eenmaal met Excel te verbinden. Daarna kunt u de procedures en functies ervan gebruiken in elk bestand op deze computer. U hoeft uw werkmappen niet op te slaan in de formaten .xlsm en .xlsb, aangezien de broncode niet daarin wordt opgeslagen, maar in het invoegtoepassingsbestand.
- U zult geen last meer hebben van macrobeveiliging, omdat add-ins altijd verwijzen naar vertrouwde bronnen.
- Een add-in is een apart bestand. Het is gemakkelijk om het van computer naar computer over te zetten, om het met collega's te delen.
We zullen het later hebben over het maken en gebruiken van een invoegtoepassing.
Add-ins gebruiken om aangepaste functies op te slaan
Hoe maak ik mijn eigen invoegtoepassing? Laten we dit proces stap voor stap doorlopen.
Stap 1. Maak het add-in bestand
Open Microsoft Excel, maak een nieuwe werkmap en sla deze op onder een geschikte naam (bijvoorbeeld Mijn_Functies) in invoegformaat. Gebruik hiervoor het menu Bestand - Opslaan als of de F12-toets. Zorg ervoor dat u het bestandstype specificeert Excel-invoegtoepassing :
Uw add-in zal de extensie .xlam hebben.
Tip. Houd er rekening mee dat Excel add-ins standaard opslaat in de C:\Gebruikers [Uw_naam]\AppData\Roaming\MicrosoftAddIns Ik raad u aan de standaardlocatie te accepteren. Als u wilt, kunt u een andere map opgeven. Maar dan moet u bij het aansluiten van de invoegtoepassing handmatig de nieuwe locatie vinden en opgeven. Als u de invoegtoepassing opslaat in de standaardmap, hoeft u niet te zoeken naar de invoegtoepassing op uw computer. Excel zal deze automatisch in de lijst opnemen.
Stap 2. Sluit het add-in bestand aan
Nu moet de add-in die we hebben gemaakt verbonden worden met Excel. Dan wordt hij automatisch geladen als het programma wordt gestart. Gebruik hiervoor het menu Bestand - Opties - Invoegtoepassingen Zorg ervoor Excel Toevoegingen is geselecteerd in de Beheer veld. Klik op de Ga naar knop onderaan het venster. In het venster dat verschijnt, markeert u onze add-in My_Functions. Als u deze niet in de lijst ziet, klikt u op de knop Bladeren op knop en blader naar de locatie van uw add-in bestand.
Als u een invoegtoepassing gebruikt om aangepaste functies op te slaan, is er één eenvoudige regel die u moet volgen. Als u de werkmap overdraagt aan een andere persoon, zorg er dan voor dat u ook een kopie overdraagt van de invoegtoepassing die de gewenste functionaliteit bevat. Zij moeten deze op dezelfde manier aansluiten als u nu hebt gedaan.
Stap 3. Aangepaste functies en macro's toevoegen aan de invoegtoepassing
Onze add-in is verbonden met Excel, maar heeft nog geen functionaliteit. Om nieuwe UDF's toe te voegen, opent u de Visual Basic Editor door op Alt + F11 te drukken. Vervolgens kunt u nieuwe modules toevoegen met VBA-code zoals beschreven in mijn tutorial UDF's maken.
Selecteer uw add-in bestand ( My_Finctions.xlam ) in het VBAProject-venster. Gebruik de optie Invoegen - Module menu om een aangepaste module toe te voegen. Je moet er aangepaste functies in schrijven.
U kunt de code van een door de gebruiker gedefinieerde functie handmatig invoeren of ergens vandaan kopiëren.
Dat is alles. Nu heb je je eigen add-in gemaakt, toegevoegd aan Excel en kun je de UDF erin gebruiken. Als je meer UDF's wilt gebruiken, schrijf je de code in de add-in module in de VBA editor en sla je die op.
Dat was het voor vandaag. We hebben geleerd hoe je door de gebruiker gedefinieerde functies kunt gebruiken in je werkmap. We hopen echt dat je deze richtlijnen nuttig vindt. Als je vragen hebt, schrijf dan in de opmerkingen bij dit artikel.