Hur skyddar jag celler baserat på datum i Excel?
Normalt kan vi skydda kalkylbladet för att förhindra att andra redigerar eller ändrar cellvärdena, men ibland måste du skydda cellerna baserat på datum. Till exempel vill jag skydda andra celler men bara låta cellvärdena för dagens datum modifieras enligt följande skärmdump, den här artikeln kommer att prata om hur man skyddar celler baserat på datum.
Skydda alla rader utom dagens datumrad med VBA-kod
Skydda alla rader som datumet har passerat med VBA-kod
Skydda alla rader utom dagens datumrad med VBA-kod
Tillåt bara att raden som motsvarar dagens datum kan ändras, följande kod kan hjälpa dig, gör så här:
1. Högerklicka på arkfliken som du vill skydda cellerna baserat på datum och välj sedan Visa kod från snabbmenyn, i poppade ut Microsoft Visual Basic för applikationer kopiera och klistra in följande kod i den tomma modulen:
VBA-kod: Skydda alla rader utom dagens datumrad:
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
Anmärkningar: I ovanstående kod, bokstaven E är kolumnrubriken där datumet ligger, “111111”Är lösenordet för att skydda detta ark. Du kan ändra dem efter dina behov.
2. Spara och stäng sedan kodfönstret.
(1.) Om du klickar på andra celler utöver dagens datumrad kommer en snabbruta att dyka upp för att påminna dig om att cellen inte kan redigeras, se skärmdump:
(2.) Om du klickar och redigerar raden som motsvarar dagens datum kommer den att ändras framgångsrikt, se skärmdump:
Skydda alla rader som datumet har passerat med VBA-kod
Om du behöver skydda alla rader som datumet har passerat, endast tillåta att dagens och framtida datumrader kan ändras, använd följande VBA-kod:
1. Högerklicka på arkfliken som du vill skydda cellerna baserat på datum och välj sedan Visa kod från snabbmenyn, i poppade ut Microsoft Visual Basic för applikationer kopiera och klistra in följande kod i den tomma modulen:
VBA-kod: Skydda alla rader datum har passerat:
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
Anmärkningar: I ovanstående kod, numret 5 är kolumnnumret där datumet ligger, “111111”Är lösenordet för att skydda detta ark. Du kan ändra dem efter dina behov.
3. Spara och stäng sedan kodfönstret.
(1.) Om du klickar på celldatumet har passerat kommer en snabbruta att dyka upp för att påminna dig om att cellen inte kan redigeras, se skärmdump:
(2.) Om du klickar på raderna för att försöka ändra värdena i dagens datum eller framtida datum kommer det att ändras framgångsrikt, se skärmdump:
Bästa kontorsproduktivitetsverktyg
Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid. Klicka här för att få den funktion du behöver mest...
Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare
- Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
- Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
- Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!