Inactivar celda excel si otra está vacía

Tengo una plantilla en excel, donde debo ingresar unos datos desde la fila A5 hasta A20, el problema que tengo es que en ocasiones no se utiliza desde la primera celda, es decir, por descuido se deja la fila A5 vacía, y al guardar el reporte queda esa fila en blanco y debo eliminar dicha fila y dañar mi plantilla. Cómo puedo darle una orden a Excel para que si introduzco un dato en una celda diferente a A5, y dicha celda está en blanco, me muestre un mensaje indicándome que la celda A5 está vacía.

1

1 Respuesta

10.375 pts. Llevo varios años manejando excel y sus macros

Si colocas este código en el editor de Hoja1 cualquier cambio que realices en cualquier celda, mostrara un mensaje indicando que la celda A5 esta vacía.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Trim(Range("A5")) = "" Then
MsgBox "La celda A5 esta vacía."
End If
End Sub

Ten en cuenta que todo cambio realizado mostrara el mensaje de celda vacía, esto puede resultar molesto.

Otra opción es solo colocar el siguiente código en ThisWorkbook:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Trim(Range("A5")) = "" Then
MsgBox "La celda A5 esta vacía."
Worksheets("Hoja1").Range("A5").Select
Cancel = True 'No guarda
End If
End Sub

Este procedimiento lo que hace es: Verifica antes de guardar si la celda A5 esta vacía, si lo esta muestra el mensaje y no almacena el documento hasta que se llene la celda.

Espero te sirva.

Feliz dia

Juan Carlos

Hola Juan Carlos, gracias por tomarte el tiempo de responderme, te cuento que la solución que me das está correcta, pero en la parte del encabezado de la plantilla (A1 hasta C4) debo registrar algunos datos básicos antes de pasar a llenar los campos que van de A5 hasta A20, por ello no sè si a la formula que me diste:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Trim(Range("A5")) = "" Then
MsgBox "La celda A5 esta vacía."
End If
End Sub

se le pueda agregar una instrucción para que solamente si las celdas que se afectan son las que van desde A6 hasta A20, y la celda A5 esté vacía, entonces me muestre el mensaje, es decir asignarle un rango a la condición (A6:A20); ello sucede por que con la orden que me indicas, cuando voy a dar los datos básicos del encabezado (que van de A1 a C4), se me muestra el mensaje. Gracias por la atención.

Prueba el siguiente código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Esta instrucción permite ingresar el encabezado de A1:C4
If Not Intersect(Target, Range("A1:C4")) Is Nothing Then Exit Sub
'Si la celda seleccionada esta entre A6:A20, verifica si A5 esta vacía
If Not Intersect(Target, Range("A6:A20")) Is Nothing Then
If Trim(Range("A5")) = "" Then
MsgBox "La celda A5 esta vacía."
End If
End If
End Sub

Espero te sirva

Feliz dia

Juan Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas