Avatar billede lasseo Nybegynder
11. januar 2002 - 11:23 Der er 17 kommentarer og
2 løsninger

Betinget lås på celle

Hvordan kan man - som med f.eks. farve i betinget formatering - betinge adgangen til en celle.
Jeg ønsker i kollone A at indtaste værdi. Ved nogle udvalgte værdier indsættes forskellige tekster i kolonne B med opslagsfunktion. Ved nogle værdien indsættes intet.
Når intet indsættes ønsker jeg cellen åben for indtastning, mens den skal være låst, hvis indtastningen i kolonne A medfører værdi.

Avatar billede rvm Nybegynder
11. januar 2002 - 11:26 #1
Det kan gøres ved hjælp en en makro.
Avatar billede rvm Nybegynder
11. januar 2002 - 11:28 #2
Det vil sige at det ikke umiddelbart er en uindbygget funktionalitet i Excel - dog er der åbner mere op for mulighederne for brugertilpassede adgange i XP
Avatar billede rvm Nybegynder
11. januar 2002 - 11:29 #3
uindbygget = indbygget
åbner = åbnet
Nu må jeg snart lære at læse korrektur før jeg trykker Udfør *S*
Avatar billede lasseo Nybegynder
11. januar 2002 - 11:38 #4
OK - har du forslag til makro.
Udgangspunktet skal være a cellen i b-kolonnen er låst og ved bestemte værdier låses op.
Avatar billede bak Forsker
11. januar 2002 - 11:49 #5
Indsæt i arkets eget modul.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    ActiveSheet.Unprotect
    If Target.Offset(0, 1).Value = 0 Then Target.Offset(0, 1).Locked = False
    ActiveSheet.Protect
End If

If (Target.Column = 2 And Target.Value = 0) Then
    ActiveSheet.Unprotect
    Target.Locked = True
    ActiveSheet.Protect
End If
End Sub
Avatar billede lasseo Nybegynder
11. januar 2002 - 11:58 #6
2 spørgsmål til bak:
For det første er jeg kun vant til at indspille makroer, så jeg behøver guide til at kopiere din makro ind.
For det andet læser jeg makroen som om det er hele arket du låser/låser op - er det korrekt?
Avatar billede bak Forsker
11. januar 2002 - 12:14 #7
Sorry, men test lige denne her i stedet for.
arkets eget kodemodul findes ved at højreklikke på arkfanen, vælge vis koder og så kopier makroen ind.

Så marker kol B, under formater lås cellerne.
beskyt arket.

Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 1 And Target.Offset(0, 1).Value = 0) Then
    ActiveSheet.Unprotect
    Target.Offset(0, 1).Locked = False
    ActiveSheet.Protect
End If

If Target.Column = 2 Then
  ActiveSheet.Unprotect
    Target.Locked = True
  ActiveSheet.Protect
End If
End Sub
Avatar billede mile Juniormester
11. januar 2002 - 12:22 #8
Kan du ikke bare lave en datavalidering der tester på om cellen er Tom ??
Avatar billede lasseo Nybegynder
11. januar 2002 - 12:34 #9
mile: Nej, jeg kan ikke lave datavalidering, da der ikke skal, men KAN indtastes værdi.
bak: Jeg prøver og kommer tilbage.
Avatar billede rvm Nybegynder
11. januar 2002 - 13:13 #10
-> bak - Fin kode *S*
->lassoe - Husk at dit opslag skal returnere et 0 (læs: Nul), hvis der intet findes i dit opslag.

Hvis opslaget ingenting (læs: tom celle )returnerer skal bak\'s kode ændrest til følgende:

Sub Worksheet_Change(ByVal Target As Range)

If (Target.Column = 1 And Target.Offset(0, 1).Value = \"\") Then
    ActiveSheet.Unprotect
    Target.Offset(0, 1).Locked = False
    ActiveSheet.Protect
End If

If Target.Column = 2 Then
  ActiveSheet.Unprotect
    Target.Locked = True
  ActiveSheet.Protect
End If

End Sub

Mvh

Richardt

P.s. Jeg skriver ikke dette for at få point - kun for at hjælpe *S*
Avatar billede lasseo Nybegynder
11. januar 2002 - 13:46 #11
Når jeg anvender bak\'s kode som modificeret af Richardt får jeg en runtime error 1004 \"Du kan ikke angive egenskaben Locked for klassen Range\".

Fejlen kan måske skyldes at det jeg hidtil har omtalt som kolonne B i det valgte område dækker over 2 kolonner med flettede celler?
Avatar billede rvm Nybegynder
11. januar 2002 - 14:01 #12
Prøv denne lille version:

Sub Worksheet_Change(ByVal Target As Range)

række = Target.Offset(0, 1).Row
kolonne = Target.Offset(0, 1).Column

If (Target.Column = 1) And (Target.Offset(0, 1).Value = \"\") Then
    ActiveSheet.Unprotect
    Range(Cells(række, kolonne), Cells(række, kolonne + 1)).Locked = False
    ActiveSheet.Protect
End If

If Target.Column = 2 Then
  ActiveSheet.Unprotect
  Range(Cells(række, kolonne), Cells(række, kolonne + 1)).Locked = False
  ActiveSheet.Protect
End If

End Sub
Avatar billede rvm Nybegynder
11. januar 2002 - 14:02 #13
ups - jeg så lige en lille fejl - brug denne *S*

Sub Worksheet_Change(ByVal Target As Range)

række = Target.Offset(0, 1).Row
kolonne = Target.Offset(0, 1).Column

If (Target.Column = 1) And (Target.Offset(0, 1).Value = \"\") Then
    ActiveSheet.Unprotect
    Range(Cells(række, kolonne), Cells(række, kolonne + 1)).Locked = False
    ActiveSheet.Protect
End If

If Target.Column = 2 Then
  ActiveSheet.Unprotect
  Range(Cells(række, kolonne), Cells(række, kolonne + 1)).Locked = True
  ActiveSheet.Protect
End If

End Sub
Avatar billede bak Forsker
11. januar 2002 - 15:00 #14
Yesss Richardt, den funker fint med merged celler.
Avatar billede lasseo Nybegynder
11. januar 2002 - 17:21 #15
Jeg er der næsten nu - men mine problemer skyldes nok, at jeg har ændret på forudsætningerne:
Kolonne 1: Værdi indtastes (vælges fra liste)
Kolonne 2: Værdi indtastes (vælges fra liste)
Kolonne 3: (reelt 2 merged kolonner) er resultat af opslag baseret på værdien i kolonne 1. Det er denne - og kun denne kolonne, hvor cellen skal åbnes når værdien i cellen er tom (\"\")
Kolonne 4: (reelt kolonne 5 efter de merged kolonner) Her har jeg nu problemer, da denne kolonne bliver låst??

Min tilrettede kode ser således ud:
Sub Worksheet_Change(ByVal Target As Range)

række = Target.Offset(0, 1).Row
kolonne = Target.Offset(0, 1).Column

If (Target.Column = 1) And (Target.Offset(0, 2).Value = \"\") Then
    ActiveSheet.Unprotect
    Range(Cells(række, kolonne), Cells(række, kolonne + 2)).Locked = False
    ActiveSheet.Protect
End If

If Target.Column = 3 Then
  ActiveSheet.Unprotect
  Range(Cells(række, kolonne), Cells(række, kolonne + 2)).Locked = True
  ActiveSheet.Protect
End If

End Sub

Avatar billede bak Forsker
13. januar 2002 - 01:24 #16
Kolonne 4/5 er kun låst fordi alle celler default er sat til låst fra starten. Du skal altså formatere dem som ikke låste inden du beskytter arket
Avatar billede lasseo Nybegynder
16. januar 2002 - 07:44 #17
Jeg har været væk fra opgaven, men har sat den i drift nu med acceptabel løsning...
Tak for hjælpen til bak - og også lidt til rvm
Avatar billede bak Forsker
16. januar 2002 - 10:23 #18
Hvis det er Ok, så del lige point ud *S*
Avatar billede lasseo Nybegynder
16. januar 2002 - 10:42 #19
Ups - det var forsøgt - jeg prøver igen
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester