Macro validación Campos: Completar celdas condicionadas a rellenar celda inicial.

Estoy intentando definir una macro para conseguir el siguiente objetivo.

Si y sólo si completo la celda a1 me debe obligar a completar las celdas b1, c1 y d1.

Esto sería aplicable a un rango por ejemplo del a1 al a20, es decir, ingresando en el a15 me debería obligar también a completar el b15, c15, d15.

En caso de no completar la información debería saltar un mensaje de error y no dejar guardar el libro hasta completar todas las celdas.

Yo he desarrollado esta macro pero no me funciona (ejemplo pongo un dato en la celda a1, intento cerrar y me dice que me faltan datos eso está bien, pero si completo sólo los datos en la b1 me deja guardar el libro y me debería exigir que completase también la c1 y d1.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim rng As Range
Dim cell As Range

Set rng = Range("a1:a20")
For Each cell In rng.Rows
If cell.Value <> "" And Cells(cell.Row, 2).Value = "" And Cells(cell.Row, 3).Value = "" And Cells(cell.Row, 4).Value = "" Then
Cancel = True
MsgBox "Hay datos pendientes... En la fila " & cell.Row
Exit For
End If
Next cell
End Sub

¿Pueden ayudarme

1 Respuesta

Respuesta
2

Prueba con lo siguiente, cambia "Hoja2" por el nombre de tu hoja

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Act.Por.Dante Amor
    Set h = Sheets("Hoja2")
    Set rng = h.Range("A1:A20")
    h.Select
    For Each celda In rng
        If celda.Value <> "" Then
            If Cells(celda.Row, "B").Value = "" Or _
               Cells(celda.Row, "C").Value = "" Or _
               Cells(celda.Row, "D").Value = "" Then
                Cancel = True
                MsgBox "Hay datos pendientes... En la fila " & celda.Row
                celda.Select
                Exit For
            End If
        End If
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas