Validación de Datos

Buen día, espero que me puedas ayudar en este tema, he grabado una macro para crear una lista en la celda A1, la cual captura los datos desde el rango (L2:L151), hasta el momento me ha funcionado bien, el problema es que cuando el rango (L2:L151) no esta completamente lleno, es decir por Ej: tiene información hasta la fila 100, me muestra los espacios en blnaco, lo que deseo es que cada vez que se ejecute esta macro, no me muestre los vacíos, no puedo cambiar el rango, puesto que a veces requiere todo el rango, el código que he usado es el siguiente:
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$L$2:$L$151"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
1

1 Respuesta

4.325 pts. Ingeniero en Adm
Tienes razón en cuanto a que aparecen los espacios en blancos en la lista. Una solución que se me ocurre es usar un rango variable ocupando la función contará dentro de la macro que cuenta cuantos datos hay en la lista. El resultadp queda en una variable auxiliar llamada "final" que la agrego al rango de validación.
Ten en cuenta que sólo sirve para valores continuos. Saludos.
Sub validacionsinblancos()
Range("K1").Select
ActiveCell.FormulaR1C1 = "=COUNTA(RC[1]:R[120]C[1])"
Final = Cells(1, 11)
Selection.ClearContents
Range("B1").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$L$1:$L" & Final
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Excelente me ha funcionado a la perfeccion , solamente le he hecho un pequeño cambio, he reemplazado el ActiveCell.FormulaR1C1 = "=COUNTA(RC[1]:R[120]C[1])"
Final = Cells(1, 11), .por Final = Range("K1") Y EN K1 he puesto la formula de contar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas