For å bruke en makro i Excel, må brukerne aktivere makroer. Det vil si at de må gi Excel tillatelse til å kjøre makroer i miljøet sitt. For å aktivere makroer, klikker brukere på Aktiver innhold-knappen i sikkerhetsadvarselen som dukker opp over formellinjen.
Poenget er at du kan skrive alle de fancy makroene i verden, men de vil aldri kjøre med mindre brukerne dine aktiverer makroer. Dette reiser spørsmålet; kan du tvinge brukere til å aktivere makroer? Svaret er ja – med litt lureri.
Ideen er relativt enkel. Du lager et ark som heter for eksempel START. Dette arket inneholder bare en enkel advarsel som sier at makroer må være aktivert. Deretter skjuler du alle arkene i arbeidsboken bortsett fra det START-arket. Til slutt skriver du en enkel makro som viser alle ark når arbeidsboken åpnes.
På dette tidspunktet, når arbeidsboken er åpnet, vil Excel be brukeren om å aktivere makroer. Brukere vil bli tvunget til å gjøre det fordi alt de vil se er startarket ditt. De andre arkene vil bli skjult!
For å få denne teknikken til å fungere, trenger du to makroer: En makro skjuler alt unntatt START-arket når arbeidsboken lukkes, og en annen makro som viser alle unntatt START-arket når arbeidsboken åpnes.
Først må du takle handlingene som må skje når arbeidsboken lukkes. :
Aktiver Visual Basic Editor ved å trykke ALT+F11 på tastaturet
I prosjektvinduet finner du navnet på prosjektet/arbeidsboken og klikker på plusstegnet ved siden av det for å se alle arkene.
Klikk på denne arbeidsboken.
I rullegardinlisten Begivenhet velger du FørLukk-hendelsen.
Skriv eller lim inn følgende kode:
Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
'Trinn 1: Deklarer variablene dine
Dim ws As Worksheet
'Trinn 2: Vis startarket
Sheets("START").Visible = xlSheetVisible
'Trinn 3: Begynn å gå gjennom alle regnearkene
For hver ws In This Workbook.Worksheets
'Trinn 4: Sjekk navn på hvert regneark
Hvis ws.Name <> "START" Da
'Trinn 5: Skjul arket
ws.Visible = xlVeryHidden
Slutt om
'Trinn 6: Gå til neste regneark
Neste ws
'Trinn 7: Lagre arbeidsboken
ActiveWorkbook.Save
End Sub
I trinn 1 erklærer du et objekt kalt ws for å lage en minnebeholder for hvert regneark du skal gå gjennom.
I trinn 2 sørger du for at START-arket er synlig.
I trinn 3 starter du loopingen, og forteller Excel at du vil evaluere alle regnearkene i denne arbeidsboken.
I trinn 4 sammenligner du ganske enkelt navnet START med arket som for øyeblikket sløyfes. Dette trinnet sikrer at handlingene som kommer neste blir brukt på alle ark unntatt START-arket.
Hvis arknavnene er forskjellige, skjuler du arket i trinn 5 ved å bruke egenskapen xlVeryHidden. Denne egenskapen skjuler ikke bare arket, men hindrer også brukeren i å vise det manuelt ved å bruke brukergrensesnittet.
Du går tilbake for å få neste ark i trinn 6.
I trinn 7, etter at alle arkene er evaluert, lagrer makroen arbeidsboken og avsluttes.
Nå må du skrive en makro for å håndtere alle handlingene som må skje når arbeidsboken åpnes:
Aktiver Visual Basic Editor ved å trykke ALT+F11.
I prosjektvinduet finner du navnet på prosjektet/arbeidsboken og klikker på plusstegnet ved siden av det for å se alle arkene.
Klikk på denne arbeidsboken.
I rullegardinlisten Begivenhet velger du Åpne hendelse.
Skriv eller lim inn følgende kode:
Privat underarbeidsbok_Open()
'Trinn 1: Deklarer variablene dine
Dim ws As Worksheet
'Trinn 2: Begynn å gå gjennom alle regnearkene
For hver ws In This Workbook.Worksheets
'Trinn 3: Vis alle regneark
ws.Visible = xlSheetVisible
'Trinn 4: Gå til neste regneark
Neste ws
'Trinn 5: Skjul startarket
Sheets("START").Synlig = xlVeryHidden
End Sub
I trinn 1 erklærer du et objekt kalt ws for å lage en minnebeholder for hvert regneark du går gjennom.
I trinn 2 starter du loopingen, og forteller Excel at du vil evaluere alle regnearkene i denne arbeidsboken.
I trinn 3 viser du arket som for øyeblikket sløyfes. Dette trinnet viser effektivt alle regneark etter hvert som hvert ark blir synliggjort.
Du går tilbake for å få neste ark i trinn 4.
Etter at alle arkene er gjort synlige, skjuler trinn 5 START-arket. Igjen bruker du egenskapen xlVeryHidden slik at brukeren ikke vil kunne vise arket manuelt ved å bruke brukergrensesnittet.
Etter at begge makroene er implementert, vil du ha en arbeidsbok som bare fungerer hvis brukeren aktiverer makroer!