Comprobar Celdas Vacias

Una de las cosas que debemos hacer cuando se automatizan tareas es validar los datos ingresados por el usuario, y una de esas validaciones es comprobar que el usuario haya ingresado los datos necesarios para que la automatización funcione.

En VBA hay varias formas de validar si una celda esta vacía por ejemplo

If Range("A1")=Empty and Range("A1").HasFormula=False Then
    MsgBox "La celda A1 esta vacía"
End If


Pero cuando necesitamos validar varias celdas al mismo tiempo y en diferentes hojas entonces ya no es tan fácil porque tenemos que agregar varios operadores And y/o varias sentencias If para validarlas, o también podemos usar la siguiente función mucho mas sencilla y mucho mas útil.

Function ComprobarCeldasVacias(celdas As String) 'celdas = "'Hoja1'!A1,Hoja2!A1:A2,..."
    Dim celdasAux As String
    Dim celdasNoVacias As Long
    Dim celdasTotales As Long
    celdasNoVacias = Application.Evaluate("=CountA(" + celdas + ")")
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = ",[^,]*\!"
        celdasAux = Mid(.Replace("," + celdas, ","), 2)
    End With
    celdasTotales = Range(celdasAux).Count
    If celdasNoVacias <> celdasTotales Then
        ComprobarCeldasVacias = True
    Else
        ComprobarCeldasVacias = False
    End If
End Function


La función cuenta el numero de celdas a comprobar y también cuenta las celdas no vacías, y luego compara las dos cuentas y si no son iguales entonces hay celdas vacías y devuelve true, en caso contrario no hay celdas vacías y devuelve false

Se debe considerar que una celda esta vacía cuando no tiene ningún numero ni texto ni formula, lo que quiere decir que aunque la celda aparentemente este vacía, puede no estarlo, por ejemplo cuando tiene una formula cuyo resultado es una cadena vacía (“”) o cuando es cero pero el formato de la celda no muestras ceros, etc.

Para usar la función se debe colocar en un modulo y se utiliza de la siguiente manera

Dim CeldasVacias As Boolean
CeldasVacias=ComprobarCeldasVacias("'Hoja1'!A1,Hoja2!A1:A5")
If CeldasVacias=True Then
    MsgBox "Hay celdas vacias"
End If

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s