¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Macros y lenguaje VBA
  3. Manipular celdas de Excel
Extrait - Macros y lenguaje VBA Descubra la programación en Excel (nueva edición)
Extractos del libro
Macros y lenguaje VBA Descubra la programación en Excel (nueva edición) Volver a la página de compra del libro

Manipular celdas de Excel

Objetivos del capítulo

Objeto elemental de Excel, las celdas serán su primer paso en la programación VBA de objetos de Excel.

Sin recorrer todas las acciones posibles con las celdas en VBA, este capítulo le permitirá conocer las principales propiedades y métodos de los objetos elementales que son las celdas y los rangos de celdas en Excel.

A continuación, verá ejemplos del código más frecuente antes de terminar validando sus nuevos conocimientos mediante ejercicios.

Objeto y variable Range

Cuando creó su primera macro usando la grabadora de macros en el capítulo La grabadora de macros, ya había conocido el objeto Range.

Objeto Range

El tipo de datos Range es el primero que se descubre en el estuche de objetos VBA de Excel.

Este objeto puede representar una sola celda, un rango de celdas o una serie de celdas no contiguas. Al utilizar este objeto, la sintaxis general es la siguiente:

Range(Dirección) 

Ejemplo 1: sintaxis general del objeto Range

Dependiendo de sus necesidades, la dirección que se pasa como una cadena puede representar la celda o celdas que desee manipular:

Range("A1") 
Range("C2:D5") 
Range("A1,B2,G3") 
Range("NombreDeLaCelda") 

Ejemplo 2: posibilidades de sintaxis para el objeto Range

Variable de tipo Range

Al igual que ha hecho con las cadenas, los valores numéricos o los booleanos, usted puede trabajar...

Objeto Cells

Existe un objeto aún más pequeño que el objeto Range, que también le permite manipular celdas; se trata del objeto Cells. Es más pequeño porque, mientras que el objeto Range permite gestionar un rango de celdas, el objeto Cells se limita a una sola celda. Por ejemplo, no puede referirse al rango de celdas A1:D3 con un objeto Cells.

Para utilizar el objeto Cells, existen dos sintaxis posibles, cada una de las cuales proporciona al objeto Cells una fila y una columna, es decir, las coordenadas de la celda.

'Sintaxis general 
Cells(indiceFila, indiceColumna) 
'Sintaxis con valores numéricos solamente 
Debug.Print Cells(3,4) ' muestra el contenido de la celda D3 
'Sintaxis con un valor numérico para la fila y una cadena 
para la columna 
Debug.Print Cells(5, "F") 'muestra el contenido de la celda F5 

Ejemplo 5: diferentes sintaxis con el objeto Cells

El objeto Cells puede utilizarse con una variable de tipo Range.

Dim o As Range 
Set o = Cells(1,3) 

Ejemplo 6: usar una variable de tipo Range para el objeto Cells

Los tipos de datos Range y Cells compartirán propiedades y métodos comunes.

Algunas celdas particulares: ActiveCell, Selection y Target

Cuando se utiliza la grabadora de macros, también pueden aparecer algunas palabras clave específicas para definir una celda o un rango de celdas. Esta breve sección tiene como objetivo explicarle los puntos principales.

Celda activa: ActiveCell

Cuando hace clic en una celda, se dice que la está activando. Esta celda activa está representada por un objeto nativo en VBA: ActiveCell. Este objeto, de tipo Range, representa la celda activa en su libro de trabajo.

A continuación, se muestra un ejemplo de celda activa:

images/cap13_img_03.png

Cuando se selecciona un rango de celdas, la celda desde la que se efectúa la selección es la celda activa.

images/cap13_img_04.png

Por último, si realiza una serie de selecciones de celdas no adyacentes, la última celda activada será la activa.

images/cap13_img_05.png

Puede ver la palabra clave ActiveCell en el siguiente ejemplo:

Sub LlenarCelda() 
   ActiveCell.FormulaR1C1 = "Buenos días" 
End Sub 

Ejemplo 7: la palabra clave ActiveCell aparece desde la grabadora de macros.

Selección activa: Selection

Cuando trabaja en Excel y selecciona una o varias celdas, VBA utiliza un objeto específico: Selection. Este objeto, de tipo Range, como ActiveCell, cubre un espectro de funcionalidad similar a este. Esta palabra clave puede aparecer cuando utilice la grabadora de macros.

Cuando se trabaja con una sola celda, el objeto...

Propiedades de las celdas

En primer lugar, veremos lo que se llama una propiedad y luego veremos las principales propiedades que se pueden utilizar con las celdas.

Definir una propiedad

En informática, las propiedades de un objeto son sus características, lo que lo define. Tomemos el ejemplo de un coche. Tendrá entre sus propiedades su marca, modelo, color, año de lanzamiento. Las propiedades pueden ser de cualquier tipo, (numérico, fecha, cadena). Algunas propiedades podrán modificase; otras, solo leerse.

Durante la programación, puede reconocer una propiedad por el icono de la mano que señala:

images/cap13_img_06.png

Contenido de una celda: Value, Value2

Cuando empiece a programar con Excel, lo primero que le interesará de una celda será el valor que contiene. En esta sección encontrará algunas de las líneas de código que descubrirá con la grabadora de macros.

El valor contenido en una celda se obtiene gracias a la propiedad Value. VBA considera esta propiedad como la predefinida.

La sintaxis general es la siguiente:

Debug.Print Range("A1").Value 'Muestra el valor contenido en la celda A1. 

Ejemplo 10: sintaxis general de la propiedad Value de un objeto Range

Esta propiedad puede ser tanto leída como modificada por su programa.

Range("A1").Value = 3 ' Asigna el valor 3 a la celda A1 
MsgBox Range("A1").Value 'Muestra el valor de la celda A1 

Ejemplo 11: usar la propiedad Value

Dependiendo del tipo de valor contenido en la celda, el tipo de datos devueltos por la propiedad Value será adaptado automáticamente por VBA. Por lo tanto, es conveniente utilizar los tipos de datos correctos para sus variables, ya que de lo contrario su programa podría malinterpretar los valores.

En el caso de que tenga los siguientes datos en las celdas:

images/cap13_img_07.png

el siguiente código recuperará cada uno de los valores con el tipo de datos correcto:

Dim iNumerico As Integer, sTexto As String, dtFecha As Date 
iNumerico = Range("A1").Value '123 
sTexto = Range("B1").Value '"ejemplo de texto" 
dtFecha = Range("C1").Value '2022-08-17 

Ejemplo 12: recuperar los valores a través de la propiedad Value

Del mismo modo, se pueden escribir valores en las celdas a partir de variables:

Dim strTexto As String 
strTexto = "Buenos días" ...

Métodos aplicados a las celdas

En esta sección verá la otra cara de lo que se puede hacer con una celda. Verá lo que es un método en programación, y luego descubrirá algunos métodos que le permiten realizar manipulaciones comunes con las celdas de Excel.

Definición de un método

Al igual que abordó las propiedades de los objetos, los métodos corresponden a las acciones que puede realizar con estos objetos. Si retoma el ejemplo del coche, puede, por ejemplo, desbloquearlo, sentarse al volante, arrancar el motor, acelerar o frenar.

En la programación VBA, los métodos se identifican con el icono de bloque de color verde, como se muestra en la siguiente imagen:

images/cap13_img_09.png

Activar y seleccionar una celda

Como habrá aprendido en la sección Algunas celdas particulares: ActiveCell, Selection y Target, existe una diferencia entre una celda activa y una celda seleccionada. Entre los métodos de objeto comenzará, por tanto, con los que activan y seleccionan las celdas.

Activar una celda: Activate

Uno de los primeros métodos que puede ver con una celda es su activación. Esto le permite simular hacer clic en una celda. El método Activate le permite realizar esta acción. Este método no necesita ningún parámetro; se pueden activar varias celdas, simplemente especificándolo dentro del objeto Range. Su sintaxis...

Ejercicios

 En esta serie de ejercicios, cree una hoja en su libro de trabajo llamada Ejercicios_Capitulo13.

Antes de ejecutar las macros, asegúrese de que la hoja Ejercicios_Capitulo13 está activa.

Las funciones, procedimientos y macros pueden escribirse directamente en la hoja Ejercicios_Capitulo13.

Puede ayudarse con la grabadora de macros si encuentra dificultades.

Valor en una celda

Con activación

 Cree la macro Capitulo13_Ejercicio1A.

Esta macro activará la celda A1 y luego pondrá el valor Buenos días en dicha celda.

 Ejecute la macro Capitulo13_Ejercicio1A.

Sin activación

 Cree la macro Capitulo13_Ejercicio1B.

Esta macro escribirá el valor Manipulación correcta directamente en la celda A2, sin activarla primero.

 Ejecute la macro Capitulo13_Ejercicio1B.

Un poco de color

 Cree la macro Capitulo13_Ejercicio2.

Esta macro le pedirá al usuario que introduzca la dirección de una celda (hará lo necesario para garantizar que la dirección sea válida).

Una vez conocida la dirección de la celda, la coloreará de verde (constante vbGreen)

 Ejecute la macro Capitulo13_Ejercicio2.

Copiar y pegar celdas

Con el método Copy

 Cree la macro Capitulo13_Ejercicio3A.

Esta macro deberá escribir primero el valor 3A en la celda B1 y luego, utilizando el método Copy, copiar el valor de esa celda a la celda...