Establecer fórmulas para una celda en VBA
- Establecer fórmulas para una celda en VBA
- Dirección de una celda en VBA
- Seleccionar rango de celdas en VBA
- Escribir en celdas en VBA
- Leer desde celdas en VBA
- Intersecar celdas en VBA
- Reemplazar valores de celdas no contiguas en VBA
- Desplazamiento desde una celda en VBA
- Consulte una dirección de celda en VBA
- Incluir todas las celdas en VBA
- Cambiar propiedades de una celda en VBA
- Encuentra la última celda en VBA
- Encuentre la última celda utilizada en una columna en VBA
- Encuentre la última celda utilizada en una fila en VBA
- Copiar y pegar valores de 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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
Como puede ver en el ejemplo anterior, podemos realizar muchas tareas usando celdas.