Příspěvky uživatele


< návrat zpět

Strana:  « předchozí  1 2 3 4 5 6 7 8

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)

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.

Dobrý den,

Mám zámek na buňce D1, který se odemkne, pokud jiná buňka A1 obsahuje nějaký text / hodnotu.

Můžete, prosím, poradit, jak automaticky opakovat výše uvedené pro každý další řádek?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
If Target = "" Then
Range("D1").Locked = True
ElseIf Target <> "" Then
Range("D1").Locked = False
End If
ActiveSheet.Protect
End Sub


Strana:  « předchozí  1 2 3 4 5 6 7 8

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21