Error en código contar blancos VBA para excel

Espero que me puedan ayudar con lo siguiente, estoy creando una macro que me permita saber si existen o no celdas en blanco en un rango de celdas, usé un código para contar las celdas en blanco, y si es mayor a 1, entonces si hay celdas en blanco.

El rango de celdas aumenta cada vez que se ingresa un nuevo registro en la base de datos.

Entonces el siguiente código me aparece con error, he tratado de buscar el error pero no lo logro encontrar. Me dice "error definido por la aplicación o el objeto", y me marca la fila nvacio

El código es:

Dim UR As Long
Dim nvacio As Long

UR = Worksheets("REGISTRO").[A1048576].End(xlUp).Row

nvacio = Application.WorksheetFunction.CountBlank(Worksheets("REGISTRO").Range(Cells(2, 1), Cells(UR, 1)))

If nvacio >= 1 Then

MsgBox ("No deben existir filas en blanco en los registros")
End If

1 Respuesta

Respuesta
4

H o la: Si la hoja activa es la "REGISTRO", entonces no es necesario hacer mención de la hoja y puede ser así:

Sub macro()
    Dim UR As Long
    Dim nvacio As Long
    UR = [A1048576].End(xlUp).Row
    nvacio = WorksheetFunction.CountBlank(Range(Cells(2, 1), Cells(UR, 1)))
    If nvacio >= 1 Then
        MsgBox ("No deben existir filas en blanco en los registros")
    End If
End Sub

Pero si la hoja "REGISTRO" no es la hoja activa, supongo que es el caso, entonces tienes que hacer mención de la hoja en todas las referencias:

Sub macro()
    Dim UR As Long
    Dim nvacio As Long
    UR = Worksheets("REGISTRO").[A1048576].End(xlUp).Row
    nvacio = WorksheetFunction.CountBlank(Worksheets("REGISTRO").Range(Worksheets("REGISTRO").Cells(2, 1), Worksheets("REGISTRO").Cells(UR, 1)))
    If nvacio >= 1 Then
        MsgBox ("No deben existir filas en blanco en los registros")
    End If
End Sub

Para evitar poner Worksheets("REGISTRO"), en todas las referencias puedes hacerlo de la siguiente forma:

Sub macro()
    Dim UR As Long
    Dim nvacio As Long
    With Worksheets("REGISTRO")
        UR = .[A1048576].End(xlUp).Row
        nvacio = WorksheetFunction.CountBlank(.Range(.Cells(2, 1), .Cells(UR, 1)))
        If nvacio >= 1 Then
            MsgBox ("No deben existir filas en blanco en los registros")
        End If
    End With
End Sub

O también puedes establecer la hoja como objeto:

Sub macro()
    Dim UR As Long
    Dim nvacio As Long
    Set h = Worksheets("REGISTRO")
    UR = h.[A1048576].End(xlUp).Row
    nvacio = WorksheetFunction.CountBlank(h.Range(h.Cells(2, 1), h.Cells(UR, 1)))
    If nvacio >= 1 Then
        MsgBox ("No deben existir filas en blanco en los registros")
    End If
End Sub

Lo importante es que en la sentencia Range, ambos rangos (cells(), cells()) , tienes que poner la referencia de la hoja:

Worksheets("REGISTRO"). Range(Worksheets("REGISTRO"). Cells(2, 1), Worksheets("REGISTRO").Cells(UR, 1))
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Muchas muchas Gracias!

Utilicé esta línea y me sirvió.

nvacio = WorksheetFunction.CountBlank(Worksheets("REGISTRO").Range(Worksheets("REGISTRO").Cells(2, 1), Worksheets("REGISTRO").Cells(UR, 1)))

=D 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas