< návrat zpět

MS Excel


Téma: Zákaz smazání listu rss

Zaslal/a 25.5.2015 11:02

Potřeboval bych zakázat odstranění určitých listů v sešitu (makrem). Přitom ale sešit musí(!) zůstat odemčený.
První problém je, že neumím odchytit ani příslušnou událost.
A druhý problém - zakázat samotné odstranění, případně vrátit odstranění listu zpět.
Jak by se to dalo řešit?

Zaslat odpověď >

Strana:  « předchozí  1 2
#025501
avatar

eLCHa napsal/a:

Mno ono to možná funguje, ale tato událost je do VBA přidána kdy? ve verzi 2013? Ve starších Vám to fungovat nebude a nehodí ani chybu, tzn musíte mít jistotu, že všichni používají 2013. Taky tam mohl MS přidat Cancel :( .

Tipl bych že to padání způsobuje běžící kód v zavíraném sešitě, ale je to jen tip.

No mám excel 2010.citovat
icon #025502
eLCHa
Souhlasím s marjankajem a psal jsem to už výše, ale teď mně napadla jednoduchá možnost. Zjistit, zda byl odtraněn list není problém, takže nezakazovat odstranění listu, ale místo toho zakázat uložení sešitu, pokud byl list odstraněn. To je řešitelné a celkem snadno, ale ne v pátek ve 14:00 ;)citovat
#025503
avatar
Je to vytvořeno i spouštěno v Excelu 2013
- ukázka v příloze.
Hm, Cancel tam není:-(
Příloha: zip25503_test.xlsm.zip (15kB, staženo 25x)
citovat
#025504
avatar
No zakázať uloženie by taktiež išlo. Ale to asi nebude riešiť problém ak všetko na liste vymažem, prípadne list premenujem.
Možno by to chcelo uviesť aj dôvody, prečo to takto zadávateľ požaduje.citovat
icon #025505
eLCHa
@marjankaj
máte 2010 a tu událost tam máte?

Mno - pokud bych to měl řešit jinak než zámkem (což bych asi nedělal), řešil bych to takto - přejmenování problém není a vymazání obsahu už vůbec ne.citovat
#025506
avatar
1) Zamknout strukturu sešitu nemůžu, protože prostě potřebuju mít možnost přidávat listy (např. kopírováním z jiného sešitu), odstraňovat některé listy apod.

2) Přejmenování listu mi nevadí, v makrech se odkazuju pomocí CodeName listu.

3) Smazání obsahu listu řeší zámek listu - uživatel ho nesmaže.

4) Když zakážu uložení sešitu, tak uživatel může přijít o mnoho úprav, které mezitím provedl - takže ani toto řešení není pro mě vhodné:-(

Ale díky za snahu...
Nebo má někdo jiný nápad?citovat
#025507
avatar
@eLCHa
Nie ani ja tam tú udalosť nemám. A reagoval som na iný príspevok. Nejako sa mi to časovo poposúvalo.
A myslím, že v podstate je jedno či vymažem dáta na liste a list nechám prázdny alebo odstránim list.
Teda pokiaľ zadávateľ nemá iný názor.citovat
#025508
avatar
@CmeldaBoris
A to sa nedalo napísať na začiatku?
A toto si neprotirečí?
protože prostě potřebuju mít možnost přidávat listy (např. kopírováním z jiného sešitu), odstraňovat některé listy apod.citovat
#025509
avatar

CmeldaBoris napsal/a:

Řeším ten samý problém - nedovolit uživateli smazat určité listy. Jdu tímto směrem:
1) Odchytím událost na úrovni listu Worksheet_BeforeDelete()
2) Oznámím uživateli, že je zakázáno mazat tento list
3) Uložím sešit ThisWorkbook.Save (ještě obsahuje mazaný list)
4) Zavřu sešit ThisWorkbook (s oním listem)

FUNGUJE TO, list není odstraněn, ALE Excel při tom spadne (hláška Excel přestal pracovat) i s případnými ostatními otevřenými sešity.

Měl by někdo nějaký tip, jak to udělat, aby se Excel korektně ukončil?


No nemám excel2013.
Ale ak pred udalosťou BeforeSave, zatvoríš zošit ThisWorkBook, tak čo sa potom má uložiť po tej udalosti. Veď žiadny zošit nezostane otvorený(Hlavne ten ThisWorkBook nie)
Ten bod č. 4 netreba vyhodiť?citovat
icon #025521
eLCHa
Mno o nemožnosti použití zámku jste mně nepřesvědčil a ani já Vás nebudu přesvědčovat o opaku.

Zakázání uložení - dejte tam hlášku. Budou informováni. Navíc ve 2013 můžete využít událost, tzn uložit a pak zobrazit, že od této chvíle nelze uložit. Takže o nic nepřijdou.

Ve 2013 ještě můžete využít Vaší událost k tomu, že před odstraněním se list zkopíruje, přejmenuje na původní název. Pak dojde k odtranění originálu, ale kopie tam zůstane. Pokud to uděláte dobře, budete mít stejný sešit. Jediný rozdíl bude v kódovém jméně listu.

Váš kód jsem nestudoval, ale hrát si s ukládáním je na dlouhé lokte.

Toto je ode mne k tomuto tématu vše.citovat

Strana:  « předchozí  1 2

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje