Excel - Macro que devuelva en un msgbox el número de celdas vacías en un rango definido

Quisiera saber el código que devuelva en un msgbox el número de celdas vacías en un rango definido.

Ejemplo:

Rango A1:C10, hay 3 celdas vacias A7, B9 y C1.

Quiero que me devuelva en una msgbox la leyenda "Las siguientes celdas están vacías: A7, B9 y C1", si es posible que me las coloree en amarillo.

De antemano agradezco su apoyo.

Saludos

1 Respuesta

Respuesta
3

H o  l a:

Te anexo la macro

Sub ContarCeldasVacias()
'Por.Dante Amor
    For Each c In Range("A1:C10")
        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
    Else
        MsgBox "No hay celdas vacías"
    End If
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

¡Gracias! Dante, excelentisssimo funciona a la perfección. Saludos

Buen día, Dante:

Adapte el código arriba mencionado y funciona a la perfección,

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

Solo quiero que me apoyes, con lo siguiente:

Agregue a mi rango la columna D (Valoración), sí alguna celda en esa columna esta vacía que no me mande el mensaje de esas celdas ni las coloree. Por ejemplo, el renglón 8 no contiene datos en la columna D (no debe enviar mensaje) para ese renglón; y los renglones 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").

Saludos.

Solamente deja la macro original para que no te verifique la columna D:

For Each c In Range("A1:C10")

R ecuerda valorar la respuesta.

H o l a:

Ya entendí lo que necesitas, si la celda de la columna "D" está vacía no se deben verificar las celdas de esa fila.

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas