Macro Seleccionar todo un rango de datos

17/09/2004 - 19:59 por Marvin | Informe spam
Alguien sabe de que manera puedo yo seleccionar por medio
de una macro una matriz de datos, el tamaño de esta matriz
siempre es variable, como puedo seleecionar solo la matriz
de datos, no especificando de que celda a que celda, si no
por medio de celdas con valor, ahora, si utilizo filtros
quiero seleccionar del filtro por ejemplo 30 registros
encontrados y copiarlos en otro libro. si alguien me puede
ayudar. Gracias.
 

Leer las respuestas

#1 Héctor Miguel
18/09/2004 - 00:46 | Informe spam
hola, Marvin !

... macro ... matriz de datos ... variable ... seleccionar solo la matriz ... no especificando de que celda a que celda
... si utilizo filtros ... seleccionar ... por ejemplo 30 registros encontrados y copiarlos en otro libro [...]



-> para 'conocer' el rango de una matriz 'variable' puedes usar la propiedad 'CurrentRegion'
-> 'apuntando' a una celda que se encuentre 'dentro' de la matriz de datos o tabla.
-> si utilizas filtros [activos] puedes modificar las dimensiones de dicho rango [misma 'currentregion']
-> 'eliminando' [de la referencia] la primer fila [se supone que son los titulos/encabezados] y...
-> haciendo una referencia a 'solo las celdas visibles'

el ejemplo que te expongo al final son los 'pasos basicos' para que 'desarrolles' algo mas 'apropiado' [p.e.]
- puedes hacer referencia a una hoja 'distinta'
- podrias aplicar metodos y/o propiedades 'directamente' al rango 'resultante' [como .Copy / .Borders / etc.]
=>EXCEPTO 'acciones de seleccion de rangos' cuando la hoja de referencia NO ES la hoja 'activa'<= OJO

si cualquier duda o informacion adicional... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub SeleccionarArea()
Dim Completo As String, SinTitulos As String, Filtrados As String
With Worksheets("Hoja1")
With .Range("b5").CurrentRegion
Completo = .Address
SinTitulos = .Offset(1).Resize(.Rows.Count - 1).Address
Filtrados = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address
End With
MsgBox "El rango completo es: " & Completo & vbCr & _
"Sin encabezados es: " & SinTitulos & vbCr & _
"El rango 'filtrado' es: " & Filtrados
.Range(Filtrados).Select
End With
End Sub

Preguntas similares