Rangos en Excel VBA: Cómo Usar los Rangos en VBA

Todo usuario de Excel está familiarizado con la selección de un rango de celdas – al pulsar SHIFT + Click, CTRL + Click, o arrastrando el ratón sobre un conjunto de celdas.

¿Pero cómo selecciona uno un rango en VBA? En este artículo, le guiaré sobre cómo seleccionar un rango de celdas y activar una celda en particular de ese rango. También le mostraré ejemplos prácticos sobre cómo hacer esto en sus libros de Excel. Si hace tiempo que no utiliza Excel y quiere dar un repaso a los conceptos básicos el siguiente curso Excel para Principiantes le será de ayuda.

¿Qué es un Rango?

Un rango, como ya habrá adivinado, se refiere a una celda o conjunto de celdas. Un rango puede ser de tres tipos distintos:

  • Una celda (incluso la selección de una única celda se considera un rango)

  • Múltiples celdas

  • Múltiples celdas no contiguas – lo mismo que seleccionar celdas con CTRL + click

Cada celda seleccionada del rango debe estar dentro de la misma hoja de cálculo. A partir de ahora, Excel no soporta rangos multidimensionales (p.e. rangos distribuidos en varias hojas de cálculo).

Usará mucho la function Range en su programación VBA ya que permite seleccionar una celda o rango de celdas fácilmente y sin esfuerzo.

Sintaxis

La sintaxis básica del comando de VBA range es la siguiente:

Range(Cell 1. Cell 2)

Donde

Cell1 (obligatorio): es la celda/rango actual sobre la que actúa. Debe ser un nombre de celda específico (“A1”) o un rango de celdas (“A1:A10”).

Cell2 (opcional): la esquina superior izquierda o inferior derecha de la celda del rango a seleccionar.

Range también puede aceptar cadenas, no sólo celdas y rangos:

Range(“SalesVolume”)

Esto selecionará celdas que tienen el valor de “SalesVolume”.

Incluso puede anidar un rango dentro de otro y seleccionar cadenas específicas:

Range(“A1:A20”, Range(“SalesVolume”))

Esto se referirá a todas las celdas en el rango A1:A20 que tengan el valor “SalesVolume”

Para ver cómo funciona, echemos un vistazo a algunos ejemplos:

Ejemplo 1: Insertar un Valor en un Rango Seleccionado

Digamos que queremos rellenar las primeras diez filas en la columna A con el valor “Hello”. Para hacer esto, añadiremos el siguiente código a nuestra macro VBA:

Worksheets(“Sheet1”).Range(“A1:A10”).Value = “Hello”

example1

Donde,

Worksheets(“Sheet1”) = Nombre de la hoja activa

.Range(“A1:A10”) = Rango de celdas a seleccionar

.Value = “Hello” = Valor a ser insertado en las celdas.

El resultado:

example1result

Podemos conseguir el mismo resultado escribiendo lo siguiente:

Worksheets(“Sheet1”).Range(“A1”,”A10”).Value = “Hello”

Nota: La parte ‘Worksheet(“Sheet1”)’ no es realmente obligatoria si está trabajando con una única hoja, pero es necesaria en un libro con varias hojas.

¿Confundido? Consulte este completo curso sobre Programación en Excel con Macros para aclarar sus dudas.

Ejemplo 2: Insertar una Fórmula en un Rango de Celdas

Supongamos que tiene un rango de valores en una hoja de cálculo como esta:

example2

(Realmente hemos rellenado esta hoja usando el método .Range como se muestra arriba).

Podemos usar la siguiente fórmula para calcular la suma de todos estos valores:

Range(“C1”).Formula = “=sum(A1:B10)”
example2range

Dése cuenta cómo usamos .Formula en lugar de .Value.

El resultado:

example2result

Ejemplo 3: Cambiar el Formato en un Rango de Celdas

La función Range no sólo es útil para añadir fórmulas e insertar valores. Puede también ser una herramienta útil para cambiar los valores de celdas específicas.

Aquí cambiaremos el formato de un rango de celdas a Negrita. Esta es la hoja original:

 example3

La fórmula que usaremos:

Range(Cells(3,3), Cells(5,3)).Font.Bold = True

Y aquí está el resultado:

example3result

Lo importante a destacar aquí es cómo hemos usado los dos rangos de celdas para seleccionar solo las celdas C3:C5. El primer rango de celdas (Cells(3,3)) especifica que solo las celdas de la tercera columna se seleccionarán. Si quisiéramos seleccionar la primera columna escribiríamos Cells(1,1).

El segundo rango especifica las filas. Va desde el mayor número de celda al más pequeño ((5,3) no (3,5)).

¿Utiliza Excel pero no a un nivel avanzado? Con este curso aprenderás a sacarle todo el partido a Excel.

Ejemplo 4: Usando el Método Offset

Otra forma de seleccionar un rango es usar el método Offset. La sintaxis básica es de esta forma:

Range(“A1”).Offset(2,3).Value = 4

Esto cambiará el valor de las dos celdas de arriba, y tres celdas a la derecha de A1 a 4.

Usemoslo en una hoja de cálculo y veamos cuál es el resultado:

Range(“B1”).Offset(2,3).Value = 4

Esto hace que la celda E3 (dos celdas abajo, tres a la derecha – offset(2,3)) = 4

 example4

El método Offset es particularmente útil con variables.

Creemos un pequeño programa que rellene un rango de filas y columnas con todos los números impares del 1 al 50 .

Sub macro_1()
Num = 1
   For Row = 0 To 4
       For Col = 0 To 4
            Range(“A1”).Offset(Row, Col).Value = Num
            Num = Num + 2
       Next Col
    Next Row
End Sub

Aquí, empezamos desde el número 1 y nos referiremos a las primeras 5 filas y columnas (recuerde que Excel cuenta a partir de 0). En lugar de especificar una fila o columna en concreto hemos usado dos variables con Offset. También hemos incrementado el número en 2 con un bucle para crear una progresión.

El resultado tiene este aspecto:

 example4result

Hemos puesto este ejemplo para mostrarle lo útil que el comando Range puede ser.

Además de todas estas características, puede también usar Range para seleccionar una celda determinada:

Range(“A1”).Select

O para activar una un rango específico:

Range(“A1:A20”).Activate

Recurrirá a estas funciones regularmente en su programación VBA. Si utiliza Excel 2010 quizás le interese este curso que trata todos los niveles, básico, intermedio y avanzado.

¿Nos daría algún consejo o truco para usar Range? ¡Compártalo con nosotros en los comentarios!