Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Acceder celdas con VBA

| Sin comentarios

Para poder acceder a las celdas con VBA se pueden usar Range, Cells y Offset, veamos como se utilizan estas instrucciones.

 

Recordemos que la mayor parte del trabajo que se realiza en Visual Basic Aplicaciones involucra a celdas y rangos de una hoja de cálculo. Además, un objeto Range está contenido en un objeto Worksheet y se compone de una sola celda o rango de celdas en una sola hoja de cálculo. 

 

Las instrucciones a emplear son:

 

Range: objeto de clase Worksheet o Range.

Cells: es un objeto Worksheet.

Offset: es un objeto Range.

 

¿Cómo usar Range? 

Asignar un valor usando Range

La instrucción que sigue simplemente introduce un valor en una celda especificada. 

En este caso, coloca un 1 en la celda A1 de la Hoja1 del libro de trabajo activo:

Worksheets("Hoja1").Range("A1").Value = 1

 

Asignar un valor usando Range, y nombre de celda

La propiedad Range también reconoce nombres definidos en los libros. Por consiguiente, si una celda tiene un nombre "MiCelda" se puede usar la siguiente instrucción para introducir un valor en dicha celda con nombre:

Worksheets("Hoja1").Range("MiCelda").Value = 1

 

Asignar un valor en varias celdas

El siguiente ejemplo se coloca el mismo valor en un rango de 20 celdas de la hoja activa:

ActiveSheet.Range("A1:B10").Value = 100

 

A continuación se presenta un ejemplo que produce exactamente el mismo resultado

que el ejemplo anterior.

Range("A1","B10") = 100

 

Con esta sintaxis, el primer argumento es la celda de la parte superior izquierda del rango y el

segundo es la celda de la parte inferior derecha del rango. 

 

Sin embargo, la referencia a la hoja se ha omitido, por lo que se asume que la hoja es

la activa. La propiedad de valor también se ha omitido, por lo que se asume como propiedad predeterminada "Value".

 

¿Cómo usar Range en una intersección? 

A continuación se muestra un ejemplo que usa el operador intersección de rango de

Excel (un espacio) para volver a la intersección de dos rangos. En este caso, la

intersección es una sola celda: C6. Por consiguiente, esta instrucción introduce el valor 100 en la

celda C6:

Range("C1:C10 A6:E6") =100

 

¿Cómo usar Range para varias celdas? 

Si, en el siguiente ejemplo introduce el valor 100 en cinco celdas, es decir, un

rango no contiguo. La coma sirve como operador de unión.

Range("A1,A3,A5,A7,A9") = 100

 

 

¿Cómo usar Cells en VBA?

Otro modo de referenciar un rango es usar Cells. Al igual que la propiedad Range se puede usar la propiedad Cells en objetos Worksheet y objetos Range.

 

La sintaxis es:

objecto.Cells(rowindex

Buy Cialis UK>

, columnlndex)

 

Para asignar un valor podemos usar

Worksheets("Hoja1").Cells(1,1) = 200

 

En este caso en la Celda A1 de la Hoja1 se está colocando el valor 200 

 

Para colocar un valor en la hoja activa se puede usar: 

ActiveSheet.Cells(3, 4) = 7

Cells(3, 4) = 7

 

 

¿Cómo usar Offset en VBA?

La propiedad Offset (igual que las propiedades Cells y Range) también devuelve un objeto Range. Pero al contrario de los otros dos métodos vistos anteriormente, la propiedad Offset sólo se aplica a un objeto Range y no a otra clase. Su sintaxis es la siguiente:

 

object.Offset (rowOffset, columnOffset)

 

La propiedad Offset toma dos argumentos que corresponden a la posición relativa de la celda superior izquierda de un objeto Range. Los argumentos pueden ser positivos (abajo o derecha), negativos (arriba o izquierda) o cero.

 

El ejemplo que sigue introduce un valor 300 en la celda inmediatamente inferior a la celda activa:

ActiveCell.Offset (1, 0).Value = 300

 

El siguiente ejemplo introduce el valor 300 en la celda inmediatamente superior de la celda activa:

ActiveCell.Offset (-1, 0).Value = 300 

 

A propósito, si la celda activa está en la fila 1, la propiedad Offset del ejemplo anterior genera un error porque no puede devolver un objeto Range que no existe.

 

Ejemplo de uso de offset: 

Sub Macro400() 

ActiveCell = 7

ActiveCelf.Offset(l, 0) = 2

ActiveCell.Offset(2, 0) = 3

End Sub

 

Deja una respuesta

Los campos requeridos estan marcados con *.