Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 Formas de Seleccionar Vba
5 Formas de Seleccionar Vba
Inicio
macros
Hola y bienvenidos a una entrada más, hoy vamos a darle una checada a 5
formas en las que podrás crear tus rangos dinámicos en vba excel
Imagínate que no sabes mucho de VBA, usas la grabadora para copiar un rango
de celdas y hacer alguna acción con el (copiar, poner un filtro, crear una tabla
dinámica, convertir el rango en tabla).
Todo salió de maravilla y cuando quieres volverla a usar con un rango más
grande te das cuenta de que no funciona del todo bien. ¿La razón? El rango
que seleccionaste con la grabadora queda como un rango fijo, por lo que ahora
es necesario crear un rango que se ajuste a tus necesidades.
Aquí abajo te dejo algunos ejemplos que como hacerlo sin romperte mucho la
cabeza.
Forma 1. UsedRange
Sub PruebaRangos()
End Sub
Sub PruebaRangos()
Dim sht As Worksheet
Dim LRow, LCol As Long
Dim StartCell As Range
End Sub
Pros: Menor margen de error que el método UsedRange ya que permite definir
a partir de donde tomar los valores
Contras: Debemos conocer la posición inicial del rango, además de que, si la
primera celda de ultima fila o de la ultima columna esta en blanco, el código no
leerá el rango apropiadamente.
Forma 3. xlTypeLastCell
Sub PruebaRangos()
Dim sht As Worksheet
Dim LRow, LCol As Long
Dim StartCell As Range
' Establece primero la hoja a usar y la celda de inicio
Set sht = Sheets(1)
sht.Select
Set StartCell = Range("A1")
End Sub
Pros: Nos dirige automáticamente a la ultima celda que este activa y toma su
fila – columna de forma más rápida. Ideal si los usuarios no pueden depositar
datos de forma manual en la hoja a usar.
Contras: Es el método mas lento de los aquí descritos, además de que
conlleva que una celda mas abajo o mas a la derecha no haya sido activada, lo
que puede ocasionar algunos detalles.
Forma 4. CurrentRegion.
Sub PruebaRangos()
Dim sht As Worksheet
Dim StartCell As Range
End Sub
Pros: Funciona desde cualquier parte del rango relacionado, evitando tener
que saber en que parte se inicia el rango.
Contras: Si buscas colocar filtros o tienes filas – columnas en blanco el método
fallara inevitablemente.
Sub PruebaRangos()
Dim sht As Worksheet
Dim rng, rng2 As Long
Dim StartCell As Range
'Metodo 5
' Efectivo para copiar y pegar en ciertos rangos que pueden
variar y mantener guardado el largo y ancho
rng =
Application.WorksheetFunction.CountA(Range("A1:A1000000")) -
1
rng2 = Application.WorksheetFunction.CountA(Range("1:1"))
- 1
Range(StartCell, StartCell.Offset(rng, rng2)).Select
End Sub
EL MEJOR DE ELLOS…
El ultimo, ¡Obvio!