Beskyt Ark2 ved indtastning i celle i Ark1

Dette er egentlig ikke en sigende overskrift, men skulle jeg have den til at blive præcis, ville den blive ganske lang. Igen er der tale om en konkret opgave, som jeg har løst, for at svare på et spørgsmål. Spørgsmålet gik i alt sin enkelthed ud på, om det var muligt at låse en given celle i et ark, på baggrund af en værdi i et andet ark. Og det er det. I Ark2 er alle celler låst op, på nær B1. I Ark1 står en værdi i A2, og i A1 kan man skrive en tekst. Hvis der skrives 'nej' her, skal Ark2 beskyttes, så der ikke kan tastes i B1, og værdien fra Ark1, A2 skal overføres til Ark2, B1. Skrives der Ja, skal ark2 "afbeskyttes", så der kan tastes i B1.

Først skal man markere hele Ark2, vælge Fromater celler og fjerne fluebenet fra Låst. Dernæst skal man markere celle B1, og sætte et flueben i låst, og dermed er forberedelserne færdige.

I Ark1's kodemodul skal man nu indsætte denne kode, som løser opgaven:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ct As Variant
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        ct = ActiveSheet.Range("A2").Value
        If UCase(Target.Value) = "NEJ" Then
            Sheets("Ark2").Select
            ActiveSheet.Range("B1").Value = ct
            ActiveSheet.Protect Contents:=True
        ElseIf UCase(Target.Value) = "JA" Then
            Sheets("Ark2").Select
            ActiveSheet.Protect Contents:=False
        End If
    End If
End Sub

Og det er det hele. Man kan lave en rulleliste i A1 i Ark1 kun med mulighederne Ja og Nej, men man kan altså også bare taste værdien selv. Taster man noget andet end Ja eller Nej, sker der simpelthen ingenting. Er Ark2 beskyttet, forbliver det beskyttet; er det åbent, forbliver det åbent.

- Tilbage til makroer -
- Tilbage til Excel -