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

Hur låser man angivna celler utan att skydda hela kalkylbladet i Excel?

Normalt måste du skydda hela kalkylbladet för att låsa celler från redigering. Finns det någon metod för att låsa celler utan att skydda hela kalkylbladet? Denna artikel rekommenderar en VBA-metod för dig.

Lås angivna celler utan att skydda hela kalkylbladet med VBA


Lås angivna celler utan att skydda hela kalkylbladet med VBA

Om du antar att du måste låsa cell A3 och A5 i det aktuella kalkylbladet, kommer följande VBA-kod att hjälpa dig att uppnå det utan att skydda hela kalkylbladet.

1. Högerklicka på arkfliken och välj Visa kod från högerklickmenyn.

2. Kopiera och klistra in nedanstående VBA-kod i kodfönstret. Se skärmdump:

VBA-kod: Lås angivna celler utan att skydda hela kalkylbladet

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

Anmärkningar: I koden, Kolonnen 1, Rad = 3 och Rad = 5 ange cell A3 och A5 i nuvarande kalkylblad kommer att vara låsta efter att koden har körts. Du kan ändra dem efter behov.

3. tryck på andra + Q samtidigt för att stänga Microsoft Visual Basic för applikationer fönster.

Nu är cell A3 och A5 låsta i det aktuella kalkylbladet. Om du försöker välja cell A3 eller A5 i det aktuella kalkylbladet flyttas markören automatiskt till den intilliggande cellen.


Relaterade artiklar:


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 (21)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag ville gömma formeln i cell O1. Vänligen meddela formeln för detsamma.
Denna kommentar minimerades av moderatoren på webbplatsen
Kära ajay,
För att dölja cellformel, följ hyperlänken nedan för att få lösningen.
https://www.extendoffice.com/documents/excel/1424-excel-hide-formulas.html
Denna kommentar minimerades av moderatoren på webbplatsen
Kära ajay,
Om du vill dölja formeln i cell O1 utan att skydda kalkylbladet, försök med VBA-skriptet nedan.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Statisk Formel som sträng
Om Target.Address = "$O$1" Då
Med Target
TheFormula = .Formula
.Värde = .Värde
Sluta med
annars
Med intervall ("O1")
Om inte .HasFormula Då
.Formula = Formeln
End If
Sluta med
End If
End Sub

Efter att ha använt koden verkar det som om formeln för cell O1 ändras till formelresultat. Egentligen döljer den formeln genom att visa formelresultatet i formelfältet. Och formeln kommer att visas om koden är trasig.
Denna kommentar minimerades av moderatoren på webbplatsen
hur skulle jag kunna låsa ett antal rader, säg 4-46 och kolumner 8 och 10
Denna kommentar minimerades av moderatoren på webbplatsen
Kära AJ,
Om du vill låsa ett antal specificerade rader och kolumner, försök med VBA-skriptet nedan.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Dim xRgEx As Range
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Ändra radintervallet och kolumnintervallet som du kommer att låsa utan att skydda kalkylbladet
Ställ in xRgEx = Application.Intersect(xRg, Target)
Om xRgEx är ingenting, avsluta Sub
Celler(1, 1). Välj 'Ange en cell som du ska flytta till efter att ha valt de låsta cellerna
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Detta är en bra lösning, särskilt i delade arbetsböcker där det inte stöds att slå på/av skydd. Tack så mycket.
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Crystal,

Du har gett mig en lösning (hälften av den) som jag har kämpat med under de senaste veckorna, men jag skulle behöva några fler tips.

Hur skulle detta kunna tillämpas endast på ett tabellområde, inte på hela kalkylbladet? Tack på förhand.
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Som VBA-koden nedan, ändra det angivna intervallet "H:J,4:46" till det tabellintervall som du bara vill låsa i kalkylbladet.
Och celler(1,1) bör vara cellen utanför tabellintervallet. När du klickar på en cell i tabellområdet flyttas markören automatiskt till den cellen.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Dim xRgEx As Range
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Ändra radintervallet och kolumnintervallet som du kommer att låsa utan att skydda kalkylbladet
Ställ in xRgEx = Application.Intersect(xRg, Target)
Om xRgEx är ingenting, avsluta Sub
Celler(1, 1). Välj 'Ange en cell som du ska flytta till efter att ha valt de låsta cellerna
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
När du har kört VBA för att låsa dessa celler, hur låser du upp dem?
Måste man ha en VBA-kod för att låsa upp?
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Crystal,

Finns det ändå att detta makro kan köras automatiskt när du öppnar filen, eller när du klickar på valfri cell. Jag vill inte att folk ska behöva köra makrot manuellt för att de nödvändiga intervallen ska skyddas.

Jag kommer också att behöva skydda 12 icke intilliggande områden. Till exempel: I11:I20 och K11:K20 och M11:20 etc... Hur gör jag detta?

Sist, och den här kanske frågar för mycket, men är det möjligt att tillämpa skyddet på exempelintervallen som jag angav ovan, MEN sedan utöka skyddet ner ytterligare rader när nya läggs till? Med andra ord skulle skydd tillämpas på I11:I20 och K11:K20 och M11:20, men en användare skulle kunna lägga till en ny rad (rad 21), med nya data, men när den nya raden har lagts till skyddet skulle gälla I11:I21 och K11:K21 och M11:21. Frågar jag efter månen? :-)

Tack för allt du redan har gett! Jag kan inte tacka dig och andra som gillar dig nog för att de delar med dig av din kunskap. Fantastisk!
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Carlos,
Följande VBA-kod kan hjälpa dig att lösa problemet. Fyll i dina intervall på den fjärde raden i koden och tryck på Alt + Q-tangenterna för att återgå till arbetsbladet. Gå sedan till ett annat kalkylblad och gå sedan tillbaka till det aktuella bladet för att aktivera koden. Tack för din kommentar.

Dim xRg As Range
Private Sub Worksheet_Activate()
Om xRg är ingenting då
Ställ in xRg = Union(Range("I10:I20"), Range("K10:K20"), Range("M10:M20"), Range("O10:O20"))
End If
End Sub
Privata delarkivsförändring (ByVal-mål som område)
Dim I som heltal
Dim xRgNew As Range
Dim xRgLCell As Range
On Error Resume Next
Application.EnableEvents = False
För I = 1 Till xRg.Areas.Count
Ställ in xRgLCell = xRg.Areas.Item(I)
Ställ in xRgLCell = xRgLCell(xRgLCell.Count).Offset(1, 0)
Om Target.Address = xRgLCell.Address Då
Om xRgNew är ingenting då
Ställ in xRgNew = Target
annars
Ställ in xRgNew = Union(xRgNew, Target)
End If
End If
Nästa
Ställ in xRg = Union(xRg, xRgNew)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Vid fel GoTo Exitsub
Om (Not Intersect(xRg, Target) är ingenting) och (Target.Count = 1) Då
Target.Offset(0, 1). Välj
End If
Exitsub:
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Crystal,

Tack så mycket för detta! Det fungerar perfekt.

Jag har använt koden i Carlos kommentar för att köra makrot automatiskt när du öppnar filen. Jag undrade om det finns ett sätt att ha en "Ångra"-knapp eller något liknande, som låter dig avbryta den koden och därför låsa upp de intervall som har låsts.

Jag vill att de ska vara låsta för det mesta, men jag skulle vilja låsa upp dem om jag skulle behöva ändra någon av uppgifterna. Den enda anledningen till att jag inte skyddar hela arket är för att om jag gör det inaktiverar det möjligheten att expandera på tabeller. Det i sin tur expanderar på ett linjediagram.

Tack så mycket för hjälpen!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Erin,
Du kan bryta koden manuellt genom att klicka på knappen Bryt i Microsoft Visual Basic for Applications-fönstret för att låsa upp dessa intervall. Och kör koden för att aktivera den igen. Tack för din kommentar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!
Comment faire pour verrouiller de la cellule B8 à B10000?
D'avance merci de votre réponse.
Christophe
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det någon funktion för att ställa in till exempel rad 2 cell 13 till 900? Eller måste jag manuellt stansa varje cellnamn i koden?
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå,

Jag använde koden som gavs till Carlos och den gjorde precis vad jag ville att den skulle. Finns det något sätt att få vissa intervall förskjutna inom RADEN till höger om det skyddade intervallet (som "Carlos"-koden redan gör), men har andra intervall förskjutna inom COLUMN till cellen direkt under det skyddade intervallet? Jag försökte ange "Carlos"-koden två gånger och ändra offset, men jag fick en mängd olika fel.

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Charlie,
Jag kan tyvärr inte hjälpa dig med det än. Tack för din kommentar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag har försökt att använda koden för intervall som du tidigare har postat men det fungerar inte - kan du ge mig råd om jag ska kombinera koden för intervall över eller under?


Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har försök kan inte, Dölj formel utan att skydda.
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det något sätt för den här VBA-koden att köras automatiskt varje gång någon öppnar filen?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Aaron, När du har lagt till koden, spara arbetsboken som en Excel-makroaktiverad arbetsbok (klicka på Fil > Spara som > ange en mapp för filen > välj Excel Macro-Enabled Workbook från Spara som typ rullgardinsmenyn > Save). Efter det, varje gång du öppnar filen, fungerar koden automatiskt.
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