Excel lock cellen met een kleur

  • Onderwerp starter Onderwerp starter Rawry
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Rawry

Gebruiker
Lid geworden
18 dec 2014
Berichten
33
Hallo allemaal,

Ik heb een excel sheet waarbij ik alleen de witte cellen (zonder achtergrond kleur) vrij wil laten voor input.
De rest wil ik 'locken'.
Ik heb 2 andere kleuren in de sheet waar formules in staan en die niet ge edit mogen worden.
Dit zijn een gele kleur (colorindex = 18) en een grijze kleur kleur (colorindex = 15)

Nou heb ik een stukje code gevonden op internet (zie onderstaande code) wat perfect de cellen van één kleur locked, maar het lukt me niet om dit ook voor 2 kleuren tegelijk te doen met deze code.
Iemand enige idee hoe ik de sheet lock voor de twee bovengenoemde kleuren of voor alles behalve de cellen zonder achtergrondkleur.

Er is in mijn sheet ook spraken van merged cells, vandaar dat ik onderstaande code had uitgezocht.

Hartelijke groet,
Rawry

Code:
Sub WalkThePlank()

Dim colorIndex As Integer
colorIndex = 15
  'UPDATE ME TO YOUR COLOUR OR BE FED TO THE SHARKS

Dim rng As Range

For Each rng In ActiveSheet.UsedRange.Cells

    Dim color As Long
    color = rng.Interior.colorIndex

    If (color = colorIndex) Then
        If (rng.MergeCells) Then
            rng.MergeArea.Locked = True
        Else
            rng.Locked = True
        End If
    Else
        If (rng.MergeCells) Then
            rng.MergeArea.Locked = False
        Else
            rng.Locked = False
        End If
    End If

    Next rng

End Sub
 
Laatst bewerkt:
Dan krijg je zoiets:
Code:
Dim rng As Range
Const CI_1 As Integer = 15: Const CI_2 As Integer = 13
Dim bChk As Boolean

    For Each rng In ActiveSheet.UsedRange.Cells
        color = rng.Interior.colorIndex
        If rng.Interior.colorIndex = CI_1 Or rng.Interior.colorIndex = CI_2 Then bChk = True Else: bChk = False
        If rng.MergeCells Then
            rng.MergeArea.Locked = bChk
        Else
            rng.Locked = bChk
        End If
    Next rng
Niet getest, want je hebt er geen voorbeeldje bij gedaan en ik ben geen tikgeit :)
 
Dank voor je antwoord.

De code geeft de foutmelding: 'compile error: assignment to constant not permitted'.

Hierbij een testfile die ik gemaakt heb met een gedeelte van het originele bestad
 

Bijlagen

Laatst bewerkt:
je gebruikt een gereserveerde naam (color) als variabele en dat werkt niet.
 
Laatst bewerkt:
Ah dankjewel, ik heb de line 'dim color as long' ertussen gezet en nu werkt ie wel
 
Dat is nog steeds een slechte keuze. Je gebruikt die variabele niet eens. De meeste andere variabelen kunnen er volgens mij ook wel uit.

Code:
Sub VenA()
Dim cl As Range
For Each cl In ActiveSheet.UsedRange
  If cl.MergeCells Then cl.MergeArea.Locked = cl.Interior.ColorIndex <> xlNone Else cl.Locked = cl.Interior.ColorIndex <> xlNone
Next cl
End Sub

Samengevoegde cellen in combinatie met VBA en in het algemeen is ook een slechte keuze.;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan