Skjule makroer

February 10  by Eliza

De fleste lesere allerede vet at du kan lage funksjoner og subrutiner som bruker VBA. Dette er ikke annerledes enn det er under VBA navnebror, Visual Basic. Normalt viser en makro opp i makro listen når du viser dialogboksen Makroer (trykk Alt + F8), med mindre en av tre betingelser er oppfylt:

  • Makroen er en funksjon. Funksjoner vanligvis tilbake informasjon, og de krever informasjon som skal sendes til dem. Siden du kjører en makro fra makro liste tillater ikke noen av disse tingene til å skje, tall Excel er det ikke nødvendig å liste det. Brukerdefinerte funksjoner, som er ganske nyttig i Excel, ikke vises i dialogboksen Makroer fordi de er, tross alt, funksjoner.
  • Makroen er en subrutine med parametere. Excel antar at siden parametere er nødvendig, og du kan ikke gi parametere ved å velge subrutinen fra makro listen, er det ikke nødvendig å liste det.
  • Subrutinen har blitt erklært Privat. Dette betyr at subrutinen er bare nyttig for å kode i modulen som den er deklarert.

Den eneste typen makro oppført i dialogboksen Makroer er en ikke-private subrutine med noen parametere. I visse situasjoner, men du kan ikke ha de som er listet heller. For eksempel kan du ha skapt noen universelle subrutiner som ikke gjør noe nyttig hvis kalles på egen hånd; de er designet for å bli kalt fra annen kode. For eksempel vurdere følgende makro:

Sub MySub ()
MsgBox "Vi kjører makroen"
End Sub

Denne makroen vil vises i dialogboksen Makroer. Hvis du ikke vil at det skal vises, er det flere løsninger du kan forfølge, som alle blir åpenbart fra undersøke de tre måtene som makroer er utelukket fra makro-listen. Den første potensiell løsning er å undersøke koden din og finne ut om det virkelig er "universelle". Trenger du koden fra mer enn en enkelt modul? Hvis du ikke gjør det, deretter erklære subrutinen Privat; det vil ikke vises i dialogboksen Makroer. Dermed blir den tidligere problem makro følgende:

Private Sub MySub ()
MsgBox "Vi kjører makroen"
End Sub

Den andre måten å skjule makro er å bare konvertere den til en funksjon. Dette høres kanskje rart ut, spesielt hvis du ikke ønsker å returnere alle verdier, men det er helt lovlig. I VBA en funksjon ikke nødt til å returnere en verdi. I fravær av eksplisitt erklære en returverdi, returnerer funksjonen en standard resultat (for eksempel, returnerer boolsk Falske, String returnerer "", etc.) Dermed kan problemet prosedyren endres til en funksjon og erklært som vist her:

Funksjon MySub () Som boolsk
MsgBox "Vi kjører makroen"
End Function

Denne prosedyren viser ikke i dialogboksen Makroer og krever ikke argumenter. Den returnerer False som standard, men dette resultatet kan ignoreres. Avhengig av arten av subrutinen du er i endring, kan det være til din fordel å virkelig la konverterte funksjon for å gå tilbake Sant eller usant avhengig av suksess for hva som gjøres i koden. I dette tilfellet er den konverterte funksjon en reell funksjon, og ikke egentlig en dummy subrutine, siden det er på vei tilbake noe av verdi.

Den tredje mulig løsning er å bruke noen dummy parametere med subrutinen. Du trenger ikke å gjøre noe med dem innenfor subrutinen seg selv, men ved å inkludere dem prosedyren ikke er oppført i makro listen. I dette scenariet, er problemet subrutine endret til noe sånt som følgende:

Sub MySub (Void As Integer)
MsgBox "Vi kjører makroen"
End Sub

Nå prosedyren ikke er oppført i makrolisten, men du må endre måten subrutinen kalles. Man må modifisere hvert tilfelle, slik at en parameter som er gått, selv om den er aldri brukt.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3291) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Skjule makroer.