Hvis du har bygd et tillegg for å inneholde egendefinerte Excel-funksjoner, har du kanskje oppdaget at selv om funksjonene fungerer fint i et Excel-regneark, kan du ikke bruke dem i VBA-prosedyrene i andre arbeidsbøker. Det er som om Visual Basic Editor ikke kan se dem. Vel, det er fordi det ikke kan! Denne artikkelen forklarer hvordan du kan fikse det.
Først av alt, bør du vurdere om dette virkelig er det du vil gjøre. Tillegg er først og fremst ment for å legge til ekstra funksjonalitet i arbeidsbøkene dine. Når du laster inn et Excel-tillegg, blir funksjonaliteten umiddelbart tilgjengelig for alle arbeidsbøkene dine. Hvis du oppretter en VBA -prosedyre som er avhengig av en egendefinert funksjon i en annen arbeidsbok, må den andre arbeidsboken være åpen når du vil bruke funksjonen. Det samme gjelder en egendefinert funksjon i et tillegg. Hvis tillegget er lastet inn, er det greit, men antar at du sender arbeidsboken din til noen andre, eller distribuerer den til arbeidsgruppen din. Du må huske å distribuere tilleggsprogrammet også. Det kan være enklere å inkludere en kopi av funksjonen i arbeidsbokkoden slik at prosedyrene dine har direkte tilgang til den (du må kanskje gjøre den til en Privat funksjon eller endre navnet for å unngå navnekonflikter).
Jeg sier ikke at ikke gjør det. Du trenger bare å tenke på det først, og hvis du er sikker på at tillegget vil være tilgjengelig, så fortsett. Dette er hvordan…
Når oppstår problemet?
Jeg skriver en prosedyre for en av arbeidsbøkene mine. I prosedyren min vil jeg bruke RemoveSpaces funksjon som jeg opprettet for en stund siden og lagret i min Martins funksjoner Tillegg som for øyeblikket er installert i min kopi av Excel. Men når jeg prøver å kjøre prosedyren min får jeg en feilmelding.
Visual Basic Editor oppfører seg som om funksjonen ikke eksisterer, men jeg vet at den gjør det, og jeg kan se den hvis jeg ser på koden inne i tillegget mitt. Faktisk fungerer koden fint hvis jeg kjører den fra innsiden min.
Jeg trenger Visual Basic Editor for å kunne se funksjonene i mitt tillegg fra innsiden av kodemodulen til a annerledes arbeidsbok.
Gi tillegget ditt et VBA-prosjektnavn
Hver arbeidsbok har en VBA -prosjektnavn. Det heter VBAProsjekt. Du kan endre det navnet hvis du vil, men normalt gidder jeg ikke, for normalt spiller det ingen rolle.
Har du noen gang lurt på hvorfor alle arbeidsbøkene som vises i Project Explorer ruten til den visuelle grunnleggende redaktøren kalles "VBAProsjekt"? Hvis du har noen av Microsofts tilleggsprogram installert, ser du at de har et annet navn. Microsoft-utviklerne har gitt sitt Analyse ToolPak Tillegg i VBA-prosjektnavnet "funcres".
Det første du må gjøre er å gi tilleggsprogrammet et unikt VBA-prosjektnavn. Dette er fordi du kommer til å referere til det med dette navnet i neste trinn, og hvis det er mer enn ett med samme navn, vet ikke Visual Basic Editor hvilken du skal bruke.
I Project Explorer Velg navnet på tillegget ditt. Hvis den ikke allerede er åpen, viser du Visual Basic Editor's Egenskaper -vinduet. Du vil se at det bare er en eiendom, Navn. Skriv inn et annet navn og trykk Tast inn. Du må følge de vanlige navngivningsreglene for VBA (dvs. ingen ulovlige tegn og ingen mellomrom). Du vil se at navnet blir umiddelbart brukt i Project Explorer.
Lagre endringene i tillegget ditt. Sørg for at tillegget ditt er valgt i Project Explorer og velg Fil> Lagre.
Sett en referanse til tillegget
I dette trinnet forteller du arbeidsboken der du vil bruke tilleggsprogrammets funksjoner at tillegget finnes. Du gjør dette ved Angi en referanse til tillegget. Du har kanskje støtt på denne teknikken før hvis du har ønsket å skrive Excel -kode for å kommunisere med et annet program som f.eks Outlook eller Adgang.
Hvis det er praktisk, start Excel på nytt på dette tidspunktet. Dette er fordi det omdøpte tillegget ditt blir lastet inn på nytt og listen du skal se blir oppdatert. Hvis det ikke er praktisk, ikke bry deg … les neste avsnitt og bestem hva du vil gjøre.
Åpne en kodemodul i arbeidsboken der du vil bruke tilleggsfunksjonene, og gå til Verktøy> Referanser å åpne Referanser dialog der du vil se en liste over alle bibliotekene og andre objekter (som tillegg) som du kan angi en referanse til. Hvis du har startet Excel på nytt, vil denne listen ha blitt oppdatert, og du vil kunne finne prosjektnavnet du ga til tillegget ditt i det siste trinnet. Sett et kryss i boksen ved siden av navnet og klikk på OK knapp.
Hvis du ikke startet Excel på nytt, må du finne din tilleggsprogram ved å klikke på Bla gjennom -knappen på Referanser dialog. Dette åpner Legg til referanse vindu. Endre Filer av typen: seksjon til Microsoft Excel -filer (*. Xls;*. Xla) bla deretter til mappen der tillegget er lagret.
Velg ditt tillegg og klikk Åpen. Dette legger ditt tillegg til listen der du kan velge det og klikke OK.
MERK: Du trenger ikke å utføre begge disse prosedyrene! Velg den ene eller den andre, avhengig av om du har startet Excel på nytt eller ikke etter å ha endret VBA-prosjektnavn for tillegg.
Nå vil du kunne bruke tilleggsfunksjonene i en hvilken som helst modul i arbeidsboken der du angir referansen, og de vil bli gjenkjent av Visual Basic Editor …
Hvis du ser på Project Explorer du vil se at en referanse er brukt på arbeidsboken …
Det er viktig å huske at det å legge til en referanse bare gjelder arbeidsboken du utførte denne prosedyren for. Du må gjøre det for hver forskjellige arbeidsbok der du vil bruke tilleggsprogrammets funksjoner.
Om distribusjon av filene dine
Når du legger til en referanse til et tillegg, er denne lenken til tillegget "hard-wired" i filen. Hvis du flytter filen til en annen datamaskin, eller distribuerer den til dine medarbeidere, vil arbeidsboken forvente å finne det samme tillegget på samme sted på datamaskinene sine. Hvis tilleggsprogrammet flyttes eller slettes fra datamaskinen, vil ikke arbeidsboken kunne finne den, og koden din vil ikke fungere.
Noen mennesker går inn for at filen og tilhørende tillegg alltid skal være i samme mappe for å unngå problemene dette kan forårsake. Du kan selvfølgelig angi referansen igjen for å fikse problemet.
Ta disse faktorene i betraktning, så får du ikke problemer.