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

Cum se protejează celulele pe baza datei în Excel?

În mod normal, putem proteja foaia de lucru pentru a împiedica alte persoane să editeze sau să modifice valorile celulei, dar, uneori, trebuie să protejați celulele în funcție de dată. De exemplu, vreau să protejez alte celule, dar permit doar modificarea valorilor celulei din data de astăzi, după cum se arată în următoarea captură de ecran, acest articol va vorbi despre cum să protejăm celulele în funcție de dată.

doc protejează până la data 1

Protejați toate rândurile, cu excepția rândului de dată de astăzi, cu cod VBA

Protejați toate rândurile la care a trecut data cu codul VBA


săgeată albastru dreapta balon Protejați toate rândurile, cu excepția rândului de dată de astăzi, cu cod VBA

Permiteți modificarea rândului egal cu data de astăzi, următorul cod vă poate ajuta, vă rugăm să procedați astfel:

1. Faceți clic dreapta pe fila de foaie pe care doriți să protejați celulele în funcție de dată, apoi alegeți Afișați codul din meniul contextual, în fereastra pop-out Microsoft Visual Basic pentru aplicații fereastra, copiați și lipiți următorul cod în modulul gol:

Cod VBA: Protejați toate rândurile, cu excepția rândului de dată de astăzi:

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

doc protejează până la data 2

notițe: În codul de mai sus, litera E este antetul coloanei unde se află data, „111111”Este parola pentru a proteja această foaie. Le puteți schimba după nevoile dvs.

2. Apoi salvați și închideți această fereastră de cod.

(1.) Dacă faceți clic pe alte celule dincolo de rândul de dată de astăzi, va apărea o casetă de solicitare pentru a vă reaminti că celula nu poate fi editată, vedeți captura de ecran:

doc protejează până la data 3

(2.) Dacă faceți clic și editați rândul este egal cu data de astăzi, acesta va fi modificat cu succes, consultați captura de ecran:

doc protejează până la data 4


săgeată albastru dreapta balon Protejați toate rândurile la care a trecut data cu codul VBA

Dacă trebuie să protejați toate rândurile la care a trecut data, permiteți modificarea rândurilor de date de astăzi și viitoare, aplicați următorul cod VBA:

1. Faceți clic dreapta pe fila de foaie pe care doriți să protejați celulele în funcție de dată, apoi alegeți Afișați codul din meniul contextual, în fereastra pop-out Microsoft Visual Basic pentru aplicații fereastra, copiați și lipiți următorul cod în modulul gol:

Cod VBA: Protejați toate rândurile data a trecut:

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

doc protejează până la data 5

notițe: În codul de mai sus, numărul 5 este numărul coloanei în care se află data, „111111”Este parola pentru a proteja această foaie. Le puteți schimba după nevoile dvs.

3. Apoi salvați și închideți această fereastră de cod.

(1.) Dacă faceți clic pe data celulelor a trecut, va apărea o casetă de solicitare pentru a vă reaminti că celula nu poate fi editată, vedeți captura de ecran:

doc protejează până la data 6

(2.) Dacă faceți clic pe celula rândurilor pentru a încerca să modificați valorile din data de astăzi sau data viitoare, aceasta va fi modificată cu succes, consultați captura de ecran:

doc protejează până la data 7


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (30)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Lacună: parola poate fi văzută de altă persoană utilizând opțiunea „Vizualizare cod”.
Acest comentariu a fost redus la minimum de moderatorul de pe site
nu funcționează, deoarece toate celulele arată mesajul, dar sunt editabile
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, este posibil să blocați coloanele după dată direct deasupra coloanelor?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Private Sub worksheet_Change(ByVal Target As Range)

'Aboneaza-te la http://youtube.com/excel10tutorial

„Sprijină canalul donând pe http://patreon.com/excel10tutorial

Dim col As Range

„Setați aici numele corect al foii:

Cu ThisWorkbook.Sheets("AGOSTO-22")

.Deprotejați „ABCDE”

Pentru fiecare col în .UsedRange.Columns

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

Următoarea col

.Protejați „ABCDE”

.EnableSelection = xlNoRestrictions

Se termina cu

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
salut este posibil să blochezi anumite celule în funcție de data care este direct deasupra lor într-o coloană?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Lusis,
Poti sa dai mai exact problema ta? Sau puteți atașa o captură de ecran ca problemă.
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang

Da, aici este o captură de ecran. Sper că acest lucru vă ajută.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, Lucis,
Vrei să blochezi coloanele a căror dată este trecută și numai coloanele din zilele de astăzi și viitoare pot fi modificate?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Corect! Cum aș proceda în privința asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Luis,
Ce zici de celula de dată din A1? Este introdus manual sau introdus cu o formulă =now()? Dacă este o celulă de formulă, coloanele blocate vor fi modificate odată cu modificările datei.
Astept raspunsul tau!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyangg

da, celula A1 are formula =now().

Vă mulţumim!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut.....


Folosesc codul pentru Protejați toate rândurile, cu excepția rândului pentru data de astăzi........



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Actualizare de Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Data Then
ActiveSheet.Protect Password:="111111"
MsgBox „Numai rândul de date de astăzi poate fi editat!”, vbInformation, „Kutools pentru Excel”
ElseIf Range("E" & Selection.Row).Value = Data Then
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Final, dacă
End Sub


După ce salvez și dau clic pe celulă, primesc un mesaj, numai rândul cu data de astăzi poate fi editat.... dar dacă dau dublu clic pe celulă, pot edita... vă rog ajutor
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru funcționează grozav. dar cum îl pot comuta pentru a debloca o coloană pe baza datelor din rândul 3?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ca cineva care este relativ nou în VBA, v-ar deranja să explicați de ce xRow = 2 în linia 4?



mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
pentru că în rândul nr. 1 ai antet
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

în timp ce rulez acest cod, primesc o eroare așa cum se arată în figură
De asemenea, atașez un instantaneu al meu Excel în care vreau să fac modificări.

Puteți să ghidați în codul meu unde ar trebui să fac modificări în funcție de fișierul meu Excel, astfel încât celulele care conțin doar data de azi și data viitoare să poată fi editate ???
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Karan,
Deoarece există celule îmbinate în tabelul dvs., codul de mai sus nu poate fi aplicat corect în tabelul cu celule îmbinate.
Dacă aveți alte idei bune, vă rugăm să comentați aici. Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, am încercat să fac același lucru, dar să protejez toate coloanele, cu excepția coloanei cu date de astăzi, cu cod VBA, înlocuind „Selection.Row” cu „Selection.Columns” și „E” cu „5” (numărul rândului unde sunt datele), dar Tot primesc eroarea 1004!

Ai vreun ajutor, te rog?

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, am încercat să fac același lucru, dar să protejez toate coloanele, cu excepția coloanei cu date de astăzi, cu cod VBA, înlocuind „Selection.Row” cu „Selection.Columns” și „E” cu „5” (numărul rândului unde sunt datele), dar Tot primesc eroarea 1004!

Ai vreun ajutor, te rog?

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,
Pentru a aplica acest cod coloanelor de care aveți nevoie, utilizați următorul cod VBA: (Notă: în cod, 5 este numărul rândului care conține data, vă rugăm să îl modificați în funcție de nevoile dvs.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Set xRg = Target.Worksheet.Cells(5, Target.Column)
Dacă xRg <> Data Atunci
ActiveSheet.Protect Password:="111111"
MsgBox „Numai rândul de date de astăzi poate fi editat!”, vbInformation, „Kutools pentru Excel”
ElseIf xRg.Value = Data Then
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Final, dacă
End Sub

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc! Îmi pare rău, nu am primit răspunsul dvs. până acum, ar putea fi o problemă în e-mailul meu.

A mers! Nu pot să vă mulțumesc suficient! Chiar apreciez asta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Ma bucur ca te poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Încerc să extind acest lucru pentru a proteja coloanele care nu includ această lună sau/și săptămâna curentă. Am încercat să înlocuiesc „Data” cu „lună” sau „săptămână”, dar nu a funcționat.

Am atașat un exemplu de foaie de săptămâni în care utilizatorul nu poate edita sau introduce coloane în afara acestei săptămâni.

Vreun sfat despre asta? sau voi folosi datele reale pentru a reflecta o zi din lună?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc pentru ajutor, mulțumesc mult, prietene, este de mare ajutor. și mi-a rezolvat tensiunea.
Fii sigur
Cu respect, Rohit Khanna
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, mă confrunt cu o problemă, odată ce închid fișierul și îl redeschid din nou la aceeași dată, codul nu funcționează. va rog ajutati-ma blocat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, rohit,
Pentru a păstra codul, ar trebui să salvați registrul de lucru în format Excel Macro-Enabled Workbook, vă rugăm să încercați, vă mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am făcut-o, dar când apăs pe celulă, mesajul arată că nu poate fi editat, dar când apăs pe tastatură încă pot scrie în celulă
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, aș dori să protejez zilele viitoare și să permit editarea zilelor curente și trecute. Cum să fac asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, Miguel, Pentru a proteja zilele viitoare, vă rugăm să aplicați codul de mai jos: Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Actualizare de Extendoffice
Dim xRow As Long
xRând = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = Fals
Efectuați până când este gol (Celele (xRow, 5))
Dacă Cells(xRow, 5) > Date Then
Rânduri (xRow).Locked = Adevărat
Final, dacă
xRow = xRow + 1
Buclă
ThisWorkbook.ActiveSheet.Protect Password:="111111"
Încheiați SubVă rugăm să încercați, sper că vă poate ajuta!
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL