Consulta sobre Range

Hola Fernando !
Tengo el siguiente problema, cómo sé que largo tiene un rango, ¿o mejor dicho cuantas filas tiene un rango y cuantas columnas?
Si
set rango=range("A1:c3")
filas = rango. ???
columnas=rango. ???
Esa es la primera pregunta.
La segunda, defino un rango dinámico con DESREF, el número de filas viene dado por CONTARA(" "), pero este resultado es cero.
Luego la instrucción Range("mirango") me arroja un error.
Solucioné el problema, en la definición del rango remplazando CONTARA("....")por si(CONTARA("...")=0;1;CONTARA("....")).
Existe otra forma algo así como
if Rango("mirango")=empty o Nothing o que ?????
Gracias.

1 respuesta

Respuesta
1
OK, vamos con la primera.
Lo que buscas es el método Count, que se usa:
Set rango = Range("A1:c3")
filas = rango.Rows.Count
columnas = rango.Columns.Count
que devolverá:
filas = 3
columnas = 3
Nota que si no tienes predefinido el rango puedes aprovechar el concepto de Región que es el rango comprendido entre celdas vacías. Si estuvieras en una celda vacía este comando te devolverá 1.
Su uso es:
filasX = ActiveCell.CurrentRegion.Rows.Count
----
Existe una función IsEmpty para evaluar el contenido de variables o de celdas (no rangos).
El siguiente procedimiento muestra cómo funciona.
Sub ttt()
Dim rango As Range
Set rango = Range("b231")
If IsEmpty(rango) Then MsgBox "sin datos"
End Sub
Si bien evalúa una celda por vez, podrías incorporar la función a una rutina cíclica para que evalúe celda por celda en un rango y así deteminar si está lleno o no.
De cualquier manera, tu solución me parece excelente. (Aunque considera que son ámbitos distintos: DESREF es una función de hoja mientras IsEmpty funciona en el entorno de Visual Basic)
Me parece que respondí tus dos consultas.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas