Sim, com o VBa ... Simplesmente copie isso para o "ThisWorkbook" na tela do Visual Basic e então execute-o (triângulo verde)
SubWalkThePlank()dimcolorIndexasIntegercolorIndex=3'UPDATEMETOYOURCOLOURORBEFEDTOTHESHARKSDimrngAsRangeForEachrngInActiveSheet.UsedRange.CellsDimcolorAsLongcolor=rng.Interior.ColorIndexIf(color=colorIndex)Thenrng.Locked=Trueelserng.Locked=false'thiswillremoveanylocksforthosenotinthegivencolorEndIfNextrngEndSub
NãohácomodesfazernoVBa,entãocopieprimeirooseuarquivo(paracriarumbackup)!
Índicedecores-
Como eu adiciono o VBA no MS Office?
O texto acima assume que você não tem células mescladas e que sua planilha não está protegida.
Se você não tiver certeza do que é o colorIndex, use este script primeiro
Sub Find()
Dim colorIndexFinder As Integer
colorIndexFinder = Range("A1").Interior.colorIndex 'CHANGE A1 to the cell with the colour you want to use
MsgBox (colorIndexFinder)
End Sub
Editar
Você mencionou que usa células mescladas
Por favor, tente
Sub WalkThePlank()
Dim colorIndex As Integer
colorIndex = 3 '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