Caso de uso de UsedRange Excel vba

Para Dante

Buenas tardes Dante, no lo tengo muy claro sobre uso de UsedRange, en teoría sé que selecciona todo el espacio utilizado en la hoja. Pero no sé como manipular los datos de ya

1 Respuesta

Respuesta
1

UsedRange se refiere a todo el rango de la hoja que ha sido utilizado, pero hay que tener cuidado, si haz utilizado, por ejemplo solamente la celda B2 y la celda D15, el UsedRange va desde la B2 hasta la D15

Entonces en una hoja nueva, escribe "algo" en la celda B2, escribe "fin" en la celda D15, ejecuta la siguiente macro, observarás que se selecciona solamente el rango de B2 a D15

Sub Uso_UsedRange()
    ActiveSheet.UsedRange.Select
End Sub

La primer celda es B2, la fila inicial es 2, la columna inicial es 2, la fila final es 15, la columna final es 4, el número de filas es 14, el número de columnas es 3.

Sal u dos

Gracias Dante por la respuesta a mi inquietud

según esta respuesta 

Sub ocultarfilas()
'Act.Por.Dante Amor
    'Macro para ocultar filas que no tengan matriz
    Application.ScreenUpdating = False
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Rows("13:" & u).Hidden = False
    For i = u To 13 Step -1
        If Cells(i, "D").Value <= 0 Then
            Rows(i).Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "fin"
End Sub

usas esto, al parecer ubica la ultima fila  

    'u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

probé con esto y funciona 

 u = Range("D" & Rows.Count).End(xlUp).Row

necesito entender la diferencia  gracias una vez mas 

Usedrange

u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

es para encontrar la última línea con datos que haya sido utilizada, si han ocupado hasta la celda D10, entonces te regresa 10


Range

 u = Range("D" & Rows.Count).End(xlUp).Row

esta línea, te regresa la última fila con datos de la columna "D", si hay datos en la celda D10, por eso te regresa 10, igual que usedrange


Otro ejemplo, si en la columna D tienes datos hasta la D10 y en la columna E tienes datos hasta la E80, entonces

u = Range("D" & Rows.Count).End(xlUp).Row

te regresa 10

u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

te regresa 80


Para aprender y entender el código tienes que practicar y aplicarlo en algún caso

Solamente te estoy dando la teoría, pero practica en la hoja para que veas como se comporta cada sentencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas