Proteger hojas de un libro con condiciones.

Expertos buen día, me gustaría un apoyo.

Tengo un libro con varias hojas, me gustaría que se bloqueen todas las hojas pero solamente las celdas que tengan relleno ósea que tengan algún color y las que no tengan color que se mantengas desbloqueadas para introducir datos.

Respuesta
1

Puedes responder en el siguiente orden:

1. ¿El color en la celda está con Color de relleno o con formato condicional?

2. ¿Las celdas con color tienen datos o pueden estar vacías?

1. Las celdas están con color de relleno.

2. Las celdas con pueden estar vacías 

Primero realiza una prueba en una copia de tu libro.

Sub Proteger_Hojas()
  Dim sh As Worksheet
  Dim c As Range
  '
  For Each sh In Sheets
    sh.Unprotect "abc"
    sh.Cells.Locked = False
    For Each c In sh.Range("A1", sh.Cells.SpecialCells(xlCellTypeLastCell).Address)
      If c.Interior.ColorIndex <> -4142 Then
        c.Locked = True
      End If
    Next
    sh.Protect "abc"
  Next
End Sub

El tiempo del proceso depende del número de celdas utilizadas en cada hoja y del número de hojas.

Me genera error cuando encuentra celdas combinadas, algún apoyo con ese tema por favor.

Prueba esto:

Sub Proteger_Hojas()
  Dim sh As Worksheet
  Dim c As Range
  '
  For Each sh In Sheets
    sh.Unprotect "abc"
    sh.Cells.Locked = False
    For Each c In sh.Range("A1", sh.Cells.SpecialCells(xlCellTypeLastCell).Address)
      If c.Interior.ColorIndex <> -4142 Then
        If c.MergeCells = True Then
          c.MergeArea.Locked = True
        Else
          c.Locked = True
        End If
      End If
    Next
    sh.Protect "abc"
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas