Jak chronić komórki na podstawie daty w programie Excel?
Zwykle możemy chronić arkusz roboczy, aby uniemożliwić innym edytowanie lub modyfikowanie wartości komórek, ale czasami trzeba chronić komórki na podstawie daty. Na przykład chcę chronić inne komórki, ale zezwalam na modyfikację tylko wartości komórek z dzisiejszej daty, jak pokazano na poniższym zrzucie ekranu, w tym artykule omówimy, jak chronić komórki na podstawie daty.
Chroń wszystkie wiersze z wyjątkiem dzisiejszego wiersza z kodem VBA
Chroń wszystkie wiersze, które minęły, za pomocą kodu VBA
Chroń wszystkie wiersze z wyjątkiem dzisiejszego wiersza z kodem VBA
Zezwalaj na modyfikację tylko wiersza odpowiadającego dzisiejszej dacie, poniższy kod może ci pomóc, wykonaj następujące czynności:
1. Kliknij prawym przyciskiem myszy kartę arkusza, którą chcesz chronić komórki na podstawie daty, a następnie wybierz Wyświetl kod z menu kontekstowego w wyskakującym pliku Microsoft Visual Basic for Applications w oknie, skopiuj i wklej następujący kod do pustego modułu:
Kod VBA: chroń wszystkie wiersze z wyjątkiem dzisiejszego wiersza daty:
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
Note: W powyższym kodzie litera E to nagłówek kolumny, w której znajduje się data, „111111”To hasło chroniące ten arkusz. Możesz je zmienić według swoich potrzeb.
2. Następnie zapisz i zamknij to okno kodu.
(1.) Jeśli klikniesz inne komórki poza dzisiejszym wierszem daty, pojawi się okienko z przypomnieniem, że komórki nie można edytować, patrz zrzut ekranu:
(2.) Jeśli klikniesz i edytujesz wiersz z dzisiejszą datą, zostanie on pomyślnie zmodyfikowany, patrz zrzut ekranu:
Chroń wszystkie wiersze, które minęły, za pomocą kodu VBA
Jeśli chcesz chronić wszystkie wiersze, w których minęła data, zezwalaj na modyfikację tylko wierszy z datą dzisiejszą i przyszłą, zastosuj następujący kod VBA:
1. Kliknij prawym przyciskiem myszy kartę arkusza, którą chcesz chronić komórki na podstawie daty, a następnie wybierz Wyświetl kod z menu kontekstowego w wyskakującym pliku Microsoft Visual Basic for Applications w oknie, skopiuj i wklej następujący kod do pustego modułu:
Kod VBA: Chroń wszystkie wiersze, data minęła:
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
Note: W powyższym kodzie numer 5 to numer kolumny, w której znajduje się data, „111111”To hasło chroniące ten arkusz. Możesz je zmienić według swoich potrzeb.
3. Następnie zapisz i zamknij to okno kodu.
(1.) Jeśli klikniesz datę komórki, która minęła, pojawi się okienko z przypomnieniem, że komórki nie można edytować, patrz zrzut ekranu:
(2.) Jeśli klikniesz komórkę wierszy, aby spróbować zmienić wartości w dzisiejszej lub przyszłej dacie, zostanie ona pomyślnie zmodyfikowana, patrz zrzut ekranu:
Najlepsze narzędzia biurowe
Zwiększ swoje umiejętności Excela dzięki Kutools for Excel i doświadcz wydajności jak nigdy dotąd. Kutools dla programu Excel oferuje ponad 300 zaawansowanych funkcji zwiększających produktywność i oszczędzających czas. Kliknij tutaj, aby uzyskać funkcję, której najbardziej potrzebujesz...
Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę
- Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
- Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
- Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!