Mis tahes makro kasutamiseks Excelis peavad kasutajad makrod lubama. See tähendab, et nad peavad andma Excelile loa oma keskkonnas makrode käitamiseks. Makrode lubamiseks klõpsavad kasutajad valemiriba kohal kuvatavas turbehoiatuses nuppu Luba sisu.

Põhimõte on see, et saate kirjutada kõik maailma väljamõeldud makrod, kuid need ei tööta kunagi, kui teie kasutajad makrosid ei luba. See tekitab küsimuse; Kas saate sundida kasutajaid makrosid lubama? Vastus on jah – väikese trikiga.
Idee on suhteliselt lihtne. Loote lehe nimega START. Sellel lehel on ainult lihtne hoiatus selle kohta, et makrod peavad olema lubatud. Seejärel peidate töövihikus kõik lehed, välja arvatud see START-leht. Lõpuks kirjutate lihtsa makro, mis paljastab töövihiku avamisel kõik lehed.

Sel hetkel, kui töövihik on avatud, palub Excel kasutajal makrod lubada. Kasutajad on sunnitud seda tegema, sest nad näevad ainult teie alguslehte. Teised lehed peidetakse!
Selle tehnika toimimiseks vajate kahte makrot: üks makro peidab töövihiku sulgemisel kõik peale START-lehe ja teine makro, mis kuvab töövihiku avamisel kõik peale START-lehe.
Esmalt tegelege toimingutega, mis peavad toimuma töövihiku sulgemisel. :
Aktiveerige Visual Basic Editor, vajutades klaviatuuril klahvikombinatsiooni ALT+F11
Otsige projekti aknast üles oma projekti/töövihiku nimi ja klõpsake kõigi lehtede nägemiseks selle kõrval olevat plussmärki.
Klõpsake nuppu See töövihik.
Valige rippmenüüst Sündmus sündmus BeforeClose.

Sisestage või kleepige järgmine kood:
Privaatne alamtöövihik_BeforeClose (Tühista kui Boolean)
1. samm: deklareerige oma muutujad
Dim ws töölehena
2. samm: avage algusleht
Sheets("START").Visible = xlSheetVisible
3. samm: alustage kõigi töölehtede sirvimist
For Every Ws In ThisWorkbook.Worksheets
4. samm: kontrollige iga töölehe nime
Kui ws.Name <> "START" Siis
5. samm: peitke leht
ws.Visible = xlVeryHidden
Lõpeta Kui
6. samm: liikuge järgmise töölehe juurde
Järgmine ws
7. samm: salvestage töövihik
ActiveWorkbook.Save
Lõpeta alam
1. sammus deklareerite objekti nimega ws, et luua mälukonteiner iga töölehe jaoks, mida läbite.
2. sammus veendute, et START-leht on nähtav.
3. sammus alustate silmust, öeldes Excelile, et soovite hinnata kõiki selle töövihiku töölehti.
4. sammus võrdlete lihtsalt nime START lehega, mida praegu silmustatakse. See samm tagab, et järgmised toimingud rakendatakse kõigile lehtedele, välja arvatud START-leht.
Kui lehtede nimed on erinevad, peidate sammus 5 lehe atribuudi xlVeryHidden abil. See omadus mitte ainult ei peida lehte, vaid takistab kasutajal seda kasutajaliidese abil käsitsi peitmast.
Järgmise lehe saamiseks 6. sammus liigute tagasi.
Sammus 7, pärast kõigi lehtede hindamist, salvestab makro töövihiku ja lõpeb.
Nüüd peate kirjutama makro, et käsitleda kõiki toiminguid, mis töövihiku avanemisel juhtuma peavad:
Aktiveerige Visual Basic Editor, vajutades ALT+F11.
Otsige projekti aknast üles oma projekti/töövihiku nimi ja klõpsake kõigi lehtede nägemiseks selle kõrval olevat plussmärki.
Klõpsake nuppu See töövihik.
Valige rippmenüüst Sündmus suvand Ava sündmus.

Sisestage või kleepige järgmine kood:
Privaatne alamtöövihik_Open()
1. samm: deklareerige oma muutujad
Dim ws töölehena
2. samm: alustage kõigi töölehtede sirvimist
For Every Ws In ThisWorkbook.Worksheets
3. samm: kuvage kõik töölehed
ws.Visible = xlSheetVisible
4. samm: liikuge järgmise töölehe juurde
Järgmine ws
5. samm: peida algusleht
Sheets("START").Nähtav = xlVägaHidden
Lõpeta alam
1. sammus deklareerite objekti nimega w, et luua mälukonteiner iga töölehe jaoks, mida läbite.
2. sammus alustate silmust, öeldes Excelile, et soovite hinnata kõiki selle töövihiku töölehti.
3. toimingus näitate praegu silmuses oleva lehe peitmise tagasi. See samm paljastab tõhusalt kõik töölehed, kui iga leht muudetakse nähtavaks.
Järgmise lehe saamiseks 4. sammus liigute tagasi.
Kui kõik lehed on nähtavaks tehtud, peidab samm 5 START-lehe. Jällegi kasutate atribuuti xlVeryHidden, et kasutaja ei saaks kasutajaliidese abil lehte käsitsi peita.
Kui mõlemad makrod on rakendatud, on teil töövihik, mis töötab ainult siis, kui kasutaja lubab makrod!