VBA – Función Cells – Cells, Worksheet.Cells, y Range.Cells
In this Article
Este artículo demostrará cómo utilizar la Función Cells de VBA.
La Función Celdas de VBA le permite hacer dos cosas:
- Hacer referencia a todas las celdas de una hoja de cálculo
- Hacer referencia a una celda específica
Es similar al Objeto Range de VBA.
Sintaxis de la Función Cells de VBA
La sintaxis tradicional de la función Celdas de VBA es:
Este tipo de sintaxis se denomina sintaxis R1C1 en contraposición a la sintaxis A1 de una letra de columna y luego un número de fila que se utiliza cuando se utiliza el Objeto Rango en Excel VBA.
Por lo tanto, para seleccionar la celda C3 podemos escribir el siguiente código:
Cells(3, 4).Select
esto moverá el puntero de Excel a la celda C4 en su hoja de cálculo.
Si deseamos utilizar la función cells para rellenar una celda específica con algún texto, y luego formatear la celda, podemos escribir algún código como el del ejemplo siguiente:
Sub RellenarCeldas()
Cells(2, 2) = "Análisis de Ventas para 2022"
Cells(2, 2).Font.Bold = True
Cells(2, 2).Font.Name = "Arial"
Cells(2, 2).Font.Size = 12
End Sub
Esto rellenará la celda B2 con texto y luego formateará la celda.
Worksheet.Cells
Si deseamos seleccionar toda la hoja utilizando la función cells, podemos escribir lo siguiente:
Worksheets("Hoja1").Cells.Select
Esto seleccionará todas las celdas de la Hoja1 de la misma forma que lo haría pulsando CTRL + A en el teclado.
Range.Cells
También podemos utilizar la función celdas para referirnos a una celda concreta dentro de un rango de celdas.
Range("A5:B10").Cells(2, 2).Select
Esto se referirá a la celda que tiene la dirección B6 en el rango original (A5:B10) ya que B6 está en la segunda fila y segunda columna de ese rango.
Recorriendo un Rango con la Función Cells
Ahora que entendemos la Función Celdas, podemos utilizarla para realizar algunas tareas en Bucles VBA.
Por ejemplo, si queremos formatear un rango de celdas dependiendo de su valor, podemos recorrer el rango usando la función celdas.
Sub FormatearCeldas()
Dim x As Integer
For x = 1 To 10
If Cells(x, 1) > 5 Then
Cells(x, 1).Interior.Color = vbRed
End If
Next x
End Sub
Este código comenzará en la celda A1 y recorrerá la celda A10, cambiando el color de fondo a rojo si el valor de la celda es mayor que 5. Si deseamos llevar esto a otro nivel, para recorrer columnas además de filas, podemos añadir otro bucle al código para aumentar las columnas que mira el bucle.
Sub FormatearCeldas()
Dim x As Integer
Dim y As Integer
For x = 1 To 10
For y = 1 To 5
If Cells(x, y) > 5 Then
Cells(x, y).Interior.Color = vbRed
End If
Next y
Next x
End Sub
Ahora el bucle comenzará en la celda A5 pero continuará hasta la celda E10.
También podemos utilizar la función Cells para recorrer un rango específico de celdas
Sub RecorrerRangoEspecifico()
Dim rng As Range
Dim x As Integer
Dim y As Integer
Set rng = Range("B2:D8")
For x = 1 To 7
For y = 1 To 3
If rng.Cells(x, y) > 5 Then
rng.Cells(x, y).Interior.Color = vbRed
End If
Next y
Next x
End Sub
Este bucle sólo buscaría dentro del rango B2:D8, y luego recorrería las filas y columnas de ese rango en particular. Recuerda que cuando el rango se suministra a la función Cells, ésta sólo buscará dentro de ese rango y no en toda la hoja de cálculo.