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

Hvordan låses eller låses celler op baseret på værdier i en anden celle i Excel?

I nogle tilfælde skal du muligvis låse eller låse celler op baseret på værdier i en anden celle. For eksempel har du brug for området B1: B4 for at være låst op, hvis celle A1 indeholder værdien "Accepterer"; og skal låses, hvis celle A1 indeholder værdien "Refusing". Hvordan kan du gøre for at opnå det? Denne artikel kan hjælpe dig.

Lås eller låse celler op baseret på værdier i en anden celle med VBA-kode


Lås eller låse celler op baseret på værdier i en anden celle med VBA-kode

Den følgende VBA-kode kan hjælpe dig med at låse eller låse op celler baseret på værdi i en anden celle i Excel.

1. Højreklik på arkfanen (arket med celler, du skal låse eller låse op baseret på værdier i en anden celle), og klik Vis kode fra højreklikmenuen.

2. Kopier og indsæt derefter følgende VBA-kode i kodevinduet.

VBA-kode: Lås eller frigør celler baseret på værdier i en anden celle

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") = "Accepting" Then
        Range("B1:B4").Locked = False
    ElseIf Range("A1") = "Refusing" Then
        Range("B1:B4").Locked = True
    End If
End Sub

3. Tryk på andre + Q taster samtidigt for at lukke Microsoft Visual Basic til applikationer vindue.

Fra nu af, når du indtaster værdien "Accepterer" i celle A1, låses området B1: B4 op.

Ved indtastning af værdi "Refusing" i celle A1 låses det angivne område B1: B4 automatisk.


Relaterede artikler:


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (52)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan kan man låse/oplåse en variabel celle, f.eks. når celle er [=INDEX(A16:L35,MATCH(W5,A16:A35,0),MATCH("PAY",A16:L16,0))]
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg vil have en simpel VBA-kommando, som jeg ikke kan finde ud af, hjælp venligst
Hvis celle A1 er Balnk, er celle A2 låst, og hvis celle A1 indeholder en værdi, låses celle A2 op
På samme måde, hvis celle A2 er tom, låses celle A3, og hvis celle A2 indeholder en værdi, låses celle A3 op.
og så videre så mange celler som efter krav i enhver del af arket.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg prøver at opnå dette, men jeg får en fejl om, at VBA ikke er i stand til at indstille egenskaben Locked for Range-klassen, hvis arket er blevet beskyttet. Ophævelse af beskyttelsen af ​​arket vil derefter ophæve cellen, der låses. Hvordan kommer man uden om dette? Tak for enhver hjælp.
Denne kommentar blev minimeret af moderatoren på webstedet
Har du løst det? Jeg har samme problem
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Memo,
Prøv venligst nedenstående VBA-kode.

Private Sub Worksheet_Activate()
Hvis ikke ActiveSheet.ProtectContents Så
Range("A1").Låst = Falsk
Range("B1:B4").Låst = Falsk
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim XRG som rækkevidde, XRGA som rækkevidde
On Error Resume Next
Application.EnableEvents = False
Indstil xRg = Range("B1:B4")
Indstil xRgA = Område("A1")
If Intersect(Target, xRg).Address <> Target.Address _
Eller xRgA = "Accepterer" Så
Application.EnableEvents = True
Exit Sub
ElseIf ActiveSheet.ProtectContents _
Og skære(mål, xRg) = mål _
Og xRgA.Value = "Nægter" Så
xRgA.Vælg
End If
Application.EnableEvents = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Du vil gerne bruge grænsefladelinjen i projektmappen, så når du åbner filen, beskytter den arkene, men tillader makroer at foretage ændringer alligevel;

Private Sub Workbook_Open() 'Dette går ind i "ThisWorkbook"

Arbejdsark("Order Tool"). Protect Password:="Pwd", UserInterFaceOnly:=True

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Kære myre,
Nedenstående VBA-kode kan hjælpe dig med at løse dette problem. Tak for din kommentar.

Private Sub Worksheet_Activate()
Hvis ikke ActiveSheet.ProtectContents Så
Range("A1").Låst = Falsk
Range("B1:B4").Låst = Falsk
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim XRG som rækkevidde, XRGA som rækkevidde
On Error Resume Next
Application.EnableEvents = False
Indstil xRg = Range("B1:B4")
Indstil xRgA = Område("A1")
If Intersect(Target, xRg).Address <> Target.Address _
Eller xRgA = "Accepterer" Så
Application.EnableEvents = True
Exit Sub
ElseIf ActiveSheet.ProtectContents _
Og skære(mål, xRg) = mål _
Og xRgA.Value = "Nægter" Så
xRgA.Vælg
End If
Application.EnableEvents = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Er det muligt at få denne VBA til at låse et sæt celler/låse et andet op baseret på dette? For eksempel er område B1:B4 låst op, og C1:C4 er låst for "acceptering", og så er B1:B4 låst og C1:C4 låst op for at "afvise"?


Tak,
kristen
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Christian,
Er dit regneark beskyttet?
Denne kommentar blev minimeret af moderatoren på webstedet
kan nogen hjælpe mig med følgende.
Jeg ønsker at indsætte billeder af elev i et ark, vises i et andet ark baseret på deres navne
At oprette et navigationsplan for at hjælpe brugere
At tildele et eller flere bestemte ark til en bruger
At oprette en grænseflade til projektmappen
For at oprette en login-side
Denne kommentar blev minimeret af moderatoren på webstedet
Kære leo,
Ethvert spørgsmål om Excel, tøv ikke med at skrive i vores forum: https://www.extendoffice.com/forum.html.
Du vil få mere support om Excel fra vores Excel-professionelle.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Jeg har prøvet din kode og redigere en lille smule, men jeg kan ikke finde ud af, hvad jeg gør forkert her?

Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis Range("A40") <> "" Så
Range("D40:E40").Låst = Falsk
ElseIf Range("A40") = "" Så
Range("D40:E40").Låst = Sand
End If
End Sub


Min tanke om det var, hvis der ikke er noget i det (A40). Så vil jeg låse af VBA. Hvis A40 indeholder noget, så vil jeg have den låst op. Jeg håber du kan se meningen med det.


Hilsen Kristoffer
Denne kommentar blev minimeret af moderatoren på webstedet
Good Day,
Der er ikke noget galt med din kode. Det fungerer godt for mig.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej. Jeg kan heller ikke få denne kode til at virke. Det gør absolut ingenting. Som om koden ikke engang er der?? Jeg er meget ny til VBA og har en grundlæggende forståelse for det. Køres denne kode som den er, eller skal den også have ting tilføjet for at den kan køre? Eller forvandlet til en makro (hvilket jeg ikke rigtig forstår hvorfor, fordi det er en optagelse af instruktioner, efter min forståelse af dem)
Denne kommentar blev minimeret af moderatoren på webstedet
HVAD BLIR KODEN, HVIS JEG ØNSKER AT LÅSE CELLE E1, E2, E3 .............. FOR SPECIFIK TEKST (LAD SIG "P") PÅ CELLE B1, B2, B3... ..............HENHOLDSVIS.

Tak på forhånd
Denne kommentar blev minimeret af moderatoren på webstedet
Good Day
Prøv venligst nedenstående VBA-script.

Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis Target.Count = 1 Så
Hvis Target.Address = Range("A1").Address And Target.Value = "A", så
Range("B1").Låst = Sand
ElseIf Target.Address = Range("A2").Address And Target.Value = "A" Så
Range("B2").Låst = Sand
ElseIf Target.Address = Range("A3").Address And Target.Value = "A" Så
Range("B3").Låst = Sand
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
God dag!
Мне тоже необходимо заблокировать значение, но только в одной ячейке в зависимости от значения в другой, я попробовала использовать код в комментарии выше, но он не работает(оставила только один параметр для блокировки), но он у меня не работает - при этом нет сообщения об ошибке, ячейка, которая должна быть заблокирована - просто не блокируется, остается активной. В чем может быть причина?

Вот код, который я использовала:

Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis Target.Count t=1 Så
Hvis Target.Address = Range("C9").Address And Target.Value = "согласно плану"
Range("C10").Låst = Sand
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Ghost,
Undskyld jeg forstår ikke helt hvad du mener. For klarhedens skyld, vedhæft venligst en prøvefil eller et skærmbillede med dine data og ønskede resultater.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej! brug for nogle råd.
Er der en måde ikke at tillade en celle at blive opdateret, medmindre den har opfyldt en betingelse på en anden celle?
Eksempel: hvis celle A ikke er opdateret, vil det ikke tillade mig at ændre værdien af ​​celle B for at fuldføre.

Sætter pris på feedbacken.
Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Margie,
Prøv venligst nedenstående VBA-kode.

Dim PreVal Som streng
Dæmp NextVal som streng
Private Sub Worksheet_Activate()
PreVal = Range("A1")
NextVal = Range("A1")
End Sub
Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis (Target.Count = 1) Og (Target.Address = "$A$1") Så
NextVal = Range("A1")
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Hvis Target.Count = 1 Så
Hvis Target.Address = "$A$1" Så
PreVal = Range("A1")
ElseIf (Target.Address = "$B$1") Så
Hvis PreVal = NextVal Then
Application.EnableEvents = False
Range("A1"). Vælg
Application.EnableEvents = True
End If
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
kan nogen rette dette pls >>>

Privat Sub Worksheet_Change (ByVal Target As Range)
For i = 7 til 100
Hvis Range("Celler(D, i)") = "Lån" Så
Range("Celler(V,i):Cells(X,i)").Låst = Sand
ElseIf Range("Cells(D, i)") = "Besparelser" Så
Range("Celler(Q, i):Cells(U, i)").Låst = Sand
Range("Celler(W, i):Cells(X, i)").Låst = Sand
ElseIf Range("Cells(D, i)") = "ShareCap" Så
Range("Celler(Q, i):Cells(U, i)").Låst = Sand
Range("Celler(V, i)").Låst = Sand
End If
Næste jeg
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej! Kan nogen hjælpe mig? Jeg skal låse/fryse en celle. Denne celle er knyttet til en anden og har en værdi, som ændrer sig hvert minut. Hvad jeg skal gøre, er at holde værdien i et bestemt minut/time. Hvordan kan jeg gøre det uden at kopiere det og indsætte det som en værdi?
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Mira,
Jeg kan desværre ikke hjælpe med dette, du kan stille dit spørgsmål i vores forum: https://www.extendoffice.com/forum.html for at få mere Excel-støtte fra vores professionelle.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Jeg er virkelig ny i det her.
Jeg har forsøgt at sammensætte et faktureringssystem i excel.
Jeg lavede 3 ark.
1. Faktura skabelon (Faktura) - Bare en generisk faktura, der sendes til mine agenter ugentligt.

2. Et datablad (Datablad) for at være helt præcis - hvor fakturaen kan læse firmanavn adresse osv., så hvis noget ændrer sig vil fakturaen automatisk blive opdateret.

3. En kalenderfane (Kalender 2018) for at være helt præcis - der henvises til i fakturaskabelonen, og sætter den tilsvarende dato og fakturanummer på de faktiske fakturaer.

Hvad jeg vil gøre.
Kalenderfanen ville være min hovedside, jeg tilføjede en status rullemenu for hver uge med mulighederne "Aktiv" og "Lukket". Jeg vil gerne låse hele fanen "Faktura", hvis den tilsvarende celle er sat til "Lukket".

Jeg håber i forstår, hvad jeg prøver at gøre.
Tak på forhånd.
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Ando Veres.
Nedenstående VBA-kode kan hjælpe dig. Indsæt venligst koden i arkkodevinduet i Kalender 2018 ændring A1 til din rullemenu. Tak skal du have.

Privat Sub Worksheet_Change (ByVal Target As Range)
Dim xRg As Range
On Error Resume Next
Indstil xRg = Intersect(Target, Range("A1"))
Hvis xRg ikke er noget, skal du afslutte Sub
Hvis Target.Validation.Type >= 0 Så
Hvis Target.Value = "Lukket" Så
Sheets ("Datablad"). Beskyt
ElseIf xRg.Value = "Aktiv" Så
Sheets ("Dataark"). Fjern beskyttelse
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg udarbejder en lagerbeholdningsstyring i excel-skabelon.For at levere et lager skal jeg udstede et gatepass.Jeg ønsker at hvert gatepass,tilsvarende data vil blive opdateret i den daglige lageroptagelsesside.Med ændringen af ​​gatepass-serienr. række vil blive låst og næste vil blive fyldt op.
Denne kommentar blev minimeret af moderatoren på webstedet
Good Day,
Det ville være rart, hvis du kunne uploade din projektmappe her. Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
Kan du vejlede mig om, hvad der er galt her? Tak på forhånd.

Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis Range("K:K") = "OVER LAGER" Så
Range("S:S").Låst = Sand
ElseIf Range("K:K") = "SLOW MOVING" Så
Range("S:S").Låst = Sand
ElseIf Range("K:K") = "NORMAL" Så
Range("S:S").Låst = Falsk
ElseIf Range("K:K") = "SHORTAGE" Så
Range("S:S").Låst = Falsk
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Vil du være venlig at rådgive mig om, hvordan jeg kan rette dette? Tak på forhånd.

Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis Range("A:A") = "SLOW MOVING" Så
Range("B:B").Låst = Sand
ElseIf Range("A:A") = "OVER LAGER" Så
Range("B:B").Låst = Sand
ElseIf Range("A:A") = "NORMAL" Så
Range("B:B").Låst = Falsk
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Ikke at være en VB-ekspert vil jeg sige, at du har for mange "Elseif" - hvis du ændrer dem alle til bare IF undtagen den sidste, så vil det forhåbentlig fungere.
Grundlæggende hvis X gør dette, hvis Y gør dette, hvis Z gør dette, hvis ingen af ​​dem - gør dette.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan ville koden være, hvis jeg ville låse en blok af celler (række 6, 7 og 8/bogstaver D til U samt celler F5 og J5) og få dem til at låse op, når jeg sætter et "X" i celle E5? Tak på forhånd!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej MitchyII,
Mener du, at den angivne blok af celler er blevet låst manuelt på forhånd og bare vil låse dem op ved at skrive et "X" i celle E5?
Hvis du fjerner "X" fra celle E5, vil du låse områderne igen?
Jeg har brug for flere detaljer om problemet.
Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Mitchhyll (eller hvem som helst), bygger på Crystal. Jeg har manuelt låst alle celler og ud fra oplysningerne i kolonne G vil jeg gerne have, at de forbliver låst eller låst op. Eksempelceller i kolonne H bør KUN låses op, hvis "c/p" er placeret i den foregående celle i kolonne G
Denne kommentar blev minimeret af moderatoren på webstedet
Er det muligt at låse en celle, når den når en vis værdi?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, kan du være venlig at tjekke årsagen til at det ikke virker?

Privat Sub Worksheet_Change (ByVal Target As Range)
If Range("A3:A37").Værdi <> "" Så
Range("B3:B37").Låst = Sand
ElseIf Range("A3:A37") = "" Så
Range("B3:B37").Låst = Falsk
End If

If Range("B3:B37").Værdi <> "" Så
Range("A3:A37").Låst = Sand
ElseIf Range("B3:B37") = "" Så
Range("A3:A37").Låst = Falsk
End If

End Sub


På forhånd mange tak!!!
Denne kommentar blev minimeret af moderatoren på webstedet
Hi
Jeg har lige prøvet at bruge koden ovenfor
og den siger type 13 fejl, når jeg prøver at bruge den.
kan du hjælpe mig med dette?

tak
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Hvilken Excel-version bruger du?
Denne kommentar blev minimeret af moderatoren på webstedet
hi

hvis jeg skal låse en celle på ark 2 (celle C4) baseret på en påstand fra ark 1 (celle C1),
hvis "nej" på ark 1 C4; ark 2 skal være låst og det skal overføre værdien fra ark 1 C4,
til ark 2 C4.

hvis "ja" på ark 1, skal jeg kunne skrive i cellen på ark 2

Tak Benthe
Denne kommentar blev minimeret af moderatoren på webstedet
Hej venligst nogen, der hjælper mig med VBA-kode.

hvis jeg vælger fra rullemenuen i cellen Range(A1:A1000) "abc", så lås ikke Range(D1:D1000) til (F1:F1000)



hvis jeg vælger fra rullemenuen i cellen Range(A1:A1000) "abc", så lås ikke Range(D1:D1000) til (F1:F1000)



hvis jeg vælger fra rullemenuen i cellen Range(A1:A1000) "abc", så lås Range(D1:D1000) til (F1:F1000)



dvs. respektive celle A1 for D1 til F1



A2 for for D2 til F2
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg kopierede alt fra oven til et ark. Det virkede et sekund, og nu får jeg fejlen 'Kan ikke indstille egenskaben Låst for Range-klassen'. Jeg åbnede endda et helt nyt ark og kopierede dit eksempel ordret. Nogen idé om, hvad der foregår?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Jeg har brug for din gunst. Når jeg vælger Ingen indstilling fra en celle, vil jeg have, at kolonnerne nedenfor skal være låst/grå.

Er det muligt? Jeg prøvede denne formel, men det virkede ikke

Privat Sub Worksheet_Change (ByVal Target As Range)

Hvis Range("D90") = "Ja" Så

Range("C94:F104").Låst = Falsk

ElseIf Range("D90") = "Nej" Så

Range("C94:F104").Låst = Sand

End If

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Steffi,
Koden fungerer godt.
Hvis du vil låse celleområdet for at forhindre redigering, skal du beskytte arbejdsarket manuelt efter at have valgt Ingen indstilling i D90.
Og da D90 er i området C94:F104, kan D90 efter at have beskyttet arbejdsarket heller ikke redigeres.
Denne kommentar blev minimeret af moderatoren på webstedet
D90 er ikke i området. Det er 4 rækker over C94
Der er endnu ingen kommentarer her
Load More
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL