Så här använder du dina Excel-tilläggsfunktioner i VBA

Innehållsförteckning:

Anonim

Om du har byggt ett tillägg för att innehålla dina anpassade Excel-funktioner kan du ha upptäckt att även om funktionerna fungerar bra i ett Excel-kalkylblad kan du inte använda dem i dina VBA-procedurer i andra arbetsböcker. Det är som om Visual Basic Editor inte kan ser dem. Tja, det är för att det inte kan! Den här artikeln förklarar hur du kan fixa det.

Först och främst överväga om detta verkligen är vad du vill göra. Tillägg är främst avsedda för att lägga till extra funktioner i dina arbetsböcker. När du läser in ett Excel-tillägg blir dess funktionalitet omedelbart tillgänglig för alla dina arbetsböcker. Om du skapar ett VBA -förfarande som är beroende av en anpassad funktion som finns i en annan arbetsbok, måste den andra arbetsboken vara öppen när du vill använda dess funktion. Detsamma gäller en anpassad funktion i ett tillägg. Om tillägget är laddat är det bra, men antar att du skickar din arbetsbok till någon annan eller distribuerar den till din arbetsgrupp. Du måste komma ihåg att distribuera tillägget också. Det kan vara enklare att inkludera en kopia av funktionen i arbetsbokskoden så att dina procedurer har direkt åtkomst till den (du kan behöva göra den till en Privat funktion eller byt namn för att undvika namnkonflikter).

Jag säger inte att du inte gör det. Du behöver bara tänka på det först, och om du är säker på att tillägget kommer att vara tillgängligt, fortsätt sedan. Här är hur…

När uppstår problemet?

Jag skriver ett förfarande för en av mina arbetsböcker. I min procedur vill jag använda RemoveSpaces funktion som jag skapade för ett tag sedan och sparade i min Martins funktioner Tillägg som för närvarande är installerat i min kopia av Excel. Men när jag försöker köra min procedur får jag ett felmeddelande.

Visual Basic Editor beter sig som om funktionen inte finns, men jag vet att det finns och jag kan se det om jag tittar på koden i mitt tillägg. Faktum är att koden fungerar bra om jag kör den inifrån mitt tillägg.

Jag behöver Visual Basic Editor för att kunna ser funktionerna i mitt tillägg inifrån kodmodulen i a annorlunda arbetsbok.

Ge ditt tillägg ett VBA-projektnamn

Varje arbetsbok har en VBA -projektnamn. Det heter VBAProjekt. Du kan ändra det namnet om du vill men normalt stör jag mig inte, för normalt spelar det ingen roll.

Har du någonsin undrat varför alla arbetsböcker som visas i Project Explorer fönstret i den visuella grundläggande redigeraren kallas "VBAProjekt"? Om du har någon av Microsofts tillägg installerade ser du att de har ett annat namn. Microsoft-utvecklarna har gett sina Analys ToolPak Tillägg i VBA-projektnamnet "funcres".

Det första du ska göra är att ge ditt tillägg ett unikt VBA-projektnamn. Detta beror på att du kommer att referera till det med det här namnet i nästa steg och om det finns mer än ett med samma namn kommer Visual Basic Editor inte att veta vilken du ska använda.

I Project Explorer välj namnet på ditt tillägg. Om den inte redan är öppen, visa Visual Basic Editor's Egenskapsfönster. Du kommer att se att det bara finns en fastighet, namn. Skriv ett annat namn och tryck på Stiga på. Du måste följa de vanliga namnreglerna för VBA (dvs. inga olagliga tecken och inga mellanslag). Du kommer att se att namnet tillämpas omedelbart i Project Explorer.

Spara nu ändringarna i ditt tillägg. Se till att ditt tillägg är valt i Project Explorer och välj Arkiv> Spara.

Ange en referens till tillägget

I det här steget berättar du för arbetsboken där du vill använda tilläggets funktioner att tillägget finns. Du gör detta genom att Ställa in en referens till tillägget. Du kanske har stött på denna teknik tidigare om du har velat skriva Excel -kod för att kommunicera med ett annat program som t.ex. Syn eller Tillgång.

Om det är bekvämt startar du om Excel vid denna tidpunkt. Detta beror på att ditt bytt namn på tillägget kommer att laddas om och listan du håller på att se kommer att uppdateras. Om det inte är bekvämt, bry dig inte … läs nästa stycke och bestäm vad du vill göra.

Öppna en kodmodul i arbetsboken där du vill använda tilläggets funktioner och gå sedan till Verktyg> Referenser för att öppna Referenser dialogruta där du kommer att se en lista över alla bibliotek och andra objekt (som tillägg) som du kan ange en referens till. Om du har startat om Excel kommer listan att ha uppdaterats och du kan hitta det projektnamn som du gav ditt tillägg i det sista steget. Sätt ett kryss i rutan bredvid namnet och klicka på OK knapp.

Om du inte startade om Excel måste du hitta din tilläggsfil genom att klicka på Bläddra knappen på Referenser dialog. Detta öppnar Lägg till referens fönster. Ändra Filer av typ: avsnitt till Microsoft Excel -filer (*. Xls;*. Xla) bläddra sedan till mappen där tillägget är lagrat.

Välj ditt tillägg och klicka på Öppen. Detta lägger till ditt tillägg till listan där du kan välja det och klicka OK.

OBS: Du behöver inte utföra båda dessa procedurer! Välj en eller annan beroende på om du startade om Excel efter att du har ändrat tilläggets VBA-projektnamn eller inte.

Nu kommer du att kunna använda tilläggets funktioner i valfri modul i arbetsboken där du anger referensen och de kommer att identifieras av Visual Basic Editor …

Om du tittar på Project Explorer du kommer att se att en referens har tillämpats på arbetsboken …

Det är viktigt att komma ihåg att att lägga till en referens endast gäller den arbetsbok som du utförde denna procedur för. Du måste göra det för varje olika arbetsbok där du vill använda tilläggets funktioner.

Om distribution av dina filer

När du lägger till en referens till ett tillägg är denna länk till tillägget "fastkopplad" i filen. Om du flyttar filen till en annan dator eller distribuerar den till dina arbetskamrater förväntar sig arbetsboken att den hittar samma tillägg på samma plats på sina datorer. Om tillägget flyttas eller tas bort från datorn kan arbetsboken inte hitta det och din kod fungerar inte.

Vissa människor förespråkar att filen och dess tillhörande tillägg alltid ska finnas i samma mapp för att undvika de problem detta kan orsaka. Du kan naturligtvis ställa in referensen igen för att åtgärda problemet.

Ta hänsyn till dessa faktorer så har du inga problem.