< návrat zpět

MS Excel


Téma: makro - uzamčení odemknutých a naplněných buněk rss

Zaslal/a 19.6.2013 8:36

Prosím o pomoc s vytvořením makra ve VBA.
Mám v excelu tabulku, kde některá pole jsou uzamčená a jiná odemčená. Do odemknutých se postupně zapisují data. Potřebuji makro, které když zpustím, tak vyhledá veškeré odemknuté buňky, které obsahují data a uzamkne je. Prázdné buňky by měly zůstat odemknuté. Toto makro by mělo fungovat pro celý sešit.
Pomůže někdo? Předem díky Hanka

Zaslat odpověď >

#013979
avatar
tak urobil som nejaky priklad je to robene na cely dokument v tvojom pripade to urcite bude stacit len na tabulku tak potom si to uprav podla seba

hacik je len v tom ze pred spustenim makra musis sheet odomknut(v mojom pripade nieje pod heslom) a potom len nastavovat pre urcite cells vlasnost "Locked" na true alebo false

... kedze vies robit s vba tak to prepisat na svoje uceli bude hracka
Příloha: zip13979_test.zip (13kB, staženo 22x)
citovat
#013980
avatar
nevím proč, ale vůbec mi to nejede. Po spuštění makra přestane sešit "odpovídat" a zamrzne :-( Tobě to funguje?citovat
#013981
avatar
- popravde ja som to skusal len na 5bunkach. Neskusal som to na celom dokumente. A je aj dost mozne ze pri celom dokumente to zamrzne kedze to robi podmienku pre kazdu bunku :))))

zadaj si minimalnu a maximalnu hodnotu x a y a nebude to mrznut :)))

For x = 1 To ActiveSheet.Rows.Count
For y = 1 To ActiveSheet.Columns.Count

prepis na svoje uceli napr.

For x = 10 To 20 //riadok od 10 do 20
For y = 5 To 10 //stlpec od 5 do 10

- sry malo mato trknut ze pre cely dokument toto nebude idealne.citovat
#013982
avatar
Super, s omezením to projde v klidu. Jen to funguje pro aktivní list. Dá se to ještě nějak upravit, aby to prošlo všemi listy, příp. definovat kterými?citovat
icon #013983
eLCHa
@Palooo
Cyklus je zbytečný

Buňky, kterých se to týká, dejte do pojmenované oblasti.
V ní pak vyberte všechny neprázdné buňky (SpecialCells) a nastavte vlastnost Locked na True.
Toť všecitovat
#013984
avatar
eLCHa:
takto?
Set rData = Sheets("TAB").Cells(5, 2).CurrentRegion
rData.SpecialCells(xlTextValues).Locked = True
citovat
icon #013985
eLCHa
Musel bych vidět ten soubor, protože nevím jak to má udělané (věčné téma přílohy), ale nějak takto

Range("ToLock").SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues + xlLogical).Locked = Truecitovat
icon #013986
eLCHa
Teď mě ještě napadlo, že vlastně asi nemusí ani vytvářet tu pojmenovanou oblast, protože když jsou ostatní buňky zamčené, taky by mohlo fungovat
ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues + xlLogical).Locked = True

a v tom případě pouze projedete cyklem všechny listy a provedete pro ně
s odemykáním snad 5 řádků?citovat
#013987
avatar
Super, díky za pomoc :-)citovat
#013988
avatar
Sub Makro1()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Protect Contents:=False
sh.Cells.Locked = False
sh.UsedRange.Locked = True
sh.UsedRange.SpecialCells(xlCellTypeBlanks).Locked = False
sh.Protect Contents:=True
Next
End Subcitovat

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