Cómo seleccionar todas las celdas desbloqueadas en Excel
Las hojas de cálculo son fáciles de romper. Todo lo que se necesita es presionar una tecla y, de repente, cada fórmula se muestra en un mensaje de error. ¡Eso no es bueno! Es por eso que aplicamos protección de hojas de trabajo para evitar errores del usuario.
Algunos piensan que la protección de las hojas de trabajo es segura; sin embargo, las hojas de trabajo protegidas con contraseña se pueden desbloquear fácilmente con una macro. Por lo tanto, cualquier usuario que realmente quiera romper nuestra hoja de cálculo puede hacerlo. Por lo tanto, el beneficio real de la protección no es bloquear la hoja de trabajo, sino evitar errores básicos del usuario.
Permitir a los usuarios cambiar celdas cuando la hoja de trabajo está protegida
Podemos proteger una hoja de trabajo completa. Pero también podemos configurar celdas específicas para que se desbloqueen, esto permite al usuario interactuar solo con las partes de la hoja de trabajo que queremos.
Mientras la hoja de trabajo está desbloqueada, haga clic en cualquier celda y abra la ventana Formato de celdas. En la pestaña Protección existe la opción de bloquear o desbloquear el Celular.
Para aplicar esto con VBA podríamos usar el siguiente código:
Sub DesbloqueoSelectedCells()Selection.Locked = FalseEnd Sub
O para revertirlo a bloqueado
Sub LockSelectedCells()Selection.Locked = TrueEnd Sub
Cómo seleccionar todas las celdas desbloqueadas
Pero aquí está el desafío, sin revisar cada celda, ¿cómo sabemos cuáles están bloqueadas o desbloqueadas? ¿Qué pasa si queremos aplicar formato solo a las celdas desbloqueadas? ¿Cómo podríamos hacerlo fácilmente?
El menú Ir a especial... tiene muchas buenas opciones de selección, pero seleccionar celdas desbloqueadas no es una de ellas.
Es posible desplazarse por las celdas desbloqueadas cuando la hoja de trabajo está protegida, pero eso puede llevar mucho tiempo y no ser particularmente conveniente.
Es mucho más rápido aplicar algo de VBA para seleccionar solo las celdas desbloqueadas.
El siguiente código seleccionará todas las celdas desbloqueadas:
- del rango utilizado de la hoja de trabajo si solo se selecciona una celda
- del rango seleccionado si se selecciona más de una celda.
Sub SelectAllUnlockedCells()Dim c As RangeDim unlockedCells As RangeDim fullRange As RangeDim rangeDescription As String'Cuenta celdas en la selección. Si hay 1 celda, entonces busca el rango usado'de lo contrario, busca el rango seleccionado. Si Selection.Cells.Count 1, luego establece fullRange = Selection rangeDescription = " celdas seleccionadas"Else Set fullRange = ActiveSheet.UsedRange rangeDescription = "active range"End If'Recorre cada celda en el rango elegido de la hoja activaPara cada c en fullRange If c.Locked = False Then 'Si encuentra la primera celda, establezca la variable, de lo contrario, agregue 'a la lista de celdas existente. Si unlockedCells no es nada, entonces establezca unlockedCells = c. De lo contrario, establezca unlockedCells = Union(unlockedCells, c) End If End IfNext'Seleccione el rango de celdas desbloqueadas. Si no, unlockedCells no es nada, entonces unlockedCells.SelectElse MsgBox "Hay no hay celdas desbloqueadas en " _ rangeDescription ": " fullRange.AddressEnd IfEnd Sub
Y eso es. Sencillo derecho.
El código también funcionará con hojas de trabajo protegidas, siempre que la configuración de protección aplicada permita la selección de celdas desbloqueadas.
Conclusión
Si crea regularmente modelos y aplicaciones de Excel para que otros los utilicen, esta macro puede ahorrarle tiempo y reducir errores. Agregue este código a un módulo estándar dentro de su Macrobook personal para asegurarse de que siempre esté disponible cuando lo necesite.
Deja una respuesta