Note: The other languages of the website are Google-translated. Back to English
English English
  • Dokumenty
  • vynikat
  • Jak zamknout určené buňky bez ochrany celého listu v aplikaci Excel?

Jak zamknout určené buňky bez ochrany celého listu v aplikaci Excel?

Za normálních okolností musíte celý list chránit, abyste zamkli buňky před úpravami. Existuje nějaká metoda k uzamčení buněk bez ochrany celého listu? Tento článek vám doporučuje metodu VBA.

Uzamkněte určené buňky bez ochrany celého listu pomocí VBA


Uzamkněte určené buňky bez ochrany celého listu pomocí VBA

Předpokládejme, že potřebujete uzamknout buňky A3 a A5 v aktuálním listu, následující kód VBA vám to pomůže dosáhnout bez ochrany celého listu.

1. Klikněte pravým tlačítkem na kartu listu a vyberte Zobrazit kód z nabídky pravého tlačítka myši.

2. Poté zkopírujte a vložte níže uvedený kód VBA do okna Kód. Viz snímek obrazovky:

Kód VBA: Zamkněte určené buňky bez ochrany celého listu

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target.Row = 3 Or Target.Row = 5 Then
            Beep
            Cells(Target.Row, Target.Column).Offset(0, 1).Select
        End If
    End If
End Sub

Poznámka: V kódu, Sloupec 1, Řádek = 3 a Řádek = 5 označte, že buňky A3 a A5 v aktuálním listu budou po spuštění kódu uzamčeny. Můžete je změnit podle potřeby.

3. zmáčkni Další + Q současně zavřete Microsoft Visual Basic pro aplikace okno.

Nyní jsou buňky A3 a A5 uzamčeny v aktuálním listu. Pokud se pokusíte vybrat buňku A3 nebo A5 v aktuálním listu, kurzor se automaticky přesune do sousední buňky vpravo.


Související články:


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

Kutools pro Excel vyřeší většinu vašich problémů a zvýší vaši produktivitu
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é funkce
    . Podporuje Office/Excel
    2007-2019 a 365
    . Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce
    30
    -denní zkušební verze zdarma. 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 tím
    50%
    a každý den vám sníží stovky kliknutí myší!
officetab dno
Komentáře (20)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Chtěl jsem skrýt vzorec v buňce O1. Informujte prosím vzorec pro totéž.
Tento komentář byl moderátorem webu minimalizován
drahý ajayi,
Chcete-li skrýt vzorec buněk, postupujte podle níže uvedeného hypertextového odkazu a získejte řešení.
https://www.extendoffice.com/documents/excel/1424-excel-hide-formulas.html
Tento komentář byl moderátorem webu minimalizován
drahý ajayi,
Pokud chcete skrýt vzorec v buňce O1 bez ochrany listu, zkuste níže uvedený skript VBA.
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Statický Vzorec Jako řetězec
If Target.Address = "$O$1" Then
S Targetem
TheFormula = .Formule
.Hodnota = .Hodnota
Konec s
Jiný
S rozsahem ("O1")
Pokud ne, pak .HasFormula
.Formule = TheFormula
End If
Konec s
End If
End Sub

Po použití kódu se zdá, že vzorec buňky O1 se změní na výsledek vzorce. Ve skutečnosti skryje vzorec se zobrazením výsledku vzorce v řádku vzorců. A vzorec se zobrazí, pokud je kód porušen.
Tento komentář byl moderátorem webu minimalizován
Jak bych mohl uzamknout řadu řádků, řekněme 4-46 a sloupce 8 a 10
Tento komentář byl moderátorem webu minimalizován
Vážený AJ,
Pokud chcete uzamknout rozsah zadaných řádků a sloupců, zkuste níže uvedený skript VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako rozsah
Dim xRgEx jako rozsah
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Změňte rozsah řádků a sloupců, které uzamknete bez ochrany listu
Nastavit xRgEx = Application.Intersect(xRg, Target)
Pokud xRgEx není nic, pak Exit Sub
Cells(1, 1). Vyberte 'Určit buňku, na kterou se přesunete po výběru uzamčených buněk
Application.ScreenUpdating = True
End Sub
Tento komentář byl moderátorem webu minimalizován
Toto je skvělé řešení, zejména ve sdílených sešitech, kde není podporováno zapnutí/vypnutí ochrany. Děkuji mnohokrát.
Tento komentář byl moderátorem webu minimalizován
Milá Crystal,

Poskytli jste mi řešení (z poloviny), se kterým jsem se posledních pár týdnů potýkal, ale potřeboval bych nějaké další rady.

Jak by to mohlo být aplikováno pouze na rozsah tabulky, nikoli na celý list? Díky předem.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Jako kód VBA uvedený níže změňte zadaný rozsah "H:J,4:46" na rozsah tabulky, který chcete uzamknout pouze v listu.
A cell(1,1) by měla být buňka mimo rozsah tabulky. Po kliknutí na kteroukoli buňku v rozsahu tabulky se kurzor automaticky přesune do této buňky.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako rozsah
Dim xRgEx jako rozsah
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Změňte rozsah řádků a sloupců, které uzamknete bez ochrany listu
Nastavit xRgEx = Application.Intersect(xRg, Target)
Pokud xRgEx není nic, pak Exit Sub
Cells(1, 1). Vyberte 'Určit buňku, na kterou se přesunete po výběru uzamčených buněk
Application.ScreenUpdating = True
End Sub
Tento komentář byl moderátorem webu minimalizován
Milá Crystal,

Existuje vůbec, že ​​toto makro lze spustit automaticky při otevření souboru nebo po kliknutí na libovolnou buňku. Nechci, aby lidé museli spouštět makro ručně, aby byly chráněny požadované rozsahy.

Také budu muset chránit 12 nesousedních rozsahů. Například: I11:I20 a K11:K20 a M11:20 atd... Jak to udělám?

Poslední, a tento může vyžadovat příliš mnoho, ale je možné použít ochranu na rozsahy příkladů, které jsem uvedl výše, ALE pak rozšířit ochranu o další řádky, když jsou přidány nové? Jinými slovy, ochrana by byla aplikována na I11:I20 a K11:K20 a M11:20, ale uživatel by mohl přidat nový řádek (řádek 21) s novými daty, ale jakmile bude přidán nový řádek, ochrana by se vztahovala na I11:I21 a K11:K21 a M11:21. Žádám měsíc? :-)

Děkujeme za vše, co jste již poskytli! Nemohu vám a dalším lidem, jako jste vy, dostatečně poděkovat za sdílení vašich znalostí. Úžasný!
Tento komentář byl moderátorem webu minimalizován
milý Carlosi,
Následující kód VBA vám může pomoci vyřešit problém. Vyplňte prosím své rozsahy do čtvrtého řádku kódu a stisknutím kláves Alt + Q se vraťte do listu. Poté přejděte na jiný list a poté se vraťte na aktuální list, abyste aktivovali kód. Děkuji za váš komentář.

Dim xRg jako rozsah
Private Sub Worksheet_Activate()
Pokud xRg není nic, pak
Nastavit xRg = Union(Range("I10:I20"), Range("K10:K20"), Range("M10:M20"), Range("O10:O20"))
End If
End Sub
Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Dim I As Integer
Dim xRgNew As Range
Dim xRgLCell jako rozsah
On Error Resume Next
Application.EnableEvents = False
Pro I = 1 To xRg.Areas.Count
Nastavit xRgLCell = xRg.Areas.Item(I)
Set xRgLCell = xRgLCell(xRgLCell.Count).Offset(1, 0)
If Target.Address = xRgLCell.Address Then
If xRgNew Is Nothing Then
Nastavte xRgNew = Cíl
Jiný
Nastavit xRgNew = Union(xRgNew, Target)
End If
End If
další
Nastavit xRg = Union(xRg, xRgNew)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Při chybě GoTo Exitsub
If (Not Intersect(xRg, Target) Is Nothing) And (Target.Count = 1) Then
Target.Offset(0, 1).Select
End If
Exitsub:
End Sub
Tento komentář byl moderátorem webu minimalizován
Milá Crystal,

Moc vám za to děkuji! Funguje to perfektně.

Použil jsem kód v Carlosově komentáři k automatickému spuštění makra při otevření souboru. Zajímalo by mě, jestli existuje způsob, jak mít tlačítko "Zpět" nebo něco podobného, ​​které vám umožní zrušit tento kód, a tedy odemknout ty rozsahy, které byly uzamčeny.

Chci, aby byly většinu času zamčené, ale chtěl bych je odemknout, pokud budu potřebovat změnit některá data. Jediný důvod, proč nechráním celý list, je ten, že pokud to udělám, deaktivuje to možnost rozbalování tabulek. To zase rozbalte na spojnicovém grafu.

Díky moc za pomoc!
Tento komentář byl moderátorem webu minimalizován
ahoj Erin,
Kód můžete ručně přerušit kliknutím na tlačítko Přerušit v okně Microsoft Visual Basic for Applications a tyto rozsahy odemknout. A spuštěním kódu jej znovu aktivujte. Děkuji za Váš komentář.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Komentář faire pour verrouiller de la cellule B8 à B10000?
D'avance merci de votre réponse.
Christophe
Tento komentář byl moderátorem webu minimalizován
Existuje nějaká funkce pro nastavení například buňky 2 řádku 13 na 900? Nebo musím ručně děrovat každý název buňky v kódu?
Tento komentář byl moderátorem webu minimalizován
Ahoj,

Použil jsem kód poskytnutý Carlosovi a udělal přesně to, co jsem chtěl. Existuje způsob, jak mít některé rozsahy posunuté v ŘÁDKU napravo od chráněného rozsahu (jak to již dělá kód „Carlos“), ale mít jiné rozsahy posunuté v rámci SLOUPCE k buňce přímo pod chráněným rozsahem? Pokusil jsem se dvakrát zadat kód „Carlos“ a změnit offset, ale objevilo se mi několik chyb.

Děkuji
Tento komentář byl moderátorem webu minimalizován
Ahoj Charlie,
S tím vám bohužel zatím nemohu pomoci. Děkuji za váš komentář.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Zkoušel jsem použít kód pro rozsahy, které jste dříve zveřejnili, ale nefunguje to - můžete mi poradit, zda mám kombinovat kód pro rozsahy nad nebo pod?


Díky
Tento komentář byl moderátorem webu minimalizován
Mám zkusit nelze, skrýt vzorec bez ochrany.
Tento komentář byl moderátorem webu minimalizován
Existuje způsob, jak tento kód VBA spustit automaticky pokaždé, když někdo otevře soubor?
Tento komentář byl moderátorem webu minimalizován
Ahoj Aarone, po přidání kódu uložte sešit jako sešit Excel s podporou maker (klikněte Soubor > Uložit jako > zadejte složku pro soubor > vyberte Sešit se zvýšeným makra Excel z Uložit jako rozevírací seznam typu > Uložit). Poté, pokaždé, když otevřete soubor, kód funguje automaticky.
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