0% encontró este documento útil (0 votos)
32 vistas7 páginas

Uso del Objeto Range en VBA

El documento explica el objeto Range en VBA, el cual permite seleccionar celdas, filas, columnas u otros rangos en Excel. Describe diversas sintaxis para seleccionar rangos individuales, múltiples celdas contiguas, celdas no contiguas, filas, columnas, rangos con nombre y más. Además, explica cómo usar Range junto con propiedades como Offset y Cells para manipular y acceder a rangos de celdas.

Cargado por

mikhail
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas7 páginas

Uso del Objeto Range en VBA

El documento explica el objeto Range en VBA, el cual permite seleccionar celdas, filas, columnas u otros rangos en Excel. Describe diversas sintaxis para seleccionar rangos individuales, múltiples celdas contiguas, celdas no contiguas, filas, columnas, rangos con nombre y más. Además, explica cómo usar Range junto con propiedades como Offset y Cells para manipular y acceder a rangos de celdas.

Cargado por

mikhail
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Range

Para entender mejor el desarrollo de esta pregunta es importante recordar algunos


conceptos:
 Objeto (Object): Todo aquello que puede contener a más objetos.
Basándonos en este simple concepto se puede entender al objeto Range (“Range
Object”) como un contenedor (rango) de celdas que pueden ser: celdas
independientes, una o más filas, una o más columnas o rango de
celdas/columnas/filas discontinuas.
Para usar range en la programación de VBA existen diversas formas, o mejor dicho
diversas sintaxis, que se emplearán dependiendo de la tarea u objetivo que se tengan;
a continuación se explica cómo usar range de acuerdo a cada escenario:
 Selección simple de una celda.- En este caso se busca seleccionar, dar formato,
agregar un dato, etc., únicamente una celda determinada, para lo cual se empleará la
siguiente sintaxis: Range (“A1”).
 Selección de una fila.- En este caso se busca seleccionar todas las celdas que
se encuentran contenidas en una determinada fila, para esto se empleará la siguiente
sintaxis: Range (“3:3”), lo cual indica que se seleccionará (y en algún caso agregará
valores o se dará formato) a todas las celdas de la tercera fila.
 Selección de una columna.- Al igual que en el punto anterior el “range Object”
nos permite también seleccionar y trabajar sobre todas las celdas de una columna en
específico; por ejemplo para trabajar sobre las celdas de la columna C se empleará la
siguiente sintaxis: Range (“C:C”).
 Selección de un rango con nombre.- Para llevar a cabo este punto es importante
que antes de realizar la macro se seleccione un grupo de celdas y se le asigne un
nombre (por ejemplo: “Muestra”), luego se empleará la siguiente sintaxis para
seleccionar, dar valores o trabajar las celdas que lo contienen: Range (“Muestra”).
 Selección de rango por celdas.- En este caso se usará range para un conjunto de
celdas, que a diferencia del punto anterior no posee un nombre. Es muy importante
tener cuidado con la sintaxis debido a que un error hará que se trabaje como celdas
discontinuas (como se verá en el siguiente punto); la sintaxis adecuada en este caso
es la siguiente: Range (“B4”, “J15”) o Range (“B4:J15”).
 Selecciones discontinuas: Existe la posibilidad de llevar a cabo selecciones
discontinuas tanto para celdas independientes, así como para filas y columnas
diversas o grupos de celdas en específico; para estos casos se empleará la sintaxis
siguiente:
 
 Filas discontinuas: Range (“2:5, 10:15”), en este caso se seleccionará las filas
desde la 2 hasta la 5 y otro grupo desde la fila 10 a la 15.
 Columnas discontinuas: Range (“A:C, F:G”), con esto se seleccionarán las
columnas desde la A hasta la C y también desde la F a la G con las cuales ya se
podrá aplicar cualquier programación adicional.
 Celdas discontinuas: Range (“A2, F4, J8, M3”), de esta forma se seleccionarán
únicamente las celdas que se especifican.
 
 Selección range con intersección.- Existe una sintaxis con la cual se buscará
trabajar una determinada o determinadas celdas que representen la intersección entre
dos rangos seleccionados: Range (“J1:K10” “H3:L3”), esta sintaxis es particular pues
el espacio entre cada rango es lo que le indica al VBA que se trata de una
intersección.
 Uso de objeto range para un propiedad range.- Para el presente caso se usa la
sintaxis de range como base para el empleo de una propiedad también en condición
range, a continuación la sintaxis: Range(“H3”).Range(“B3:D3”) = “Ejemplo”;
analizando la sintaxis esta quiere decir que la celda H3 será considerada como la
celda de partida para que se corra la macro respectiva, esto quiere decir que al correr
la macro se escribirá en las celdas J3, K3 y L3 la palabra “Ejemplo”.
Importante:
 Para llevar a cabo las redacciones de la sintaxis empleando Range es vital
siempre revisar que se empleen las comillas “”, de lo contrario el VBA nos indicará
error.
 Existe, además del concepto Range, el concepto Cells; este concepto permite
trabajar todas las situaciones anteriormente mencionadas solo se debe tener cuidado
al momento de redactar la sintaxis debido a que se da de la siguiente forma: Cells
(fila, columna). Cabe resaltar que el concepto de Cells será muy beneficioso cuando
se trabajen bucles, iteraciones y otros, debido a que se empleará coordenadas “i” y “j”.
Descargar: Ejercicios de ejemplo
Por: Jorge Anibal León
Fuente:

[Link]

El objeto Range
5 SEPTIEMBRE, 2011

Dentro de la coleción de objetos de Excel y tal como había expuesto anteriormente Range es casi la unidad
básica con la que podemos trabajar. Y digo casi porque dentro de Range podemos encontrar un objeto como
es Cells (celdas). A qué nos referimos cuando hablamos de Range:
 A un conjunto de celdas.
 A una celda en concreto.
 A toda una fila / columna.
 A celdas de otras hojas.
Como propiedades el objeto Range tiene las siguientes:
 ActiveCell->representa la primera celda activa de la ventana activa (windowactive) o especificada.
 Areas->todos los rangos de una seleción múltiple.
 Cells->representa a una celda o clección de ellas.
 Columns->representa las columnas de la hoja activa,o especificada, o del rango especificado.
 Entire column/row->la columna/fila  entera dentro del rango.
 End->la celda situada al final del rango especificado.
 Offset->la celda desplazada según un nº específico de fila/columna.
Formas de seleccionar celdas con Range:
Una celda sólo:
Range(“A1”).Select
Un conjunto de celdas contiguas dentro de la misma hoja:
Range(“A1:G5”).Select
Para seleccionar celdas no contiguas:
Range(“A1,A5,B4”).Select
Para seleccionar celdas no contiguas mas un conjunto contiguo:
Range(“A1,A5,B4:B8”).Select
Otro ejemplo:
La siguiente tabla muestra algunas referencias de estilo A1 utilizando el método Range.
Referencia Significado
Range(“A1”) Celda A1
Range(“A1:B5”) Celdas de la A1 a la B5
Range(“C5:D9,G9:H16”) Selección de varias áreas
Range(“A:A”) Columna A
Range(“1:1”) Fila uno
Range(“A:C”) Columnas de la A a la C
Range(“1:5”) Filas de la uno a la cinco
Range(“1:1,3:3,8:8”) Filas uno, tres y ocho
Range(“A:A,C:C,F:F”) Columnas A, C y F
De todas las propiedades descritas tal vez una de las más usadas sea Offset, que nos permite seleccionar
celdas contiguas a la celda activa según una determinada posición de filas y clumnas:
expresió[Link](RowOffset, RowOffset)
RowOffset      Variant opcional. El número de filas (positivo, negativo o cero) que indica el desplazamiento
del rango. Los valores positivos desplazan hacia abajo y los negativos, hacia arriba. El valor predeterminado
es 0.
ColumnOffset      Variant opcional. El número de columnas (positivo, negativo o cero) que indica el
desplazamiento del rango. Los valores positivos desplazan a la derecha y los negativos, hacia la izquierda. El
valor predeterminado es 0.
[Link](0,0)->nos determina la posición actual

Ejemplo:
Sub ejemplo()
‘ejemplos del empleo de range y cells
‘escribo Hola en varias celdas de la hoja 2
Worksheets(“Hoja2”).Range(“A1:B5”) = “Hola”
‘lo mismo pero en celdas discontinuas
Worksheets(1).Range(“F1”, “G5”) = “Hi”
‘ahora en la hoja 2
Worksheets(“Hoja2”).Range(“J1, K3, H5”) = “AAA”
[Link](2, 2) = “Me desplazo”
End Sub
Si establece una variable de objeto para un objeto Range, puede manipular fácilmente el rango
utilizando el nombre de la variable.
El siguiente procedimiento crea la variable de objeto miRango y, a continuación, asigna la variable al rango
A1:D5 de la Hoja1 del libro activo. Las instrucciones posteriores modifican las propiedades del rango,
sustituyendo el nombre de la variable por el objeto del rango.
Sub Aleatorio()  
Dim miRango As Range
Set miRango = Worksheets(“Hoja1”).Range(“A1:D5”)
[Link] = “=ALEATORIO()”
[Link] = True
End Sub
Utilice la función Array para identificar un grupo de hojas. El siguiente ejemplo selecciona tres hojas del libro
activo.
Sub Varias()  
Worksheets(Array(“Hoja1”, “Hoja2”, “Hoja4”)).Select
End Sub
Utilice la propiedad Rows o Columns para trabajar con filas o columnas enteras. Estas propiedades devuelven
un objeto Range que representa un rango de celdas. En el siguiente ejemplo, Rows(1) devuelve la fila uno de
la Hoja1. A continuación, la propiedad Bold del objeto Font del rango se establece en True.
Sub FilaNegrita()
Worksheets(“Hoja1”).Rows(1).[Link] = True
End Sub
La siguiente tabla muestra algunas referencias de fila y columna, utilizando las propiedades Rows y Columns.
Referencia Significado
Rows(1) Fila uno
Rows Todas las filas de la hoja de cálculo
Columns(1) Columna uno
Columns(“A”) Columna uno
Columns Todas las columnas de la hoja de cálculo
Para trabajar con varias filas o columnas al mismo tiempo, cree una variable de objeto y utilice el método
Union, combinando varias llamadas a la propiedad Rows o Columns. El siguiente ejemplo cambia a negrita el
formato de las filas uno, tres y cinco de la hoja de cálculo uno del libro activo.
Sub VariasFilas()
Worksheets(“Hoja1”).Activate
Dim miUnión As Range
Set miUnión = Union(Rows(1), Rows(3), Rows(5))
miUnió[Link] = True
End Sub
Método abreviado para hacer referencia a rangos

Podemos utilizar también corchetes cuando hacemos referencias a rangos. Utilizando corchetes, así:
 
En vez de Range(“D5”) podemos utilizar [D5]
En vez de Range(“A1:D5”) podemos utilizar [A1:D5]
Range(“A1:D5″,”G6:I17”)   —>[A1:D5,G6:I17]

Fuente:

[Link]

Referenciar rangos en VBA


por Quique Arranz

Una de las cosas que más útil resulta pero de la que he encontrado muy
poca información es de cómo hacer referencias a celdas o rangos en VBA.
Hay muchísimas maneras y cada una tiene su utilidad.
Este post puede servirte para cuando grabes una macro poder modificarla a
tu antojo con muy pocos cambios.

BREVE EXPLICACIÓN PARA HACER


REFERENCIA A RANGOS EN VBA
La sintaxis para hacer referencia a rangos en VBA puede ser un poco
compleja puesto que al grabar una macro siempre aparecerá de la misma
manera, pero hay otras muchas muy interesantes.
Lo normal es usar el objeto Range o el objeto Cells. Estos objetos, como ya
hemos visto en la jerarquía de VBA son un conjunto de celdas o una única
celda que pertenecen a una hoja que a su vez pertenecen a un libro de
Excel.

EJEMPLOS DE REFERENCIAS A RANGOS


EN VBA
1. La forma más sencilla y básica
Range("B7")

2. Una forma más elaborada


Cells(7 , 2)

Donde el primer argumento se refiere a la fila y el segundo argumento a la


columna
3. Usando una variable para la columna. Hay varias maneras. Supongamos
que la variable es «iFila«.
Range ("B" & iFila)

Otra manera sería:


Cells(iFila , 2)

4. Usando variables tanto para fila como para columna. Ahora la variable
columna será «iColumna«.
Cells(iFila ,iColumna)

Si queremos referenciar un rango compuesto de más de una celda las


combinaciones de las anteriores serán las que nos permitan hacer nuestra
referencia en función de lo que necesitemos (ejemplo para rango de B7 a
C9).
5. Típica forma sencilla
Range("B7:C9")

6. Usando la variante Cells


Range(Cells(7 ,2),Cells(9,3))
7. Usando la variable iRow para la última fila del rango (en ocasiones no la
conoceremos o será dinámica). Hay dos posibles maneras:
Range ("B7:C"&iFila)

Range(Cells(7 ,2),Cells(iFila, 3))

8. Hay más maneras de referenciar rangos pero no tiene una gran utilidad.
Ésos ejemplos se basan en los conceptos que se han explicado unas líneas
atrás. Quizás, algún lector eche en falta alguna forma de referenciar celdas,
si es así, que lo haga saber y sin problemas será añadido. Si quieres saber
más haz click en el siguiente enlace:
Referenciar rangos parte II

BONUS TRACK: EJERCICIO PARA HACER


REFERENCIAS A RANGOS EN VBA
Ejercicio 1:  asignar a la celda que está en la columna 3 y la fila 2 el valor
de «5».
Cells(2,3)=5

Ejercicio 2: la variable fil=10 y la variable col=5. Dimensionar las variables y


usarlas como fila y columna respectivamente para seleccionar la celda a la
que apunten.
Dim fil, col as Integer

Cells(fil, col).Select

[Link]

Crear un rango
por Quique Arranz

Un rango, en Excel, puede ser una celda, o un conjunto de celdas.


Puede que nos interese crear un rango por muchos motivos, uno de los
cuales será recorrer ciertas celdas en una variable.
Para crear un rango en VBA primero tendremos que declararlo y luego
añadirle las propiedades.
Muy sencillo, declarar un rango se declara como:
 Dim MiRango as Range
 Lo siguiente que tienes que hacer es decir de donde a donde va el rango,
es decir, las celdas que abarca. Para ello habrá que declarar la celda de la
esquina superior izquierda y la celda de la esquina inferior derecha.

EJEMPLO PARA CREAR UN RANGO EN


VBA
En el siguiente ejemplo hemos creado un rango que va desde la primera
fila y columna, es decir, la celda A1, hasta una fila y una columna que
conocemos mediante variables.

[Link]

También podría gustarte