< návrat zpět

MS Excel


Téma: Makro na autozamykání listu zamyká i jiné sešity rss

Zaslal/a 4.9.2017 14:22

Ahoj, dobrý den,
prosím o pomoc,
mám sešit s makrem na automatické zamykání buněk resp. listu při změně a obrovský problém, protože se stává, že se zde nastaveným heslem zamkne jakýkoliv jiný sešit. Setkal jste se s tím někdo prosím? Čím to může být, kde může být chyba? Přiznávám, že makra až tak moc neumím a u tohoto z velké části nejsem autorem, ale z mé strany v něm nedošlo k velkému zásahu a funguje perfektně. Přikládám makro, které mám v sešitu na listu.
Díky moc

Příloha: txt37515_makro.txt (2kB, staženo 54x)
Zaslat odpověď >

Strana:  1 2   další »
#037516
avatar
Dost dobře není možné, aby zamykání listů vedlo na zamčení celého sešitu. Jde o dva odlišné objekty. Nevhodně napsané, případně špatně umístěné makro ale může zamknout i listy v jiných otevřených sešitech. Bezpečné je umístění makra v rámci příslušného listu, který se má zamykat. Pokud zamykám aktivní list, měl bych si ověřit, zda je aktivní právě ten, který chci zamknout. Víc bez ukázky neumím říct.citovat
#037517
avatar
Uf, no, uznávám, že jsem poněkud roztržitý člověk, ale ono do nadpisu už se to stejně delší nevešlo... samozřejmě se zamykají pouze listy v jiných sešitech. Makro mám umístěné v sešitu pouze na listu, který chci zamykat. Tomuhle úplně nerozumím:

Vovka napsal/a:

Pokud zamykám aktivní list, měl bych si ověřit, zda je aktivní právě ten, který chci zamknout.
Makro je na listu, tedy jen a pouze na tom listu, který se má zamykat ve chvíli, kdy na něm proběhne změna a v tu chvíli snad aktivní být musí...? Listy v jiných sešitech se nezamykají úplně stále a pořád a pokaždé, ale jen někdy, bohužel nedokážu ani přibližně určit situaci, kdy k tomu může docházet, protože mně se to nikdy nestalo, děje se to jen kolegům, pro které je sešit určen, ale občas je to docela fatální.citovat
#037518
elninoslov

janda30 napsal/a:

...ve chvíli, kdy na něm proběhne změna a v tu chvíli snad aktivní být musí...

To nieje pravda. Zmenu na liste môže vyvolať aj iné makro volané dokonca aj z iného súboru, nielen z iného listu. Keď ale dochádza k zmene užívateľskou zmenou bunky, tak by aktívny mal byť. Mal (?).

Ale mám podobnú nelogickú skúsenosť spred asi 1,5 roka, kde mi označenie ComboBoxu vyhadzovalo nelogicky-nepravideľne chybu neexistencie objektu, aj keď tam bol. Buď bola udalosť SheetSelectionChange listu1 zošituA záhadne volaná z listu2 zošituB, alebo ComboBox.Parent sa záhadne menil. Neviem už ako sme to riešili, ale tuším tiež iba kontrolou, či daný list v ThisWorkbook sa rovná aktívnemu listu v aktívnom okne.

Vyzerá to ako holý nezmysel, no tiež mi to logika neberie.
Konkrétne ale asi neporadím.citovat
#037519
avatar
Změnu na listu provádí pouze uživatel, žádná jiná makra ani jiné sešity s makry se nepoužívají, to vím bezpečně. Problém je, když uživatelé tohoto sešitu potřebují pracovat ještě s jiným sešitem. Občas se jim zamknou listy i v těch jiných sešitech a oni tam pak nemohou psát, což je prostě fatální problém. Včera se dokonce stalo, že se zamknul list ve sdíleném sešitu. To vůbec nechápu. Museli jsme sešit odsdílet a odemknout..citovat
#037520
avatar
Luštíme zbytečný hlavolam. Chybí nám dvě informace:
1. jak se volá to zamykání (nejspíš Worksheet_Change, ale mohlo by to být i jinak),
2. jak je to "zamykací" makro napsané.
To snad není firemní tajemství, takže by mělo jít zveřejnit.
S vysokou jistotou bude chyba mezi klávesnicí a židlí 1 .citovat
#037521
elninoslov
Odstavte
On Error Resume Next
A čekujte, či Vám hodí na nejakom riadku chybu. Páč asi kvôli hádzaniu nejakej chyby to tam vôbec je.citovat
#037522
avatar
Nepomohlo by

Set rngSledovanaOblast = Workbooks("...").Sheets("...").range("H8:N1005")citovat
#037524
avatar
Až teď jsem si všiml, že od začátku vlákna je k dispozici obsah příslušné událostní procedury. Jev, který popisujete, nejspíš souvisí s tím, že z jiného aktivního listu došlo ke změně na listu, k němuž patří ta procedura. V důsledku toho pak špatně zafunguje příkaz
ActiveSheet.Protect Password:="HESLO"
který zamkne list, z nějž byla změna realizována. Doporučuji příkaz upravit na
ThisWorkbook.Sheets("JménoListu").Protect Password:="HESLO"citovat
#037525
avatar

elninoslov napsal/a:

Odstavte
On Error Resume Next


chybu to neháže, On Error Resume Next je tam kvůli chybě způsobené uživatelem - při špatném vyplnění buňky třeba, asi by existovalo i vhodnější řešení, ale toto je dostačující a makro bez jakéhokoliv zásahu běží dál, což je hlavní

JoKe napsal/a:


Set rngSledovanaOblast = Workbooks("...").Sheets("...").range("H8:N1005")


tohle nevím, můžu zkusit, ale spíš si představuji, že je problém v tom, co už tu vlastně padlo, že se zamyká aktivní list, nikoliv konkrétní list v konkrétním sešitu, všechny kódy na automatické zamykání listu, které google najde, používají Activesheet.protect, takže mně nenapadlo, jestli to jde i jinak..citovat
#037526
avatar

Vovka napsal/a:

Jev, který popisujete, nejspíš souvisí s tím, že z jiného aktivního listu došlo ke změně na listu, k němuž patří ta procedura. V důsledku toho pak špatně zafunguje příkaz
ActiveSheet.Protect Password:="HESLO"
který zamkne list, z nějž byla změna realizována. Doporučuji příkaz upravit na
ThisWorkbook.Sheets("JménoListu").Protect Password:="HESLO"


No, jak by mohlo dojít ke změně z jiného listu, to teda nevím, uživatelé vyplňují list ručně, popřípadě do něj kopírují údaje ze specializovaného SW, maximálně kopírují údaj ze sešitu s makrem do jiného. Ale zamkne se jim úplně klidně i list v sešitu, kam nic nekopírovali. Pro mě je to teda záhada. Ale tato úprava by snad měla mít požadovaný efekt.
Vyzkouším a uvidíme. Každopádně díky.citovat

Strana:  1 2   další »

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