Denna handledning kommer att förklara hur man skapar användardefinierade funktioner i VBA.
VBA består av delprocedurer och funktionsprocedurer. Funktionsprocedurer returnerar ett värde och kan kallas med delprocedurer, eller kan användas i Excel -arket, där värdet som funktionen producerar returneras till Excel -arket. Excel har naturligtvis en rad inbyggda funktioner - som Sum -funktionen eller If -funktionen. Funktionsprocedurerna som du skriver i VBA används på liknande sätt som den inbyggda funktionen och kallas användardefinierade funktioner (UDF).
Varför skapa en UDF?
Obligatorisk funktion saknas
En av de främsta anledningarna till att du vill skapa en UDF i Excel är att det inte finns en befintlig inbyggd funktion som gör uppgiften åt dig. Att skriva din egen funktion i VBA är vanligtvis det mest effektiva sättet att lösa problemet. Funktionen nedan kommer att konvertera ett värde från kilogram till pund där en variabel parameter (dblKilo) används för att få värdet på kilogrammen för att göra beräkningen.
Ersätt en underrutin (makro)
Du kan skriva en delprocedur (makro) för att lösa uppgiften åt dig - men delprocedurer returnerar inte ett värde och de är inte dynamiska - med andra ord, om värdena i kalkylbladet ändras måste du köra om makro för att beräkningarna i makrot ska uppdatera dina data. Delproceduren nedan skulle också omvandla våra kilo till pund, men varje gång uppgifterna ändras i A1 måste du köra om makrot för att uppdatera resultatet.
Byt ut en formel
Du kan ha en riktigt komplicerad formel i Excel som du måste använda upprepade gånger - att sätta in formeln i VBA -kod gör det lättare att läsa och förstå - samt kanske ta bort utrymme för användarfel när du skriver formeln.
Skapa UDF: er
För att skapa en UDF, lägg först till en modul i antingen din Excel -arbetsbok, eller om du har en personlig makro -arbetsbok kan du antingen använda en befintlig modul där eller lägga till i en ny. För att göra detta måste du vara i Visual Basic Editor (VBE). För att komma till VBE, tryck på ALT + F11 eller klicka på Visual Basic -alternativet på fliken Utvecklare i ditt band.
DRICKS: Om du inte har fliken Utvecklare aktiverad i bandet går du till Arkiv, Alternativ och klicka på Anpassa band. Se till att kryssrutan Utvecklare är markerad och klicka på OK.
Om du vill infoga en ny modul väljer du det VBA -projekt som du vill infoga modulen i (antingen VBA -projektet för den aktuella boken du arbetar i eller Personlig makroarbetsbok), klicka på Föra in -Menyn och klicka på Modul
När du har skapat din modul kan du börja skapa din UDF.
Alla UDF börjar med funktion och sedan namnet på UDF. Funktioner kan vara privata eller offentliga men vanligtvis vill du att en UDF ska vara offentlig så att de visas i dialogrutan Infoga funktion i Excel (se hur du använder en funktion inifrån ett Excel -blad längre ner i den här artikeln). Om du inte lägger det privata nyckelordet framför funktionen är funktionen automatiskt offentlig.
123 | Funktion TestFunction1 (intA som heltal) Som heltalTestFunction1 = intA * 7Avsluta funktion |
Funktionen ovan har ett enda argument (intA). Du kan skapa en funktion med flera argument
123 | Funktion TestFunction2 (intA som heltal, intB som heltal, intC som heltal) som heltalTestFunction2 = (intA * intB) + intCAvsluta funktion |
Du kan också skapa en funktion med valfria argument. Om argumentet utelämnas kan du ange ett standardvärde för argumentet i funktionen.
123 | Funktion TestFunction3 (intA som heltal, intB som heltal, valfritt intC som heltal = 10) som heltalTestFunction3 = (intA * intB) + intCAvsluta funktion |
Använda en funktion från ett Excel -ark
De funktioner som du har skapat visas som standard i din funktionslista i avsnittet Användardefinierad i funktionslistan.
Klicka på fx för att visa dialogrutan Infoga funktion.
Välj Användardefinierad från kategorilistan
Välj den funktion du behöver från den tillgängliga Användardefinierade funktioner.
Alternativt, när du börjar skriva din funktion i Excel, ska funktionen visas i rullgardinsmenyn med funktioner.
Spara funktionerna med din Excel -fil
Eftersom funktioner skrivs i VBA -kod är det rimligt att koden måste vara tillgänglig för arbetsboken för att den ska kunna användas i Excel -arket. Du kan antingen spara dina funktioner i arbetsboken som du använder dem i, eller så kan du spara dem i din personliga makro -arbetsbok. Din Personal Macro -arbetsbok är en dold fil som är tillgänglig när Excel är öppet och därför tillgänglig för alla arbetsböcker i Excel att använda. Det skapas normalt när du spelar in ett makro och väljer alternativet för att lagra makrot i den personliga makro -arbetsboken.
Om du vill behålla dina funktioner sparade i arbetsboken du arbetar med måste du se till att när du sparar arbetsboken sparas den som en ‘Makroaktiverad arbetsbok’Eller en xlsm fil.