Jak chránit buňky na základě data v aplikaci Excel?
Normálně můžeme list chránit, abychom ostatním zabránili v úpravách nebo úpravách hodnot buněk, ale někdy musíte buňky chránit na základě data. Například chci chránit další buňky, ale povolit pouze úpravu hodnot buněk dnešního data, jak ukazuje následující snímek obrazovky, tento článek bude hovořit o tom, jak chránit buňky na základě data.
Chraňte všechny řádky kromě dnešního řádku s datem pomocí kódu VBA
Chraňte všechny řádky, které datum uplynulo, kódem VBA
Chraňte všechny řádky kromě dnešního řádku s datem pomocí kódu VBA
Povolte pouze úpravu řádku, který se rovná dnešnímu datu, následující kód vám může pomoci, postupujte takto:
1. Klikněte pravým tlačítkem na kartu listu, kterou chcete chránit buňky na základě data, a poté vyberte Zobrazit kód z kontextové nabídky ve vyskakovacím okně Microsoft Visual Basic pro aplikace zkopírujte a vložte následující kód do prázdného modulu:
Kód VBA: Chraňte všechny řádky kromě dnešního řádku s datem:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20161025
If Range("E" & Selection.Row).Value <> Date Then
ActiveSheet.Protect Password:="111111"
MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub
Poznámka: Ve výše uvedeném kódu písmeno E je záhlaví sloupce, kde se nachází datum, “111111„Je heslo k ochraně tohoto listu. Můžete je podle potřeby změnit.
2. Poté uložte a zavřete toto okno s kódem.
(1.) Pokud kliknete na jiné buňky za dnešním datovým řádkem, objeví se okno s výzvou, které vám připomene, že buňku nelze upravit, viz screenshot:
(2.) Pokud kliknete a upravíte řádek, který se rovná dnešnímu datu, bude úspěšně změněn, viz screenshot:
Chraňte všechny řádky, které datum uplynulo, kódem VBA
Pokud potřebujete chránit všechny řádky, které datum uplynulo, povolte úpravy pouze dnešních a budoucích řádků data, použijte následující kód VBA:
1. Klikněte pravým tlačítkem na kartu listu, kterou chcete chránit buňky na základě data, a poté vyberte Zobrazit kód z kontextové nabídky ve vyskakovacím okně Microsoft Visual Basic pro aplikace zkopírujte a vložte následující kód do prázdného modulu:
Kód VBA: Chraňte všechny řádky, datum vypršelo:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updateby Extendoffice 20161025
Dim xRow As Long
xRow = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = False
Do Until IsEmpty(Cells(xRow, 5))
If Cells(xRow, 5) < Date Then
Rows(xRow).Locked = True
End If
xRow = xRow + 1
Loop
ThisWorkbook.ActiveSheet.Protect Password:="111111"
End Sub
Poznámka: Ve výše uvedeném kódu číslo 5 je číslo sloupce, kde se nachází datum, “111111„Je heslo k ochraně tohoto listu. Můžete je podle potřeby změnit.
3. Poté uložte a zavřete toto okno s kódem.
(1.) Pokud kliknete na datum, které uplynulo, zobrazí se okno s výzvou, které vám připomene, že buňku nelze upravit, viz screenshot:
(2.) Pokud kliknete na buňku řádků a pokusíte se změnit hodnoty v dnešním nebo budoucím datu, bude úspěšně změněna, viz screenshot:
Nejlepší nástroje pro produktivitu v kanceláři
Rozšiřte své dovednosti Excel pomocí Kutools pro Excel a zažijte efektivitu jako nikdy předtím. Kutools for Excel nabízí více než 300 pokročilých funkcí pro zvýšení produktivity a úsporu času. Kliknutím sem získáte funkci, kterou nejvíce potřebujete...
Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci
- Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
- Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
- Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!