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

Jak chránit buňky na základě data v aplikaci Excel?

Normálně můžeme list chránit, abychom ostatním zabránili v úpravách nebo úpravách hodnot buněk, ale někdy musíte buňky chránit na základě data. Například chci chránit další buňky, ale povolit pouze úpravu hodnot buněk dnešního data, jak ukazuje následující snímek obrazovky, tento článek bude hovořit o tom, jak chránit buňky na základě data.

ochrana dokumentu podle data 1

Chraňte všechny řádky kromě dnešního řádku s datem pomocí kódu VBA

Chraňte všechny řádky, které datum uplynulo, kódem VBA


šipka modrá pravá bublina Chraňte všechny řádky kromě dnešního řádku s datem pomocí kódu VBA

Povolte pouze úpravu řádku, který se rovná dnešnímu datu, následující kód vám může pomoci, postupujte takto:

1. Klikněte pravým tlačítkem na kartu listu, kterou chcete chránit buňky na základě data, a poté vyberte Zobrazit kód z kontextové nabídky ve vyskakovacím okně Microsoft Visual Basic pro aplikace zkopírujte a vložte následující kód do prázdného modulu:

Kód VBA: Chraňte všechny řádky kromě dnešního řádku s datem:

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

ochrana dokumentu podle data 2

Poznámka: Ve výše uvedeném kódu písmeno E je záhlaví sloupce, kde se nachází datum, “111111„Je heslo k ochraně tohoto listu. Můžete je podle potřeby změnit.

2. Poté uložte a zavřete toto okno s kódem.

(1.) Pokud kliknete na jiné buňky za dnešním datovým řádkem, objeví se okno s výzvou, které vám připomene, že buňku nelze upravit, viz screenshot:

ochrana dokumentu podle data 3

(2.) Pokud kliknete a upravíte řádek, který se rovná dnešnímu datu, bude úspěšně změněn, viz screenshot:

ochrana dokumentu podle data 4


šipka modrá pravá bublina Chraňte všechny řádky, které datum uplynulo, kódem VBA

Pokud potřebujete chránit všechny řádky, které datum uplynulo, povolte úpravy pouze dnešních a budoucích řádků data, použijte následující kód VBA:

1. Klikněte pravým tlačítkem na kartu listu, kterou chcete chránit buňky na základě data, a poté vyberte Zobrazit kód z kontextové nabídky ve vyskakovacím okně Microsoft Visual Basic pro aplikace zkopírujte a vložte následující kód do prázdného modulu:

Kód VBA: Chraňte všechny řádky, datum vypršelo:

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

ochrana dokumentu podle data 5

Poznámka: Ve výše uvedeném kódu číslo 5 je číslo sloupce, kde se nachází datum, “111111„Je heslo k ochraně tohoto listu. Můžete je podle potřeby změnit.

3. Poté uložte a zavřete toto okno s kódem.

(1.) Pokud kliknete na datum, které uplynulo, zobrazí se okno s výzvou, které vám připomene, že buňku nelze upravit, viz screenshot:

ochrana dokumentu podle data 6

(2.) Pokud kliknete na buňku řádků a pokusíte se změnit hodnoty v dnešním nebo budoucím datu, bude úspěšně změněna, viz screenshot:

ochrana dokumentu podle data 7


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2021 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
officetab dno
Komentáře (30)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Mezera: Heslo může vidět jiná osoba pomocí možnosti "Zobrazit kód".
Tento komentář byl moderátorem webu minimalizován
nefungují, protože celá buňka zobrazuje zprávu, ale lze je upravit
Tento komentář byl moderátorem webu minimalizován
Ahoj, je možné uzamknout sloupce podle data přímo nad sloupci?
Tento komentář byl moderátorem webu minimalizován
Private Sub worksheet_Change (ByVal Target As Range)

'Popsat http://youtube.com/excel10tutorial

„Podpořte kanál darováním http://patreon.com/excel10tutorial

Dim Col As Range

'Správný název listu nastavte zde:

With ThisWorkbook.Sheets("AGOSTO-22")

.Odemknout "ABCDE"

Pro každý sloupec v .UsedRange.Columns

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

Další plk

.Chránit "ABCDE"

.EnableSelection = xlNoRestrictions

Konec s

End Sub
Tento komentář byl moderátorem webu minimalizován
ahoj je možné zamknout určité buňky v závislosti na datu, které je přímo nad nimi ve sloupci?
Tento komentář byl moderátorem webu minimalizován
Ahoj Lusis,
Můžete svůj problém popsat konkrétněji? Nebo můžete připojit snímek obrazovky jako svůj problém.
Děkuji!
Tento komentář byl moderátorem webu minimalizován
Ahoj skyyang

Ano, zde je snímek obrazovky. Snad to pomůže.
Tento komentář byl moderátorem webu minimalizován
Tady to je.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Lucis,
Chcete zamknout sloupce, které datum uplynulo, a upravit lze pouze sloupce dnešního a budoucího dne?
Tento komentář byl moderátorem webu minimalizován
Opravit! Jak bych na to šel?
Tento komentář byl moderátorem webu minimalizován
Ahoj Luisi,
Jak je to s datovou buňkou v A1? Zadává se ručně nebo se zadává vzorcem =now()? Pokud se jedná o buňku vzorce, uzamknuté sloupce se změní se změnami data.
Těšíme se na Vaši odpověď!
Tento komentář byl moderátorem webu minimalizován
Ahoj Skyyangg

ano, buňka A1 má vzorec =now().

díky!
Tento komentář byl moderátorem webu minimalizován
Ahoj.....


Používám kód pro Chránit všechny řádky kromě dnešního řádku s datem.......



Private Sub Worksheet_SelectionChange (ByVal Target As Range)
'Aktualizovat Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Date Then
ActiveSheet.Protect Password:="111111"
MsgBox "Lze upravovat pouze dnešní řádek data!", vbInformation, "Kutools pro Excel"
ElseIf Rozsah("E" & Selection.Row).Value = Datum poté
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub


Poté, co uložím a kliknu na buňku, dostanu zprávu, lze upravit pouze dnešní řádek s datem....ale pokud na buňku dvakrát kliknu, mohu upravit...pls help
Tento komentář byl moderátorem webu minimalizován
Tohle funguje skvěle. ale jak jej mohu přepnout na odemknutí sloupce na základě dat v řádku 3?
Tento komentář byl moderátorem webu minimalizován
Jako někdo, kdo je ve VBA relativně nový, mohl byste vysvětlit, proč xRow = 2 na řádku 4?



Díky
Tento komentář byl moderátorem webu minimalizován
protože v řadě č. 1 máte záhlaví
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

při spouštění tohoto kódu dostávám chybu, jak je znázorněno na obrázku
Také přikládám snímek mého excelu, kde chci provést změny..

Může u průvodce v mém kódu, kde bych měl provést změny podle mého souboru Excel, aby bylo možné upravit buňky, které obsahují pouze dnešní a budoucí datum?
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Karan,
Protože v tabulce jsou sloučené buňky, výše uvedený kód nelze správně použít v tabulce sloučených buněk.
Pokud máte nějaké další dobré nápady, napište je sem. Děkuji!
Tento komentář byl moderátorem webu minimalizován
Dobrý den, pokusil jsem se udělat totéž, ale chránit všechny sloupce kromě dnešního datového sloupce kódem VBA nahrazením "Selection.Row" za "Selection.Columns" a "E" za "5" (číslo řádku, kde jsou data), ale Stále se mi zobrazuje chyba 1004!

Jakoukoli pomoc prosím?

Děkuji
Tento komentář byl moderátorem webu minimalizován
Dobrý den, pokusil jsem se udělat totéž, ale chránit všechny sloupce kromě dnešního datového sloupce kódem VBA nahrazením "Selection.Row" za "Selection.Columns" a "E" za "5" (číslo řádku, kde jsou data), ale Stále se mi zobrazuje chyba 1004!

Jakoukoli pomoc prosím?

Děkuji
Tento komentář byl moderátorem webu minimalizován
Ahoj,
Chcete-li použít tento kód na sloupce, které potřebujete, použijte následující kód VBA: (Poznámka: V kódu je 5 číslo řádku obsahující datum, změňte jej podle potřeby.)

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako rozsah
Nastavit xRg = Target.Worksheet.Cells(5, Target.Column)
If xRg <> Date Then
ActiveSheet.Protect Password:="111111"
MsgBox "Lze upravovat pouze dnešní řádek data!", vbInformation, "Kutools pro Excel"
ElseIf xRg.Value = Datum poté
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub

Zkuste to prosím, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Děkuji! Omlouvám se, do teď jsem nedostal vaši odpověď, možná je problém v mém e-mailu.

Fungovalo to! Nedokážu dostatečně poděkovat! Opravdu to oceňuji!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Jsem rád, že vám to může pomoci!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Snažím se to rozšířit, abych chránil sloupce, které nezahrnují tento aktuální měsíc nebo/a tento aktuální týden. Zkoušel jsem nahradit "Datum" za "měsíc" nebo "týden", ale nefungovalo to.

Připojil jsem ukázkový list týdnů, kde uživatel nemůže upravovat nebo zadávat jiné sloupce než tento týden.

Nějaké rady ohledně toho? nebo mám použít skutečná data k vyjádření dne v měsíci?
Tento komentář byl moderátorem webu minimalizován
Díky za vaši pomoc, děkuji moc kamaráde, je to skvělá pomoc. a vyřešil mé napětí.
Být v bezpečí
S pozdravem Rohit Khanna
Tento komentář byl moderátorem webu minimalizován
Ahoj, čelím jednomu problému, jakmile soubor zavřu a znovu jej otevřu ve stejný den, kód nefunguje. pls pomozte im zasekl
Tento komentář byl moderátorem webu minimalizován
Ahoj, rohite,
Chcete-li kód zachovat, měli byste sešit uložit ve formátu sešitu Excel s podporou maker, zkuste to, děkujeme!
Tento komentář byl moderátorem webu minimalizován
ahoj udělal jsem to, ale když stisknu buňku, zpráva ukazuje, že ji nelze upravit, ale když stisknu klávesnici, stále mohu psát do buňky
Tento komentář byl moderátorem webu minimalizován
Dobrý den, chtěl bych chránit budoucí dny a povolit úpravy aktuálních a minulých dnů. Jak to udělám?
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Migueli, pro ochranu budoucích dnů použijte níže uvedený kód: Private Sub Worksheet_Change (ByVal Target As Excel. Range)
'Aktualizovat Extendoffice
Dim xRow As Long
xRow = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = False
Udělat, dokud není prázdný(Cells(xRow, 5))
If Cells(xRow, 5) > Date Then
Rows(xRow).Locked = True
End If
xRow = xRow + 1
Smyčka
ThisWorkbook.ActiveSheet.Protect Password:="111111"
End SubProsím, zkuste to, doufám, že vám to pomůže!
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL