Note: The other languages of the website are Google-translated. Back to English

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.

Dokument chroniony przez datę 1

Chroń wszystkie wiersze z wyjątkiem dzisiejszego wiersza z kodem VBA

Chroń wszystkie wiersze, które minęły, za pomocą kodu VBA


strzałka niebieski prawy bąbelek 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

Dokument chroniony przez datę 2

Uwagi: 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:

Dokument chroniony przez datę 3

(2.) Jeśli klikniesz i edytujesz wiersz z dzisiejszą datą, zostanie on pomyślnie zmodyfikowany, patrz zrzut ekranu:

Dokument chroniony przez datę 4


strzałka niebieski prawy bąbelek 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

Dokument chroniony przez datę 5

Uwagi: 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:

Dokument chroniony przez datę 6

(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:

Dokument chroniony przez datę 7


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

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!
officetab dół
Sortuj komentarze według
Komentarze (30)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Luka: Hasło może zobaczyć inna osoba, korzystając z opcji „Wyświetl kod”.
Ten komentarz został zminimalizowany przez moderatora na stronie
nie działa, ponieważ wszystkie komórki wyświetlają wiadomość, ale można je edytować
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, czy można zablokować kolumny według daty bezpośrednio nad kolumnami?
Ten komentarz został zminimalizowany przez moderatora na stronie
Private Sub worksheet_Change (ByVal Target As Range)

„Zasubskrybuj” http://youtube.com/excel10tutorial

„Wspieraj kanał przekazując darowiznę” http://patreon.com/excel10tutorial

Dim col jako zakres

'Ustaw poprawną nazwę arkusza tutaj:

Z ThisWorkbook.Sheets("AGOSTO-22")

.Odbezpiecz "ABCDE"

Dla każdej kolumny w .UsedRange.Columns

col.EntireColumn.Locked = col.Range("A1").Value <> Data

Następny kolor

.Chroń "ABCDE"

.EnableSelection = xlNoRestrictions

Kończyć z

End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć czy można zablokować określone komórki w zależności od daty, która znajduje się bezpośrednio nad nimi w kolumnie?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Luzysie,
Czy możesz podać dokładniej swój problem? Możesz też dołączyć zrzut ekranu jako problem.
Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć skyyang

Tak, oto zrzut ekranu. Mam nadzieję że to pomoże.
Ten komentarz został zminimalizowany przez moderatora na stronie
Tutaj jest.
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Lucisie,
Czy masz na myśli zablokowanie kolumn, których data minęła, a modyfikować można tylko kolumny z dnia dzisiejszego i przyszłego?
Ten komentarz został zminimalizowany przez moderatora na stronie
Prawidłowy! Jak bym się do tego zabrał?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Luisie,
A co z komórką daty w A1? Czy jest wprowadzany ręcznie, czy z formułą =now()? Jeśli jest to komórka z formułą, zablokowane kolumny zostaną zmienione wraz ze zmianą daty.
Nie mogę się doczekać twojej odpowiedzi!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Skyyangg

tak, komórka A1 ma formułę =now().

dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam .....


Używam kodu dla Chroń wszystkie wiersze z wyjątkiem dzisiejszego wiersza daty........



Private Sub Worksheet_SelectionChange (ByVal Target As Range)
„Aktualizuj do” Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Data Then
ActiveSheet.Protect hasło:="111111"
MsgBox "Tylko dzisiejsza data może być edytowana!", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub


Po zapisaniu i kliknięciu komórki otrzymuję wiadomość, tylko dzisiejszą datę można edytować .... ale jeśli dwukrotnie kliknę komórkę, mogę edytować ... pls help
Ten komentarz został zminimalizowany przez moderatora na stronie
To działa świetnie. ale jak mogę go przełączyć, aby odblokować kolumnę na podstawie dat w wierszu 3?
Ten komentarz został zminimalizowany przez moderatora na stronie
Jako ktoś, kto jest stosunkowo nowy w VBA, czy mógłbyś wyjaśnić, dlaczego xRow = 2 w wierszu 4?



Podziękowania
Ten komentarz został zminimalizowany przez moderatora na stronie
ponieważ w rzędzie nr. 1 masz nagłówek
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

podczas uruchamiania tego kodu otrzymuję błąd, jak pokazano na rysunku
Załączam również migawkę mojego programu Excel, w której chcę wprowadzić zmiany ..

Czy możesz wskazać w moim kodzie, gdzie należy wprowadzić zmiany zgodnie z moim plikiem Excel, aby można było edytować komórki zawierające tylko dzisiejszą i przyszłą datę?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Karan,
Ponieważ w Twojej tabeli znajdują się scalone komórki, powyższy kod nie może zostać poprawnie zastosowany w tabeli scalonych komórek.
Jeśli masz jakieś inne dobre pomysły, skomentuj tutaj. Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, próbowałem zrobić to samo, ale chronić wszystkie kolumny z wyjątkiem dzisiejszej kolumny daty kodem VBA, zastępując „Selection.Row” „Selection.Columns” i „E” z „5” (numer wiersza, w którym są daty), ale Ciągle otrzymuję błąd 1004!

Proszę o pomoc?

Dziękuję Ci
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, próbowałem zrobić to samo, ale chronić wszystkie kolumny z wyjątkiem dzisiejszej kolumny daty kodem VBA, zastępując „Selection.Row” „Selection.Columns” i „E” z „5” (numer wiersza, w którym są daty), ale Ciągle otrzymuję błąd 1004!

Proszę o pomoc?

Dziękuję Ci
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Aby zastosować ten kod do potrzebnych kolumn, użyj następującego kodu VBA: (Uwaga: W kodzie 5 to numer wiersza zawiera datę, zmień go zgodnie z potrzebami.)

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako zakres
Ustaw xRg = Target.Worksheet.Cells(5, Target.Column)
Jeśli xRg <> Data Wtedy
ActiveSheet.Protect hasło:="111111"
MsgBox "Tylko dzisiejsza data może być edytowana!", vbInformation, "Kutools for Excel"
ElseIf xRg.Value = Data Wtedy
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję Ci! Przepraszamy, do tej pory nie otrzymałem Twojej odpowiedzi, może to być problem z moim e-mailem.

Zadziałało! Nie mogę wystarczająco podziękować! Naprawdę to doceniam!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Cieszę się, że może ci pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Staram się to rozszerzyć, aby chronić kolumny, które nie obejmują bieżącego miesiąca lub/i bieżącego tygodnia. Próbowałem zamienić „Data” na „miesiąc” lub „tydzień”, ale nie zadziałało.

Załączam przykładowy arkusz tygodni, w którym użytkownik nie może edytować ani wpisywać kolumn innych niż w tym tygodniu.

Jakieś rady na ten temat? czy powinienem używać rzeczywistych dat, aby odzwierciedlić dzień w miesiącu?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki za pomoc, dziękuję bardzo kolego, to świetna pomoc. i rozwiązał moje napięcie.
Bądź bezpieczny
PozdrawiamRohit Khanna
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, mam do czynienia z jednym problemem, gdy zamknę plik i ponownie go otworzy w tym samym dniu, kod nie działa. proszę, pomóż mi utknąć
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, ziomek,
Aby zachować kod, należy zapisać skoroszyt w formacie skoroszytu programu Excel z obsługą makr. Spróbuj, dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć, zrobiłem to, ale po naciśnięciu komórki wiadomość pokazuje, że nie można jej edytować, ale po naciśnięciu klawisza nadal mogę pisać w komórce
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, chciałbym zabezpieczyć przyszłe dni i zezwolić na edycję bieżących i minionych dni. Jak mogę to zrobić?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Miguel, Aby chronić przyszłe dni, zastosuj poniższy kod: Private Sub Worksheet_Change (ByVal Target As Excel.Range)
„Aktualizuj do” Extendoffice
Dim xRow tak długo
xwiersz = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = Fałsz
Wykonaj dopóki nie będzie pusty(komórki(xRow, 5))
Jeśli komórki (xRow, 5) > Data to
Wiersze(xRow). Zablokowane = Prawda
End If
xwiersz = xwiersz + 1
Pętla
ThisWorkbook.ActiveSheet.Protect hasło:="111111"
Koniec SubProszę spróbować, mam nadzieję, że może ci to pomóc!
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL