Forzar llenado de una celda en Excel si otra esta vacía

Ando en búsqueda de una macro que me ayude a forzar el llenado de una celda si es que otra esta vacía.

Aclarando y poniendo en contexto.

Tengo una métrica que contiene datos de clientes, estos clientes tienen que pasar por diferentes etapas antes de poder liberarlos. Digamos que tenemos cuatro etapas (1,2,3 y 4) y cada etapa se localiza en un columna; Etapa 1 = Columna B, Etapa 2 = Columna C, Etapa 3 = Columna D y Etapa 4 = Columna E.

Luego entonces, si al colocarme en la Columna C, fila 1 (Etapa 2), el contenido de la Columna B fila 1(Etapa 1) esta vacío, me mande un mensaje de error diciendo que tengo que llenar la Etapa 1 antes de poder seguir con la 2 y así sucesivamente con las otras etapas, haciendo esto para todas las filas. Al final necesito solo validar que las etapas se llenen en orden sin que falten datos en las etapas previas.

1 Respuesta

Respuesta
1

Para que funcione lo que necesitas, deberás colocar la macro en la hoja donde vas a capturar tus etapas, para ello sigue las siguientes instrucciones.

1. Abre tu libro de excel

2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11

3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)

4. Del lado derecho copia la macro

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("B:E")) Is Nothing Then
        direc = ActiveCell.Address
        If Target.Count > 1 Then
            Range(direc).Select
        End If
        If Cells(Target.Row, Target.Column - 1) = "" And Target.Column > 2 Then
            MsgBox "Para continuar deberá llenar la etapa: " & Target.Column - 1, vbExclamation, "ETAPAS"
            Cells(Target.Row, Target.Column - 1).Select
        End If
    End If
End Sub

Listo, cada vez que selecciones una celda de las columnas C a E revisará que la columna anterior tenga información, si la columna anterior no tiene información te enviará un mensaje.

Saludos. Dante Amor

Recuerda valorar la respuesta

Hola Dante,

Muchas gracias por el apoyo y la pronta respuesta, esto me ha servido de mucho.

Tengo un par de dudas adicionales que, si te es posible, me gustaría me apoyaras en resolver. Cómo puedo validar las etapas si no están en Columnas contiguas? O sea puedo utilizar algo como:

Target, Range("B:E","K:M")

Luego, en la parte del mensaje, hay alguna manera de que en vez de usar un contador, para poner la etapa anterior, use el encabezado de la columna? O sea en vez de poner "Etapa X", use el nombre de la etapa (Que esta en el encabezado de la columna, ej. Columna B1 = "Quality Control", que es la etapa 1)

Agradezco tu ayuda, de cualquier manera valoro tu respuesta.

Saludos

Carlos.

Para rango de columnas, sería así:

Target, Range("B:E, K:M")

Pero habría que considerarlo en la lógica de la macro, es decir, la etapa anterior a K no es la columna J. Se tendría que establecer cuáles etapas van en qué rango y cuáles dependen de cuáles.

Para el encabezado, sería algo así

MsgBox "Para continuar deberá llenar la etapa: " & Cells(1, Target.Column - 1)

Si quieres que actualice la macro para establecer las etapas en diferentes rangos podrías crear una nueva pregunta. La puedes dirigir a Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas