Excel: Macro que devuelve en un msg las celdas vacias de un rango

Adapte el siguiente código, para que me devolviera en un msgbox la celdas que están vacias en un rango a la vez que las coleara en amarillo.

Sub ContarCeldasVacias()
'Por.Dante Amor
    For Each c In Range("A1:D10")
    If c.Value = "" Then
            n = n + 1
            c.Interior.ColorIndex = 6
            cad = cad & c.Address(False, False) & ", "
        Else
            c.Interior.ColorIndex = xlNone
        End If
    Next
    If n > 0 Then
        cad = Left(cad, Len(cad) - 2)
        u = InStrRev(cad, ",")
        If u > 0 Then
            cad = Left(cad, u - 1) & " y" & Mid(cad, u + 1)
        End If
        MsgBox "Las siguientes celdas están vacías: " & cad, 48, "Capura Incompleta"
    Else
        MsgBox "Tu captura esta completa!!!", 64, "Captura correcta"
    End If
End Sub

Mi petición es la siguiente:

Sí alguna celda en esa columna D esta vacía que no me mande el mensaje de esas celdas ni las coloree. Por ejemplo, la fila 8 no contiene datos en la columna D (no debe enviar mensaje) para esa fila; y las filas 2, 6, 9 y 10 si contienen datos en la columna D (deberá aparecer el mensaje: "Las siguientes celdas están vacias: C2, A6, B9, A10, B10 y C10").

1 Respuesta

Respuesta
1

 H o  l a:

Te anexo la macro, si le falta algo a la macro con respecto a tu petición, puedes solicitar más información. De lo contrario podrías valorar la respuesta.

Sub ContarCeldasVacias()
'Por.Dante Amor
    Range("A1:C10").Interior.ColorIndex = xlNone
    For Each d In Range("D1:D10")
        If d.Value <> "" Then
            For Each c In Range("A" & d.Row & ":C" & d.Row)
                If c.Value = "" Then
                    n = n + 1
                    c.Interior.ColorIndex = 6
                    cad = cad & c.Address(False, False) & ", "
                End If
            Next
        End If
    Next
    If n > 0 Then
        cad = Left(cad, Len(cad) - 2)
        u = InStrRev(cad, ",")
        If u > 0 Then
            cad = Left(cad, u - 1) & " y" & Mid(cad, u + 1)
        End If
        MsgBox "Las siguientes celdas están vacías: " & cad, 48, "Capura Incompleta"
    Else
        MsgBox "No hay celdas vacías", 64, "Captura correcta"
    End If
End Sub

¡Gracias! Dante:

Era exactamente lo que necesitaba, ya la adapte al rango requerido. Saludos y mil gracias por compartir tus soluciones!!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas