Да би користили било који макро у Екцел-у, ваши корисници морају омогућити макрое. Односно, морају да дају Екцелу дозволу за покретање макроа у свом окружењу. Да би омогућили макрое, корисници кликну на дугме Омогући садржај у безбедносном упозорењу које се појављује изнад траке формуле.
Суштина је да можете написати све фенси макрое на свету, али они се никада неће покренути осим ако ваши корисници не омогуће макрое. Ово поставља питање; можете ли натерати кориснике да омогуће макрое? Одговор је да - уз мало лукавства.
Идеја је релативно једноставна. Правите лист под називом, рецимо, СТАРТ. Тај лист садржи само једноставно упозорење које наводи да макрои морају бити омогућени. Затим сакријете све листове у радној свесци осим тог СТАРТ листа. Коначно, пишете једноставан макро који открива све листове када се радна свеска отвори.
У овом тренутку, када се радна свеска отвори, Екцел ће тражити од корисника да омогући макрое. Корисници ће бити приморани да то учине јер ће све што ће видети је ваш почетни лист. Остали листови ће бити сакривени!
Да би ова техника функционисала, потребна су вам два макроа: један макро сакрива све осим СТАРТ листа када се радна свеска затвори, а други макро који открива све осим СТАРТ листа када се радна свеска отвори.
Прво, позабавите се радњама које треба да се десе када се радна свеска затвори. :
Активирајте Висуал Басиц Едитор притиском на АЛТ+Ф11 на тастатури
У прозору пројекта пронађите име пројекта/радне свеске и кликните на знак плус поред њега да бисте видели све листове.
Кликните на ову радну свеску.
У падајућем оквиру Догађај изаберите догађај Пре затварања.
Откуцајте или налепите следећи код:
Приватна под радна свеска_БефореЦлосе(Откажи као Боолеан)
'Корак 1: Декларисајте своје променљиве
Дим вс Ас Ворксхеет
„Корак 2: Откријте почетни лист
Схеетс("СТАРТ").Висибле = клСхеетВисибле
„Корак 3: Почните да петљате кроз све радне листове
За сваки вс Ин ТхисВоркбоок.Ворксхеетс
„Корак 4: Проверите назив сваког радног листа
Ако вс.Наме <> "СТАРТ" Онда
„Корак 5: Сакријте лист
вс.Висибле = клВериХидден
Крај Ако
„Корак 6: Пређите на следећи радни лист
Нект вс
„Корак 7: Сачувајте радну свеску
АцтивеВоркбоок.Саве
Енд Суб
У кораку 1, декларишете објекат под називом вс да креирате меморијски контејнер за сваки радни лист кроз који ћете проћи.
У кораку 2, уверите се да је СТАРТ лист видљив.
У кораку 3 започињете петљу, говорећи Екцел-у да желите да процените све радне листове у овој радној свесци.
У 4. кораку, једноставно упоредите име СТАРТ са листом који је тренутно у петљи. Овај корак обезбеђује да се следеће радње примењују на све листове осим на СТАРТ лист.
Ако су имена листова различита, у кораку 5 сакривате лист помоћу својства клВериХидден. Ово својство не само да сакрива лист већ и спречава корисника да га ручно открије помоћу корисничког интерфејса.
Враћате се назад да бисте добили следећи лист у кораку 6.
У кораку 7, након што се процене сви листови, макро чува радну свеску и завршава.
Сада морате да напишете макро за руковање свим радњама које треба да се десе када се радна свеска отвори:
Активирајте Висуал Басиц Едитор притиском на АЛТ+Ф11.
У прозору пројекта пронађите име пројекта/радне свеске и кликните на знак плус поред њега да бисте видели све листове.
Кликните на ову радну свеску.
У падајућем оквиру Догађај изаберите Опен догађај.
Откуцајте или налепите следећи код:
Приватна под Радна свеска_Опен()
'Корак 1: Декларисајте своје променљиве
Дим вс Ас Ворксхеет
„Корак 2: Почните да петљате кроз све радне листове
За сваки вс Ин ТхисВоркбоок.Ворксхеетс
„Корак 3: Откријте све радне листове
вс.Висибле = клСхеетВисибле
„Корак 4: Пређите на следећи радни лист
Нект вс
„Корак 5: Сакријте почетни лист
Схеетс("СТАРТ").Висибле = клВериХидден
Енд Суб
У кораку 1, декларишете објекат који се зове вс за креирање меморијског контејнера за сваки радни лист кроз који пролазите.
У кораку 2 започињете петљу, говорећи Екцел-у да желите да процените све радне листове у овој радној свесци.
У 3. кораку откривате лист који је тренутно у петљи. Овај корак ефективно открива све радне листове јер сваки лист постаје видљив.
Враћате се назад да бисте добили следећи лист у кораку 4.
Након што сви листови постану видљиви, корак 5 сакрива СТАРТ лист. Опет, користите својство клВериХидден тако да корисник неће моћи ручно да открије лист помоћу корисничког интерфејса.
Након што се оба макроа имплементирају, имаћете радну свеску која ће радити само ако корисник омогући макрое!