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

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.

doc skydda efter datum 1

Skydda alla rader utom dagens datumrad med VBA-kod

Skydda alla rader som datumet har passerat med VBA-kod


pil blå höger bubbla 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

doc skydda efter datum 2

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:

doc skydda efter datum 3

(2.) Om du klickar och redigerar raden som motsvarar dagens datum kommer den att ändras framgångsrikt, se skärmdump:

doc skydda efter datum 4


pil blå höger bubbla 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

doc skydda efter datum 5

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:

doc skydda efter datum 6

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

doc skydda efter datum 7


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

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!
officetab botten
Sortera kommentarer efter
Kommentarer (30)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Kryphål: Lösenordet kan ses av andra personer genom att använda alternativet "Visa kod".
Denna kommentar minimerades av moderatoren på webbplatsen
fungerar inte eftersom hela cellen visar meddelandet men är redigerbara
Denna kommentar minimerades av moderatoren på webbplatsen
Hej är det möjligt att låsa kolumner till datumet direkt ovanför kolumnerna?
Denna kommentar minimerades av moderatoren på webbplatsen
Privat underarbetsblad_Change(ByVal Target As Range)

'Prenumerera på http://youtube.com/excel10tutorial

'Stöd kanalen genom att donera vidare http://patreon.com/excel10tutorial

Dim col As Range

'Ange rätt arknamn här:

With ThisWorkbook.Sheets("AGOSTO-22")

.Avskydda "ABCDE"

För varje kolumn i .UsedRange.Columns

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

Nästa kol

. Skydda "ABCDE"

.EnableSelection = xlNoRestrictions

Sluta med

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
hej är det möjligt att låsa vissa celler beroende på datumet som är direkt ovanför dem i en kolumn?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Lusis,
Kan du ge ditt problem mer specifikt? Eller så kan du bifoga en skärmdump som ditt problem.
Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej skyyang

Ja här är en skärmdump. Hoppas det här hjälper.
Denna kommentar minimerades av moderatoren på webbplatsen
Här är det.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Lucis,
Menar du att låsa kolumnerna som är förflutna, och endast kolumnerna för dagens och framtida dagar kan ändras?
Denna kommentar minimerades av moderatoren på webbplatsen
Korrekt! Hur skulle jag gå till väga?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Luis,
Vad sägs om datumcellen i A1? Anges det manuellt eller med formeln =now()? Om det är en formelcell kommer de låsta kolumnerna att ändras med datumändringarna.
Ser fram emot ditt svar!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Skyyangg

ja cellen A1 har =now()-formeln.

tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå.....


Jag använder koden för Skydda alla rader utom dagens datumrad........



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Uppdatering av Extendoffice 20161025
Om Range("A" & Selection.Row).Värde <> Datum Då
ActiveSheet.Protect Password:="111111"
MsgBox "Endast dagens datumrad kan redigeras!", vbInformation, "Kutools för Excel"
ElseIf Range("E" & Selection.Row).Value = Datum då
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub


När jag har sparat i och klickat på cellen får jag meddelande bara dagens datumrad kan redigeras....men om jag dubbelklickar på cellen kan jag redigera...snälla hjälp
Denna kommentar minimerades av moderatoren på webbplatsen
Det här fungerar utmärkt. men hur kan jag byta den för att låsa upp en kolumn baserat på datum i rad 3?
Denna kommentar minimerades av moderatoren på webbplatsen
Som någon som är relativt ny på VBA, skulle du ha något emot att förklara varför xRow = 2 i rad 4?



Tack
Denna kommentar minimerades av moderatoren på webbplatsen
eftersom i rad nr. 1 du har header
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

när jag kör den här koden får jag ett felmeddelande som visas i bilden
Jag bifogar också en ögonblicksbild av mitt excel där jag vill göra ändringar..

Kan du vägleda i min kod var jag ska göra ändringar enligt min excel-fil så att celler som bara innehåller dagens och framtida datum kan redigeras???
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Karan,
Eftersom det finns sammanslagna celler i din tabell, kan ovanstående kod inte tillämpas korrekt i sammanslagna cellers tabell.
Om du har några andra bra idéer, kommentera gärna här. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag försökte göra samma sak men att skydda alla kolumner utom dagens datumkolumn med VBA-kod genom att ersätta "Selection.Row" med "Selection.Columns" och "E" med "5" (radnummer där datum är), men Jag får hela tiden fel 1004!

Någon hjälp snälla?

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag försökte göra samma sak men att skydda alla kolumner utom dagens datumkolumn med VBA-kod genom att ersätta "Selection.Row" med "Selection.Columns" och "E" med "5" (radnummer där datum är), men Jag får hela tiden fel 1004!

Någon hjälp snälla?

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå,
För att tillämpa denna kod på kolumner som du behöver, använd följande VBA-kod:(Obs: I koden är 5 radnumret som innehåller datumet, vänligen ändra det till ditt behov.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Ställ in xRg = Target.Worksheet.Cells(5, Target.Column)
Om xRg <> Datum Då
ActiveSheet.Protect Password:="111111"
MsgBox "Endast dagens datumrad kan redigeras!", vbInformation, "Kutools för Excel"
ElseIf xRg.Value = Datum då
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub

Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack! Förlåt, jag har inte fått ditt svar förrän nu, det kan vara ett problem i min e-post.

Det fungerade! Kan inte säga tack nog! Jag uppskattar verkligen det!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Kul att det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag försöker utöka detta för att skydda kolumner som inte inkluderar den aktuella månaden eller/och den aktuella veckan. Jag försökte ersätta "Datum" med "månad" eller "vecka", men det fungerade inte.

Jag har bifogat ett exempel för veckor där användaren inte kan redigera eller skriva i kolumner annat än denna vecka.

Några råd om det? eller ska jag använda faktiska datum för att spegla en dag i månaden?
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för din hjälp, tack så mycket vännen, det är till stor hjälp. och löste min spänning.
Vara säker
Hälsningar Rohit Khanna
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jag står inför ett problem, när jag stänger filen och öppnar den igen samma datum fungerar inte koden. pls hjälp jag har fastnat
Denna kommentar minimerades av moderatoren på webbplatsen
Hej rohit,
För att behålla koden bör du spara din arbetsbok som Excel Macro-Enabled Workbook-format, försök, tack!
Denna kommentar minimerades av moderatoren på webbplatsen
hej jag gjorde det men när jag trycker på cellmeddelandet visar det att det inte kan redigeras men när jag trycker på tangentbordet kan jag fortfarande skriva i cellen
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag skulle vilja skydda framtida dagar och tillåta redigering av nuvarande och tidigare dagar. Hur gör jag det?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Miguel, För att skydda framtida dagar, använd koden nedan: Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Uppdatering av Extendoffice
Dim xRow As Long
xRad = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = Falskt
Gör tills det är tomt (Cells(xRow, 5))
Om Celler(xRow, 5) > Datum då
Rader(xRad).Låst = Sant
End If
xRow = xRow + 1
loop
ThisWorkbook.ActiveSheet.Protect Password:="111111"
Avsluta SubSnälla försök, hoppas det kan hjälpa dig!
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL