Validar si los registros de una columna esta vacía en Macros Excel

Hola quiero validar que si una de mis columnas esta vacía me aparezca un msjbox.

Yo intento if IsEmpty(range("a2:a" , & uf)) then

msgbox "Verifique la columna X"

Gracias de antemano

1 respuesta

Respuesta
1

Te anexo la macro para revisar varias columnas, la macro revisa desde la columna A, hasta la última columna que tenga datos.

Supongo que los datos tienen encabezados, tal y como se muestra en la imagen.

En este caso, lo que hace la macro es revisar desde la columna A hasta la columna D, y te enviará 2 mensajes uno por la columna A y el otro por la columna C


Sub RevisarColumnas()
'Por.Dante Amor
    For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
        u = Cells(Rows.Count, i).End(xlUp).Row
        If u = 1 Then u = 2
        If Application.CountA(Range(Cells(2, i), Cells(u, i))) = 0 Then
            MsgBox "Verifique la columna: " & i
        End If
    Next
End Sub

Ok esta bien tu macro pero yo solo quiero evaluar ciertas columnas y no todas.

Hago esto porque yo estoy copiando algunos campos de un libro1 a otro libro2 y lo estoy haciendo comparando los nombres de los campos. Ahora, puede ser que los nombres de los campos cambien quiero decir si es que no se encuentra  el valor buscado que te muestre en un msgbox con el nombre de la cabecera que no ha encontrado antes de proceder a copiar.

Dim Filter As String
Dim Title As String
Dim FilterIndex As Integer
Dim LIBRO1 As String
Dim BuscarArchivo As Variant
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Variables de Selección
Dim uf As Long
Dim celdahoja1 As String
Dim celdahoja2 As String
If Hoja0.cmbMes.ListIndex = 0 Then Exit Function
'Ventana Emergente
Filter = ("Archivos Excel 2010(*.xlsx), *.xlsx, Archivos Excel 2003 (*.xls), *.xls")
FilterIndex = 1
Title = "Seleccione el Archivo a Procesar"
ChDrive ("c")
ChDir ("C:\Users\Juan Carlos\Desktop\INSATISFECHOS\BASE BRUTA")
Dim varName As Variant
varName = Application.GetOpenFilename(Filter, FilterIndex, Title)
If varName = False Then Exit Function
Workbooks.Open FileName:=varName
LIBRO1 = varName
BuscarArchivo = Mid$(LIBRO1, InStrRev(LIBRO1 , "\") + 1) ' Archivo elegido
Hoja0.txtIndividuos = BuscarArchivo
LIBRO1 = ActiveWorkbook.Name
Sheets("DATA").Select
uf = Range("A1048576").End(xlUp).Row
uc_h1 = Range("A1").End(xlToRight).Column
'libro2
ThisWorkbook.Activate
Sheets("SINDATA").Select
uc_h2 = Range("A1").End(xlToRight).Column
For i = 1 To uc_h2
    ThisWorkbook.Activate
    Sheets("SINDATA").Select
    celdahoja2 = Cells(1, i).Value
    For j = 1 To uc_h1
        Windows(LIBRO1).Activate
        Sheets("DATA").Select
        celdahoja1 = Cells(1, j).Value
        If celdahoja1 = celdahoja2 Then
            Sheets("DATA").Select
            Range(Cells(2, j).Address & ":" & Cells(uf, j).Address).Select
            Selection.Copy
            ThisWorkbook.Activate
            Sheets("SINDATA").Select
            Cells(2, i).Select
            ActiveSheet.Paste
        End If
    Next
Next

Te adjunto mi código. Saludos.

Vamos por pasos, vas a copiar datos de un libro2 a un libro1. ¿Correcto?.

En qué fila están los campos, están en la fila 1 en ambos libros, ¿correcto?

Entonces si lo encuentra que copie, ¿correcto?.

Si no lo encuentra que te envié un mensaje, ¿correcto?

Sólo me queda una duda, si no lo encuentra y te envío un msgbox a la pantalla el proceso se va a detener varas veces. Mejor te pongo al final un solo msgbox con todos los campos que no se encontraron. ¿Te parece?

Si eso esta mucho mejor. Tienes razón, la función se va a detener varias veces y te va a lanzar varios msgbox.

Gracias por tu apoyo

Te regreso la macro con los campos

Sub CopiarColumnas()
'Por.Dante Amor
    '
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("SINDATA")
    '
    If Hoja0.cmbMes.ListIndex = 0 Then Exit Function
    'Ventana Emergente
    ChDrive ("c")
    ChDir ("C:\Users\Juan Carlos\Desktop\INSATISFECHOS\BASE BRUTA")
    filtro = "Archivos Excel 2010(*.xlsx), *.xlsx, Archivos Excel 2003 (*.xls), *.xls"
    vName = Application.GetOpenFilename(filtro, 1, "Seleccione el Archivo a Procesar")
    If vName = False Then Exit Function
    '
    Set l2 = Workbooks.Open(vName)
    Set h2 = l2.Sheets("DATA")
    For i = 1 To h2.Range("A1").End(xlToRight).Column
        Set b = h1.Rows(1).Find(h2.Cells(1, i))
        If Not b Is Nothing Then
            u = h2.Cells(Rows.Count, i).End(xlUp).Row
            h2.Range(h2.Cells(2, i), h2.Cells(u, i)).Copy h1.Cells(2, b.Column)
        Else
            cad = cad & h2.Cells(1, i) & ", "
        End If
    Next
    l2.Close
    Application.ScreenUpdating = True
    If cad <> "" Then
        MsgBox "Campos no encontrados: " & Left(cad, Len(cad) - 2)
    Else
        MsgBox "Se copiaron todos los campos"
    End If
End Sub

Ok lo voy a probar y te aviso. Gracias. Mas bien, por favor dame una mano para encontrar las frases en una fila. No se si me puedes dar una idea

La pregunta original era verificar si la columna estaba vacía:

"Quiero validar que si una de mis columnas esta vacía me aparezca un msjbox"

Después me lo cambiaste a esto:

"Puede ser que los nombres de los campos cambien quiero decir si es que no se encuentra el valor buscado que te muestre en un msgbox con el nombre de la cabecera que no ha encontrado antes de proceder a copiar"

Valora esta respuesta por las 2 macros que ya te entregué y crea un nueva pregunta con lo nuevo que requieres, en la nueva pregunta me explicas con ejemplos de cómo tienes la información y cuál es el resultado que esperas.

Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas