Hvis du har bygget en tilføjelse til at indeholde dine tilpassede Excel-funktioner, har du muligvis opdaget, at selvom funktionerne fungerer fint i et Excel-regneark, kan du ikke bruge dem i dine VBA-procedurer i andre projektmapper. Det er som om Visual Basic Editor ikke kan se dem. Nå, det er fordi det ikke kan! Denne artikel forklarer, hvordan du kan løse det.
Overvej først og fremmest om det virkelig er det du vil gøre. Tilføjelser er primært beregnet til at tilføje ekstra funktionalitet til dine projektmapper. Når du indlæser et Excel-tilføjelsesprogram, bliver dets funktionalitet straks tilgængelig for alle dine projektmapper. Hvis du opretter en VBA -procedure, der afhænger af en brugerdefineret funktion i en anden projektmappe, skal den anden projektmappe være åben, når du vil bruge dens funktion. Det samme gælder en brugerdefineret funktion i et tilføjelsesprogram. Hvis tilføjelsesprogrammet er indlæst, er det fint, men hvis du antager, at du sender din projektmappe til en anden eller distribuerer den til din arbejdsgruppe. Du skal også huske at distribuere tilføjelsesprogrammet. Det kan være lettere at inkludere en kopi af funktionen i projektmappe -koden, så dine procedurer har direkte adgang til den (du skal muligvis gøre den til en Privat funktion eller skift navn for at undgå navngivningskonflikter).
Jeg siger ikke, gør det ikke. Du skal bare tænke over det først, og hvis du er sikker på, at tilføjelsesprogrammet er tilgængeligt, så fortsæt. Sådan ser du…
Hvornår opstår problemet?
Jeg skriver en procedure til en af mine projektmapper. I min procedure vil jeg bruge RemoveSpaces funktion, som jeg oprettede for et stykke tid siden og gemte i min Martins funktioner Tilføjelse, som i øjeblikket er installeret i min kopi af Excel. Men når jeg prøver at køre min procedure, får jeg en fejl.
Visual Basic Editor opfører sig som om funktionen ikke findes, men jeg ved, at den gør det, og jeg kan se den, hvis jeg ser på koden inde i mit tilføjelsesprogram. Faktisk fungerer koden fint, hvis jeg kører den inde fra mit tilføjelsesprogram.
Jeg har brug for Visual Basic Editor for at kunne se funktionerne i mit tilføjelsesprogram inde fra kodemodulet i a forskellige arbejdsbog.
Giv dit tilføjelsesprogram et VBA-projektnavn
Hver projektmappe har en VBA -projektnavn. Det hedder VBAProjekt. Du kan ændre det navn, hvis du vil, men normalt gider jeg ikke, for normalt gør det ikke noget.
Har du nogensinde spekuleret på, hvorfor alle projektmapper blev vist i Projekt Explorer ruden i den visuelle grundlæggende editor kaldes "VBAProjekt"? Hvis du har nogen af Microsofts tilføjelsesprogrammer installeret, vil du se, at de har et andet navn. Microsoft-udviklerne har givet deres Analyse ToolPak Tilføjelse af VBA-projektets navn "funcres".
Den første ting at gøre er at give din tilføjelse et unikt VBA-projektnavn. Dette skyldes, at du vil henvise til det med dette navn i det næste trin, og hvis der er mere end et med samme navn, ved Visual Basic Editor ikke, hvilken du skal bruge.
I Projekt Explorer vælg navnet på din tilføjelse. Hvis den ikke allerede er åben, skal du vise Visual Basic Editor's Egenskaber vindue. Du vil se, at der kun er en ejendom, Navn. Indtast et andet navn, og tryk på Gå ind. Du bliver nødt til at overholde de sædvanlige navngivningsregler for VBA (dvs. ingen ulovlige tegn og ingen mellemrum). Du vil se, at navnet straks anvendes i Projekt Explorer.
Gem nu ændringerne i din tilføjelse. Sørg for, at dit tilføjelsesprogram er valgt i Projekt Explorer og vælg Fil> Gem.
Indstil en reference til tilføjelsen
I dette trin fortæller du den projektmappe, hvor du vil bruge dine tilføjelsesfunktioner, at tilføjelsen findes. Du gør dette ved Indstilling af en reference til tilføjelsen. Du er måske stødt på denne teknik før, hvis du har ønsket at skrive Excel -kode for at kommunikere med et andet program som f.eks Outlook eller Adgang.
Hvis det er praktisk, skal du genstarte Excel på dette tidspunkt. Dette skyldes, at dit omdøbte tilføjelsesprogram vil blive genindlæst, og den liste, du er ved at se, vil blive opdateret. Hvis det ikke er praktisk, skal du ikke bekymre dig … læs det næste afsnit og beslut dig for, hvad du vil gøre.
Åbn et kodemodul i projektmappen, hvor du vil bruge tilføjelsesprogrammets funktioner, og gå derefter til Værktøjer> Referencer for at åbne Referencer dialog, hvor du vil se en liste over alle biblioteker og andre objekter (f.eks. tilføjelsesprogrammer), som du kan angive en reference til. Hvis du har genstartet Excel, er denne liste blevet opdateret, og du vil kunne finde det projektnavn, du gav til dit tilføjelsesprogram i det sidste trin. Sæt et flueben i feltet ud for navnet, og klik på Okay knap.
Hvis du ikke genstartede Excel, skal du finde din tilføjelsesfil ved at klikke på Gennemse knappen på Referencer dialog. Dette åbner Tilføj reference vindue. Skift Filer af typen: sektion til Microsoft Excel -filer (*. Xls;*. Xla) derefter gå til den mappe, hvor tilføjelsesprogrammet er gemt.
Vælg dit tilføjelsesprogram, og klik på Åben. Dette tilføjer dit tilføjelsesprogram til listen, hvor du kan vælge det og klikke Okay.
BEMÆRK: Du behøver ikke at udføre begge disse procedurer! Vælg en eller anden afhængigt af, om du har genstartet Excel efter at have ændret dit tilføjelses VBA-projektnavn eller ej.
Nu vil du kunne bruge tilføjelsesfunktionerne i ethvert modul i projektmappen, hvor du angiver referencen, og de vil blive genkendt af Visual Basic Editor …
Hvis du ser på Projekt Explorer du vil se, at der er anvendt en reference til projektmappen …
Det er vigtigt at huske, at tilføjelse af en reference kun gælder for den projektmappe, som du udførte denne procedure for. Du bliver nødt til at gøre det for hver forskellige projektmappe, hvor du vil bruge dine tilføjelsesfunktioner.
Om distribution af dine filer
Når du tilføjer en reference til et tilføjelsesprogram, er dette link til tilføjelsesprogrammet "hard-wired" i filen. Hvis du flytter filen til en anden computer eller distribuerer den til dine medarbejdere, forventes projektmappen at finde den samme tilføjelse på det samme sted på deres computere. Hvis tilføjelsesprogrammet flyttes eller slettes fra computeren, kan projektmappen også ikke finde den, og din kode fungerer ikke.
Nogle mennesker går ind for, at filen og den tilhørende tilføjelse altid skal være placeret i den samme mappe for at undgå de problemer, dette kan forårsage. Du kan naturligvis indstille referencen igen for at løse problemet.
Tag disse faktorer i betragtning, og du får ikke problemer.