Makro excel - automatické zamykání buněk

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Adriel12
nováček
Příspěvky: 3
Registrován: prosinec 16
Pohlaví: Nespecifikováno
Stav:
Offline

Makro excel - automatické zamykání buněk

Příspěvekod Adriel12 » 16 pro 2016 08:32

Ahoj,
rád bych navázal s dotazem na kolegův problém s uzamykáním buněk po zapsání hodnoty. Jelikož je toto téma uzavřené, vznesu dotaz tímto způsobem. viewtopic.php?f=35&t=172117
Bylo by možné tento kód, viz níže, specifikovat jen pro určitou oblast buněk?
Předem moc děkuji.

'heslo listu
Const cstrHeslo As String = "heslo"

'před použitím odstraňte zámek všech buněk listu

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngBunka As Range

'odemčení listu heslem
ActiveSheet.Unprotect cstrHeslo

'pro každou z měněných buněk
For Each rngBunka In Target.Cells

'je buňka prázdná?
If IsEmpty(rngBunka) Then
'vyjmi ji oblasti zamčených
rngBunka.Locked = False
Else
'uplatni na ni zámek
rngBunka.Locked = True
End If

Next rngBunka

'znovuzamčení listu heslem
ActiveSheet.Protect cstrHeslo

End Sub

Reklama
guest
Pohlaví: Nespecifikováno

Re: Makro excel - automatické zamykání buněk

Příspěvekod guest » 02 led 2017 10:56

Technicky - ano, dělá se to v událostní proceduře běžně.
Prakticky - něco mi říká, že to nebude fungovat, resp. že to nemá smysl.

Kód: Vybrat vše

'heslo listu
Const cstrHeslo As String = "heslo"
Const cstrOblastAdresa As String = "B2:E20"

'před použitím odstraňte zámek všech buněk listu

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngBunka As Range
    Dim rngOblast As Range

    'nastavení sledovan0 oblasti
    Set rngOblast = Range(cstrOblastAdresa)

    'došlo ke změně pouze ve sledované oblasti?
    If Union(Target, rngOblast).Address = rngOblast.Address Then

        'odemčení listu heslem
        ActiveSheet.Unprotect cstrHeslo

        'pro každou z měněných buněk
        For Each rngBunka In Target.Cells

            'je buňka prázdná?
            If IsEmpty(rngBunka) Then
                'vyjmi ji oblasti zamčených
                rngBunka.Locked = False
            Else
                'uplatni na ni zámek
                rngBunka.Locked = True
            End If

        Next rngBunka

        'znovuzamčení listu heslem
        ActiveSheet.Protect cstrHeslo

    End If

End Sub

Adriel12
nováček
Příspěvky: 3
Registrován: prosinec 16
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro excel - automatické zamykání buněk

Příspěvekod Adriel12 » 04 led 2017 14:32

Dobrý den,
moc děkuji za pomoc, funguje to tak, jak jsem si představoval. Ještě bych se zeptal, zdali by šla udělat úprava v tom, že by to uživatele vyzvalo k zadání hesla při rozkliknutí již zamčeného pole vyskakujícím oknem.
Ještě jednou moc děkuji.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Automatické přihlašování k fóru.
    od pcmaker » 10 srp 2025 13:24 » v PC-HELP - připomínky k fóru
    1
    2885
    od atari Zobrazit poslední příspěvek
    10 srp 2025 21:20
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12861
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    6120
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3807
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » 24 dub 2025 10:51 » v Kancelářské balíky
    5
    4466
    od atari Zobrazit poslední příspěvek
    26 dub 2025 09:11

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti