Establecer fórmulas para una celda en VBA

Iqra Hasnain 15 febrero 2024
  1. Establecer fórmulas para una celda en VBA
  2. Dirección de una celda en VBA
  3. Seleccionar rango de celdas en VBA
  4. Escribir en celdas en VBA
  5. Leer desde celdas en VBA
  6. Intersecar celdas en VBA
  7. Reemplazar valores de celdas no contiguas en VBA
  8. Desplazamiento desde una celda en VBA
  9. Consulte una dirección de celda en VBA
  10. Incluir todas las celdas en VBA
  11. Cambiar propiedades de una celda en VBA
  12. Encuentra la última celda en VBA
  13. Encuentre la última celda utilizada en una columna en VBA
  14. Encuentre la última celda utilizada en una fila en VBA
  15. Copiar y pegar valores de celda en VBA
Establecer fórmulas para una celda en VBA

Presentaremos diferentes funciones de celda que se pueden realizar en VBA para lograr diferentes tareas con ejemplos.

Establecer fórmulas para una celda en VBA

Las hojas de trabajo de Excel contienen celdas para fines de almacenamiento de datos. Estas celdas están dispuestas para formar filas y columnas en la hoja de cálculo.

Si bien involucramos celdas de una hoja de cálculo de Excel para la codificación de VBA, usamos un rango que incluye una o más celdas. Algunas de las características esenciales relacionadas con las celdas VBA son las siguientes:

  • Dirección de la celda
  • Rango de celdas
  • Escritura en celdas
  • Lectura de celdas
  • Células que se cruzan
  • Celdas no contiguas
  • Compensación de celdas
  • Refiriéndose a una dirección de celular
  • Incluyendo todas las celdas
  • Cambiar las propiedades de las células.
  • Encontrar la última celda
  • Encontrar el último número de fila utilizado en una columna
  • Encontrar el último número de columna utilizado en una fila
  • Copiar y pegar una celda

Dirección de una celda en VBA

Podemos identificar la dirección de una celda a través de la notación A1, en la que incluimos el nombre de la letra de la columna y escribimos el número de fila de la celda. En VBA, se puede incluir el objeto de rango.

Nos referiremos a la celda B4, como se muestra a continuación.

# vba
MsgBox Range("B4")

Producción:

Obtener el valor de una celda en VBA

Como se muestra a continuación, si queremos referirnos a una celda de otra hoja de trabajo, podemos llamarla fácilmente llamando a la hoja y obteniendo la celda.

# vba
MsgBox Worksheets("Sheet2").Range("B4")

Producción:

Obtenga el valor de una celda de otra hoja en VBA

Incluso podemos abrir otro libro de trabajo y elegir la hoja de trabajo de ese libro de trabajo para obtener el valor de la celda deseada, como se muestra a continuación.

# vba
MsgBox Workbooks("My WorkBook").Worksheets("Sheet2").Range("B2")

Otra forma de escribir una dirección de celda es usar la letra R y el número de fila. A continuación, escribe la letra C y el número de columna de la celda.

Este método se llama notación R1C1. Usemos esta notación en nuestro ejemplo, como se muestra a continuación.

#vba
Sub callIt()

Cells(4, 2) = "Added"

End Sub

Producción:

Cambiar el valor de una celda usando la notación R1C1 en VBA

Seleccionar rango de celdas en VBA

También podemos seleccionar un rango de celdas dando valores de rango a la función Rango a continuación.

# vba
Range("A1:B13")

Podemos usar la función anterior para cambiar el estilo de las celdas presentes en ese rango. Veamos un ejemplo en el que cambiaremos el color del borde de las celdas de ese rango, como se muestra a continuación.

# vba
Sub callIt()

Range("A1:B13").Borders.Color = RGB(255, 0, 255)

End Sub

Producción:

Cambiar el color del borde usando celdas en el rango

Como puede ver en el ejemplo anterior, podemos cambiar fácilmente los estilos usando la función de rango proporcionando los valores de las celdas.

Escribir en celdas en VBA

Hay muchos escenarios en los que podemos querer editar o agregar valor a una celda en particular. Usando VBA, reemplazar el valor de la celda o agregar el valor de la celda es muy fácil; podemos usar la función rango().

Entonces, usemos la función rango() para agregar un valor y cambiarlo.

# vba
Sub callIt()

Range("B4") = "Value Added"

End Sub

Una vez que se agrega el valor, cambiaremos el valor. E intentaremos reemplazar la misma celda como se muestra a continuación.

# vba
Sub callIt()

Range("B4") = "Value Changed"

End Sub

Producción:

Agregar y cambiar valores de una celda usando VBA

También podemos usar el método Células para realizar la misma función.

# vba
Sub callIt()

Cells(4, 2) = "Value"

End Sub

Producción:

Agregar y cambiar valores de una celda usando el método de celda en VBA

Si queremos almacenar un rango de valores, usar una matriz es mejor que usar una variable simple.

Leer desde celdas en VBA

Si queremos leer valores de una celda, podemos usar 2 funciones. Uno es el Rango, y el otro son las Células. Llamando a la dirección de la celda, podemos obtener su valor.

Podemos usar el método MsgBox para mostrar nuestro valor. Veamos un ejemplo y obtengamos el valor de B4 utilizando primero el método Celdas.

# vba
Sub callIt()

cellValue = Cells(4, 2)

MsgBox (cellValue)

End Sub

Producción:

Lea el valor de la celda usando el método de celda en VBA

Tratemos de lograr lo mismo usando el método rango() a continuación.

# vba
Sub callIt()

cellValue = Range("B4")

MsgBox (cellValue)

End Sub

Producción:

Lea el valor de la celda usando el método de rango en VBA

Como puede ver en el ejemplo anterior, es muy fácil leer los valores de las celdas usando estas dos funciones.

Intersecar celdas en VBA

Mientras trabajamos en VBA para crear fórmulas para hojas de Excel, es posible que necesitemos encontrar la intersección de 2 rangos y realizar tareas específicas allí. O queremos colocar un valor particular en la intersección de estos 2 rangos.

El espacio se usa entre las direcciones de las celdas y el VBA para el proceso de intersección.

Como se muestra a continuación, veremos un ejemplo en el que agregaremos un valor en las celdas de rango, común entre ambos rangos.

# vba
Sub callIt()

Range("A1:B10 B1:C10") = "Common Cells"

End Sub

Producción:

Intersecar celdas usando 2 rangos en VBA

Como puede ver en el ejemplo anterior, podemos agregar o reemplazar fácilmente los valores entre las celdas que se cruzan entre dos rangos.

Reemplazar valores de celdas no contiguas en VBA

Puede haber algunas situaciones en las que tengamos que reemplazar los valores de las celdas no contiguas. Podemos hacerlo fácilmente usando el rango para múltiples celdas o una sola celda.

Para celdas no contiguas, coloque una coma (,) entre diferentes direcciones de celda. Veamos un ejemplo en el que reemplazaremos los valores de celdas específicas, como se muestra a continuación.

# vba
Sub callIt()

Range("A2,C3,B5") = 10

End Sub

Producción:

Cambiar valores de celdas no contiguas en VBA

Ahora, cambiemos el valor de una sola celda no contigua, como se muestra a continuación.

# vba
Sub callIt()

Cells(5, 2) = "Hello"

End Sub

Producción:

Cambiar valores de celda única no contigua en VBA

Desplazamiento desde una celda en VBA

Puede haber una situación mientras trabajamos en VBA con hojas de Excel en la que podemos tener una celda de referencia de la que queremos obtener algún valor de celda de compensación o reemplazar el valor de la celda en función de la dirección de una celda.

Podemos usar el método offset para lograr este escenario sin problemas.

Veamos un ejemplo en el que usaremos esta función para mover 1 columna y 1 fila usando el método de rango como se muestra a continuación.

# vba
Sub callIt()

Range("A1").Offset(1, 1) = "A1"

End Sub

Producción:

Agregar valores usando el método de compensación en el rango en VBA

Ahora, intente el mismo escenario usando el método Celdas a continuación.

# vba
Sub callIt()

Cells(1, 1).Offset(0, 0) = "A1"

End Sub

Producción:

Agregar valores usando el método de compensación en celdas en VBA

Ahora, imaginemos que si queremos agregar los valores a varias celdas en función del valor de desplazamiento del rango, podemos hacerlo como se muestra a continuación.

# vba
Sub callIt()

Range("A1:B13").Offset(4, 2) = "Completed"

End Sub

Producción:

Agregar valores a un rango usando el método de compensación en celdas en VBA

Consulte una dirección de celda en VBA

Ahora bien, si queremos obtener la dirección de una celda, podemos obtenerla rápidamente usando la función Dirección. Veamos un ejemplo en el que intentaremos obtener la dirección de una celda específica, como se muestra a continuación.

# vba
Sub callIt()

Set cell = Cells(2, 4)

MsgBox cell.Address

End Sub

Producción:

Obtener la dirección de una celda en VBA

Como puede ver en el ejemplo anterior, podemos obtener fácilmente la dirección de cualquier celda usando el método dirección en VBA.

Incluir todas las celdas en VBA

Puede haber situaciones en las que queramos borrar todos los datos de todas las celdas. Para este escenario, podemos escribir el siguiente código como se muestra a continuación.

# vba
Sub callIt()

Cells.Clear

End Sub

Producción:

Borrar todas las celdas en VBA

Como puede ver en el ejemplo anterior, podemos fácilmente

Cambiar propiedades de una celda en VBA

Puede haber situaciones en las que tengamos que cambiar las propiedades de células específicas. VBA proporciona formas sencillas de cambiar las propiedades de cualquier celda.

Veamos un ejemplo en el que cambiaremos el color de la fuente, como se muestra a continuación.

# vba
Sub callIt()

Set NewCell = Range("A1")

NewCell.Activate

NewCell.Font.Color = RGB(255, 0, 0)

End Sub

Producción:

Cambiar el color de la fuente usando VBA

Ahora, intentemos cambiar la familia de fuentes y el tamaño de fuente de la celda, como se muestra a continuación.

# vba
Sub callIt()

Set cell = Range("A1")

cell.Activate

cell.Font.Size = 20
cell.Font.FontStyle = "Courier"

End Sub

Producción:

Tamaño de fuente y estilo de fuente cambiados por VBA

Encuentra la última celda en VBA

Puede haber algunas situaciones en las que tengamos que encontrar la última celda de la columna o fila. Podemos usar Row.count y Column.count en VBA para encontrar la última fila de una hoja de cálculo de Excel.

Como se muestra a continuación, veamos un ejemplo y busquemos la última celda de filas y columnas.

# vba
Sub callIt()

MsgBox ("Last cell row wise in the sheet: " & Rows.Count)

MsgBox ("Last cell column wise in the sheet: " & Columns.Count)

End Sub

Producción:

Encuentra la última celda en columnas y filas en VBA

Como puede ver en el ejemplo anterior, es bastante fácil encontrar la última celda de la fila o columna usando la función simple contar.

Encuentre la última celda utilizada en una columna en VBA

Puede haber situaciones en las que queramos saber la última celda utilizada por una columna para tener una idea de la cantidad de datos que estamos almacenando.

Como se muestra a continuación, veamos un ejemplo y busquemos la última celda ocupada en columnas específicas.

# vba
Sub callIt()

MsgBox (Cells(Rows.Count, "B").End(xlUp).Row)

End Sub

Producción:

Encuentra la última celda en una columna utilizada en VBA

Como puede ver en el ejemplo anterior, podemos encontrar la última celda utilizada con un 100 % de precisión. VBA es el mejor método para encontrar estas cosas con precisión y no perder ningún dato.

Encuentre la última celda utilizada en una fila en VBA

Puede haber situaciones en las que queramos saber la última celda utilizada por una fila para tener una idea de la cantidad de datos que estamos almacenando.

Como se muestra a continuación, veamos un ejemplo y encontremos la última celda ocupada en una fila específica.

# vba
Sub callIt()

MsgBox (Cells(9, Columns.Count).End(xlToLeft).Column)

End Sub

Producción:

Encuentra la última celda en una fila utilizada en VBA

Como puede ver en el ejemplo anterior, podemos encontrar la última celda utilizada con un 100 % de precisión. VBA es el mejor método para encontrar estas cosas con precisión y no perder ningún dato.

Copiar y pegar valores de celda en VBA

Puede haber situaciones en las que tengamos que copiar y pegar valores específicos de una celda a otra celda. O también podemos copiar y pegar de una hoja a otra hoja con VBA, como se muestra a continuación.

# vba
Sub callIt()

Worksheets("Sheet2").Range("A1:B13").Copy Destination:=Worksheets("Sheet1").Range("A1")

End Sub

Producción:

Copiar y pegar en VBA

Como puede ver en el ejemplo anterior, podemos realizar muchas tareas usando celdas.

Artículo relacionado - VBA Cell