For at bruge en hvilken som helst makro i Excel, skal dine brugere aktivere makroer. Det vil sige, at de skal give Excel tilladelse til at køre makroer i deres miljø. For at aktivere makroer skal brugere klikke på knappen Aktiver indhold i sikkerhedsadvarslen, der dukker op over formellinjen.
Den nederste linje er, at du kan skrive alle de smarte makroer i verden, men de vil aldrig køre, medmindre dine brugere aktiverer makroer. Dette rejser spørgsmålet; kan du tvinge brugere til at aktivere makroer? Svaret er ja – med lidt tricks.
Ideen er forholdsvis enkel. Du opretter et ark med navnet for eksempel START. Dette ark indeholder kun en simpel advarsel om, at makroer skal aktiveres. Du skjuler derefter alle ark i projektmappen undtagen det START-ark. Til sidst skriver du en simpel makro, der viser alle ark, når projektmappen åbnes.
På dette tidspunkt, når projektmappen er åbnet, vil Excel bede brugeren om at aktivere makroer. Brugere vil blive tvunget til at gøre det, fordi det eneste, de vil se, er dit startark. De andre ark vil blive skjult!
For at få denne teknik til at fungere, skal du bruge to makroer: En makro skjuler alt undtagen START-arket, når projektmappen lukkes, og en anden makro, der viser alle undtagen START-arket, når projektmappen åbnes.
Først skal du tackle de handlinger, der skal ske, når projektmappen lukkes. :
Aktiver Visual Basic Editor ved at trykke på ALT+F11 på dit tastatur
Find dit projekt-/projektmappenavn i projektvinduet og klik på plustegnet ved siden af det for at se alle arkene.
Klik på ThisWorkbook.
I rullemenuen Begivenhed skal du vælge begivenheden Før Luk.
Indtast eller indsæt følgende kode:
Privat underarbejdsbog_BeforeClose(Annuller som boolesk)
Trin 1: Erklær dine variabler
Dim ws As Arbejdsark
Trin 2: Vis startarket
Sheets("START").Visible = xlSheetVisible
Trin 3: Begynd at gennemgå alle arbejdsark
For hver ws In ThisWorkbook.Worksheets
Trin 4: Tjek hvert regnearks navn
Hvis ws.Name <> "START" Så
Trin 5: Skjul arket
ws.Visible = xlVeryHidden
Afslut Hvis
Trin 6: Gå til næste regneark
Næste ws
Trin 7: Gem projektmappen
ActiveWorkbook.Save
Slut Sub
I trin 1 erklærer du et objekt kaldet ws for at skabe en hukommelsesbeholder for hvert regneark, du vil gå igennem.
I trin 2 sikrer du dig, at START-arket er synligt.
I trin 3 starter du loopingen og fortæller Excel, at du vil evaluere alle regneark i denne projektmappe.
I trin 4 sammenligner du blot navnet START med det ark, der i øjeblikket er ved at blive sløjfet. Dette trin sikrer, at de næste handlinger anvendes på alle ark undtagen START-arket.
Hvis arknavnene er forskellige, skjuler du i trin 5 arket ved at bruge egenskaben xlVeryHidden. Denne egenskab skjuler ikke kun arket, men forhindrer også brugeren i manuelt at vise det ved at bruge brugergrænsefladen.
Du går tilbage for at få det næste ark i trin 6.
I trin 7, efter at alle ark er evalueret, gemmer makroen projektmappen og afsluttes.
Nu skal du skrive en makro for at håndtere alle de handlinger, der skal ske, når projektmappen åbnes:
Aktiver Visual Basic Editor ved at trykke ALT+F11.
Find dit projekt-/projektmappenavn i projektvinduet og klik på plustegnet ved siden af det for at se alle arkene.
Klik på ThisWorkbook.
I rullemenuen Begivenhed skal du vælge Åbn begivenhed.
Indtast eller indsæt følgende kode:
Privat underarbejdsbog_Åben()
Trin 1: Erklær dine variabler
Dim ws As Arbejdsark
Trin 2: Begynd at gennemgå alle arbejdsark
For hver ws In ThisWorkbook.Worksheets
Trin 3: Vis alle regneark
ws.Visible = xlSheetVisible
Trin 4: Gå videre til næste regneark
Næste ws
Trin 5: Skjul startarket
Sheets("START").Visible = xlVeryHidden
Slut Sub
I trin 1 erklærer du et objekt kaldet ws for at skabe en hukommelsesbeholder for hvert regneark, du går igennem.
I trin 2 starter du loopingen og fortæller Excel, at du vil evaluere alle regneark i denne projektmappe.
I trin 3 viser du det ark, der i øjeblikket er ved at blive sløjfet. Dette trin viser effektivt alle arbejdsark, efterhånden som hvert ark gøres synligt.
Du går tilbage for at få det næste ark i trin 4.
Når alle ark er gjort synlige, skjuler trin 5 START-arket. Igen bruger du egenskaben xlVeryHidden, så brugeren ikke vil være i stand til manuelt at vise arket ved at bruge brugergrænsefladen.
Når begge makroer er implementeret, har du en projektmappe, der kun fungerer, hvis brugeren aktiverer makroer!