< návrat zpět

MS Excel


Téma: Zámek buňky rss

Zaslal/a 17.7.2020 15:35

Dobrý den,
Bohužel ve VBA vůbec neumím a řešení by mi velmi pomohlo.

Zámek je závislý na číselnících, viz příloha.
1) oblast A2:K10 musí být přístupná k editaci, s tím, že v části A2:F10 je možné vybírat pouze hodnoty z číselníků.
2) buňka v sloupci L zůstává uamčena do té doby, dokud není vyplněna oblast A2:F10, kde povolené hodnoty k odemčení zámku jsou pouze žlutě označené buňky z číselníku, viz příloha.
3) zámek musí fungovat vždy k příslušnému řádku. Pokud předcházející řádky mají hodnoty prázdné, nesmí to ovlivnit zámek v řádku, kde jsou hodnoty vyplněné správně.
4) Poslední věc je, že pokud by došlo k náhodnému výmazu hodnoty v oblasti A2:F10, tak se buňka ve sloupci L musí vymazat a znovu zamknout.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1:F10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then Exit Sub

ActiveSheet.Unprotect

If Target = "" Then

Target.Offset(, 11).Locked = True

Else

Target.Offset(, 11).Locked = False

End If

ActiveSheet.Protect

End Sub

Omlouvám se, že obtěžuji, ale moc by mi toto řešení pomohlo. Děkuji.

Příloha: rar47358_mf_ciselniky.rar (15kB, staženo 21x)
Zaslat odpověď >

Strana:  1 2 3   další »
#047362
avatar
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim cell As Range
Dim i As Integer

Set KeyCells = Range("A1:F10")
If Intersect(Target, KeyCells) Is Nothing Then Exit Sub

i = 0
For Each cell In Range("A" & Target.Row & ":F" & Target.Row) 'kontrola, zda jsou všechny buňky v řádku A - F vyplněny
If Not IsEmpty(cell) Then 'když není buňka prázdná
i = i + 1 'připočítej 1
End If
Next cell

ActiveSheet.Unprotect

If i = 6 Then 'když jsou všechny buňky vyplněné
Range("L" & Target.Row).Locked = False 'buňku L odemkni
Else
Range("L" & Target.Row).Locked = True 'jinak zamkni
End If

ActiveSheet.Protect

End Sub

Příloha: zip47362_mf_ciselniky.zip (16kB, staženo 27x)
citovat
#047366
avatar
Dobrý den,
zámek funguje, děkuji za řešení. Bohužel není to kompletní, co potřebuji. Zámek musí být závislý na žlutých hodnotách v číselníku (pokud se vybere hodnota z žluté buňky, zámek se odemkne).
A ještě jedna věc, pokud by došlo k náhodnému výmazu hodnoty v oblasti A2:F10, tak se buňka ve sloupci L musí vymazat a znovu zamknout. Nesmí tam zůstat žádný údaj.
Omlouvám se, že takto obtěžuji, ale myslím si, že ve VBA by to mělo být pohodlnější, než to dělat přes funkce.

Jiří497 napsal/a:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim cell As Range
Dim i As Integer

Set KeyCells = Range("A1:F10")
If Intersect(Target, KeyCells) Is Nothing Then Exit Sub

i = 0
For Each cell In Range("A" & Target.Row & ":F" & Target.Row) 'kontrola, zda jsou všechny buňky v řádku A - F vyplněny
If Not IsEmpty(cell) Then 'když není buňka prázdná
i = i + 1 'připočítej 1
End If
Next cell

ActiveSheet.Unprotect

If i = 6 Then 'když jsou všechny buňky vyplněné
Range("L" & Target.Row).Locked = False 'buňku L odemkni
Else
Range("L" & Target.Row).Locked = True 'jinak zamkni
End If

ActiveSheet.Protect

End Sub

Příloha: 47362_mf_ciselniky.zip (16kB, staženo 4x)
citovat
#047368
avatar

MilaF napsal/a:


Omlouvám se, že takto obtěžuji, ale myslím si, že ve VBA by to mělo být pohodlnější, než to dělat přes funkce.


Zdravím, to by mě zajímalo, kde ty funkce jsou schované. 8citovat
#047369
avatar
1) Je to VBA. Procedura je umístěna v modulu listu OHL19

2) Pochopil jsem to tak, že v momentě, když se vyplní poslední žluté pole (v jednom řádku), tak se odemkne buňka v daném řádku ve sloupci L.
Kdy tedy má dojít k odemknutí buňky L? Kdykoli vyplním nějakou buňku A:F? Pak mi není jasné, kdy má být buňka L zamknuta.

Vycházím z toho, že když je list prázdný, tak je L uzamknuto. Vyplním hodnoty A1,B1,C1,D1,E1 a F1 a až po vyplnění poslední hodnoty se odemkne buňka L1.
Vyplním B7, D7, E7, F7, A7, C7 (napřeskáčku) a teprve po vyplnění poslední žluté buňky se odemkne L7.citovat
#047372
avatar
Problém je v tom, že se buňky musí odemykat na základě žlutých buněk z listu číselníky. Na listu OHL19 jsou v polích A:F pro uživatele k dispozici všechny hodnoty, avšak zámek musí reagovat pouze na ty, které uživatel vybere a které jsou žluté z listu číselníky.

A dále, když už tam je datum ve sloupci L napsané, tak zůstane zapsané, i když se ve stejném řádku nějaká hodnota ze sloupců A:F vymaže. Pokud by k tomu došlo (např. omylem), tak se datum z buňky L musí vymazat a L buňka znovu uzamknout, dokud nejsou splněny podmínky k otevření zámku.
Děkuji za ochotu a pomoc.

Jiří497 napsal/a:

1) Je to VBA. Procedura je umístěna v modulu listu OHL19

2) Pochopil jsem to tak, že v momentě, když se vyplní poslední žluté pole (v jednom řádku), tak se odemkne buňka v daném řádku ve sloupci L.
Kdy tedy má dojít k odemknutí buňky L? Kdykoli vyplním nějakou buňku A:F? Pak mi není jasné, kdy má být buňka L zamknuta.

Vycházím z toho, že když je list prázdný, tak je L uzamknuto. Vyplním hodnoty A1,B1,C1,D1,E1 a F1 a až po vyplnění poslední hodnoty se odemkne buňka L1.
Vyplním B7, D7, E7, F7, A7, C7 (napřeskáčku) a teprve po vyplnění poslední žluté buňky se odemkne L7.
citovat
#047373
avatar
Aha, špatně jsem četl a jak jsem viděl žlutá, vztahoval jsem to na buňky A2: F10 listu OHL19.

To by mělo jít, ale nebudu to dělat podle barvy, ale ke každému číselníku vytvořím "Seznam povolených slov",což budou ty žlutě označené.

Ale dostanu se k tomu až v noci nebo zítra.citovat
#047375
avatar
V pohodě, budu rád za nápad, případně i za řešení.
Děkuji.

Jiří497 napsal/a:

Aha, špatně jsem četl a jak jsem viděl žlutá, vztahoval jsem to na buňky A2: F10 listu OHL19.

To by mělo jít, ale nebudu to dělat podle barvy, ale ke každému číselníku vytvořím "Seznam povolených slov",což budou ty žlutě označené.

Ale dostanu se k tomu až v noci nebo zítra.
citovat
#047379
avatar
Zkuste otestovat.
Příloha: zip47379_mf_ciselniky.zip (20kB, staženo 22x)
citovat
#047393
avatar
Jirko, klobouk dolů. Moc, moc, moc děkuji.
Funguje, jak má.
Jste machr a super!

Jiří497 napsal/a:

Zkuste otestovat.Příloha: 47379_mf_ciselniky.zip (20kB, staženo 2x)
citovat
#047398
avatar
Jsem rád, že to funguje.
S komplimenty bych to moc nepřeháněl (i když se to fakt dobře čte 1 ).citovat

Strana:  1 2 3   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