Jeg arbejder på en VBA kode, som kan låse eller åbne for en celle udfra en anden celles værdi. EKS: hvis A18 = "A - Depot ,arkiv og kopirum ,specialrum m.v.", så skal celle G18 være låst. Hvis A18 = "H - Ikke Prissatte lokaler", så skal celle G18 være åben.
Indtil videre har jeg dette. Den skriver ikke fejl, men den virker bare ikke:
Sub ModifyProtectedSheet1() ActiveSheet.Unprotect Password:="123" Private Sub Worksheet_Change1(ByVal Target As Range) If Range("$A$18:$A$25") = "H - Ikke Prissatte lokaler" Then Range("$G$18:$G$25").Locked = False ElseIf Range("$A$18:$A$25") = "A - Depot ,arkiv og kopirum ,specialrum m.v." Then Range("$G$18:$G$25").Locked = True End If ActiveSheet.Protect Password:="123", _ DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
If Range("$A$18:$A$25") = "H - Ikke Prissatte lokaler" Then
Udfordringen er at i din test der forespørger du på om værdien af hele rangen. Jeg vil mene du skal prøve at rette dette til, således det kun er A18 der medgår her.
Sub ModifyProtectedSheet1() ActiveSheet.Unprotect Password:="123" Private Sub Worksheet_Change1(ByVal Target As Range) If Range("A18") = "H - Ikke Prissatte lokaler" Then Range("G18").Locked = False ElseIf Range("A18") = "A - Depot ,arkiv og kopirum ,specialrum m.v." Then Range("G18").Locked = True End If ActiveSheet.Protect Password:="123", _ DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Er det, du søger en løsning, hvor der sker noget, hver gang du ændrer en celle i dit område, siden du bruger Worksheet_Change? For så skal du jo kun se på den celle, du faktisk ændrer i, og så den celle, der konkret skal låses.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Unprotect Password:="123"
If Not Intersect(Target, Range("A1:A5")) Is Nothing Then If Target.Value = "a" Then Target.Offset(0, 6).Locked = True ElseIf Target.Value = "b" Then Target.Offset(0, 6).Locked = False End If End If
ActiveSheet.Protect Password:="123", _ DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Jeg har prøvet rette den lidt til, men stadig uden held. Hvad er det du definere i "Target.Offset(0, 6).Locked = False"?
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Unprotect Password:="123"
If Not Intersect(Target, Range("A18:A25")) Is Nothing Then If Target.Value = "H - Ikke Prissatte lokaler" Then Target.Offset(0, 6).Locked = False ElseIf Target.Value = "" Then Target.Offset(0, 6).Locked = True End If End If
ActiveSheet.Protect Password:="123", _ DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
#18 -Der kan kun være en, og bruger du andre navne, vil,det ikke virke. Skal den samme Worksheet_Change gøre flere ting, må du simpelthen kode den, så den løser alle opgaverne.
Fedt! Det virkede. En sidste ting er at jeg skal have skiftet "A18" ud med Target.Range? så den ikke altid henter det som står i A18 hvis jeg skriver i f.eks. A20
1. enten skal jeg have en celle til at være unlocked, men hvor man ikke har mulighed for at trykke delete.
2. eller også skal jeg have en celle som er locked, men hvor man stadig kan vælge fra en dropdown liste.
Jeg tænker umilledbart at nr. 2 er en løsning, jeg ved bare ikke hvordan jeg får excel til at gøre det.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.