C贸mo bloquear ciertas celdas en Excel, si no se han llenado otras.

Tabla de Contenido

Imagen cortes铆a de Freeimages

Jonn_Rosales me preguntaba en Twitter sobre c贸mo podr铆a hacer para bloquear ciertas celdas en Excel, cuando a煤n el usuario no ha terminado de rellenar otras.

驴Es esto posible?

Pues s铆. Como siempre, hay m谩s de una respuesta, pero hoy te dar茅 una de las m谩s simples y con esa base, tu podr谩s ir experimentando por tu cuenta.

Primero, vas a guardar tu archivo con extensi贸n xlsm.

Luego, en el objeto 芦Hoja1禄 vas a insertar el c贸digo que te muestro m谩s abajo.

驴Que no recuerdas c贸mo trabajar con macros?

Entonces p谩sate de nuevo por la entrada 芦escribe tu primera macro en Excel禄.

驴Listo?

隆Bien! Ahora, vas a insertar el siguiente c贸digo dentro de el evento WorkSheet_Change de tu hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Not Intersect(ActiveCell, Range("B1:B10")) Is Nothing Then
    
        If ([a2] = "" Or [a3] = "" Or [a4] = "" Or [a5] = "" Or [a6] = "") And Target.Value <> "" Then
    
            Target.Value = ""
            MsgBox "No has terminado con la columna A. Debes llenar todos los datos antes de continuar.", vbCritical + vbOKOnly, "RaymundoYcaza.com"
            
        End If
        
    End If
    
End Sub

驴Qu茅 es lo que he conseguido con este c贸digo?

Cada vez que trates de escribir en cualquier celda de la columna B, dentro del rango B1:B10, Excel borrar谩 cualquier texto que trates de escribir ah铆 a menos que hayas completado todas las celdas indicadas en la columna A.

Intersect

Con esta l铆nea, lo que hago es preguntarle a Excel: 芦驴El cambio se hizo dentro del rango B1:B10?禄

Si la respuesta es s铆, entonces contin煤o con la revisi贸n.

If ([a2] = 芦禄 Or [a3] = 芦禄 …

Con esta l铆nea estoy preguntando, celda a celda, si est谩 vac铆a. Es decir, si la celda A2 est谩 vac铆a o la celda A3 est谩 vac铆a o la celda A4 est谩 vac铆a o…

Bueno, ya entiendes la idea.

Si cualquiera de esas condiciones se cumple, entonces proceso a invalidar la acci贸n.

Mucho ojo: Tambi茅n considero que el valor asignado no sea vac铆o ( 芦禄 )

Si no hicieras esto, tu programa caer铆a en un bucle infinito.

Target.Value

Target es el objeto que contiene el valor de la celda que ha cambiado. O mejor dicho, es una referencia a esta celda, por lo que manipular el objeto target, ser铆a casi como estar manipulando la celda misma.

Aqu铆 lo que he hecho es asignarle una cadena vac铆a en caso de que se cumpla que hay alg煤n dato faltante y con eso obtengo el efecto de 芦celda bloqueada禄 que Jonn andaba buscando.

El archivo terminado

Haz clic en el siguiente bot贸n para obtener el archivo terminado.

Descargar.

驴Qu茅 te parece?

A que no pensabas que era tan sencillo, 驴qu茅 dices?

Claro, esta es una validaci贸n b谩sica. Ya queda en ti que la mejores y adaptes a tus necesidades.

Cu茅ntame, 驴c贸mo y en qu茅 lo has implementado t煤?

Te espero en los comentarios.

隆Nos vemos!

[firma]

Nuestra puntuaci贸n
隆Punt煤a esta entrada!
(Votos: 0 Promedio: 0)
Excel 911
Jonn_Rosales me preguntaba en Twitter sobre c贸mo podr铆a hacer para bloquear ciertas celdas en Excel, cuando a煤n el usuario no ha terminado de rellenar otras. En esta entrada procuro responder su pregunta y ayudar a otras personas que puedan tener la misma inquietud.