Overenie buniek

Zapisovať dáta v tabuľke Excelu môže aj menej skúsený užívateľ. Vtedy ale skúsenejší kolega/kolegyňa musí zabezpečiť tabuľku tak, aby podľa možnosti začínajúci užívateľ nič nepokazil. V programe Microsoft Excel je mnoho spôsobov, ako obmedziť používateľov pri prezeraní a zmene údajov v zošitoch a hárkoch. Prvou možnosťou je využitie príkazu Údaje-overenie, ktorý máme v tabuľkách Excelu k dispozícii. Z obr.1 a z obr.2 je jasné, že môžeme zadať povolené hodnoty, prípadne medze. Pri chybnom zadaní sa objaví chybové hlásenie a údaje je treba zadať znova.

Overiť-nastavenie

Overiť-údaje
Druhou možnosťou je zamknúť zvolené bunky (najmä tie, v ktorých sú vzorce - aby menej skúsený užívateľ náhodou vzorce nevymazal) a zadať ochranu listu Excelu heslom. Môžeme to urobiť priamo v tabuľke cez Formát-bunky-ochrana. Zamkneme potrebné bunky, prípadne necháme skryť vzorce. Zamknutie bude účinné len ak zadáme Nástroje-ochrana-zabezpečiť hárok. Môžeme zadať aj heslo, ale nie je to povinné.
    Tretia možnosť je zamknutie buniek a zabezpečenie listu prostredníctvom programu vo VBA. Túto možnosť ilustruje príklad, ktorý vidíme na obr. 3 a 4. Na obr. 3 je nezamknutá oblasť A1:E7, v riadku vzorcov je je viditeľný vzorec, ktorý je v bunke E2. Na obr. 4 je zobrazená tabuľka, ktorá bola zamknutá prostredníctvom kód VBA Triedi(). Zamknuté sú len tie bunky, v ktorých je vzorec a je usporiadaná podľa prvého stĺpca tabuľky, vzostupne podľa abecedy. V riadku vzorcov nevidíme vzorec ako na obr. 3, lebo sme ho nechali skryť. Zamknúť môžeme aj bez triedenia - kód VBA zamkni(). Napokon krátky program odomkni() zabezpečí odomknutie buniek. Užívateľ, ktorý nemá k dispozícii program, ktorým bol hárok zamknutý a opatrený heslom, ak vie heslo, môže aj bez programu bunky odomknúť.
Vzorce

Dáta

Sub zamkni()
  ActiveSheet.Cells.Select
  Selection.Locked = False  ' odomkne bunky v celom liste
  ActiveSheet.Range("A2:E7").Select
  ' oblasť A2:E7 si zmeňte všade podľa Vašich potrieb
  For i = 1 To 7 ' riadky
        For j = 1 To 5 'stĺpce
            If Cells(i, j).HasFormula = True Then
            ' ak sú v makre bunky so vzorcami
                Selection.FormulaHidden = True
                ' vzorce skryje
                Cells(i, j).Locked = True
                ProtectContents = True
                ' bunky so vzorcami zamkne
            End If
        Next j
  Next i
  ActiveSheet.Protect "avozarm"
  ' opatrí list Excelu heslom avozarm
End Sub

Sub odomkni()
    ActiveSheet.Unprotect "avozarm"
    Range("A2:E7").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
End Sub

Sub triedí()
' odomkne a zoradí a potom zamkne len tie bunky, kde sú vzorce
    ActiveSheet.Unprotect "avozarm"
    Range("A2:E7").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  For i = 1 To 7 ' riadky
        For j = 1 To 5 'stĺpce
            If Cells(i, j).HasFormula = True Then
                Selection.FormulaHidden = True
                Cells(i, j).Locked = True
                ProtectContents = True
            End If
        Next j
  Next i
    ActiveSheet.Protect "avozarm"
End Sub
Príklady boli vypracované v Excel 2000 pod OS Windows XP
Horeuvedené makrá sú v súbore zamok.zip.
Stiahnite si zamok.zip    Veľkosť: 10 kB

Valid HTML 4.01 Transitional
Stránka je v súlade s aktuálnymi normami.



©  Klára Mrázová