¿Recién inicias en el mundo de la programación de macros en Excel? Y quieres aprender comandos e instrucciones que te ayuden a practicar y desarrollar tu propias macros dentro de la hoja de cálculo.
No sabes de que hablo, 👉 ¿Qué son las macros y para que me sirven?
Trabajando en Excel tienes la posibilidad de modificar una hoja de trabajo, haciendo uso de los comandos desarrollados para tal fin.
En este artículo te presentamos los comandos más comunes para programar una hoja con vba:
¿Estás listo para programar Excel?
</> Comando SHEET
Sheets es una colección que puede contener objetos Chart o Worksheet. Esta colección es de gran utilidad para trabajar con hojas de diferentes tipos.
Ejemplos:
Para imprimir las hojas del libro activo:
Sheets.PrintOut
Para agregar una hoja al final del libro actual:
Sheets.Add After:=ActiveSheet
Para renombrar la hoja 1:
Sheets(«Hoja1»).Name = «Nuevo Nombre Hoja»
Para agregar dos hojas de gráfico al libro actual, y colocarlas detrás de la hoja dos del libro:
Sheets.Add type:=xlChart, count:=2, after:=Sheets(2)
Para activar la hoja denominada Sheet1:
Sheets(«Sheet1»).Activate
</> Comando RANGE
El objeto Range es un objeto que hace referencia a una celda específica, a un conjunto de celdas (juntas o separadas), a una fila entera o a una columna.
Ejemplos:
Selecciona la celda A1 de la hoja activa:
Range(«A1»).select
Selecciona el rango desde A1 hasta B20 en la hoja activa:
Range(«A1: B20»).Select
Para seleccionar la celda A1 en la hoja 2:
Worksheets(2).Range(«A1»).Select
Para seleccionar celdas separadas en la hoja actual:
Range(«A1,A3,C5»).Select
Inserta el valor 35 en el la celda A1 de la hoja activa:
Range(«A1») = 35
Copia el valor en el la celda A1 de la hoja activa:
Range(«A1») .Copy
Pega el valor copiado en el la celda A2 de la hoja 2:
Sheets(«Hoja2»).Range(«A2»).Select
ActiveSheet.Paste
</> Comando OFFSET
La función OFFSET devuelve una referencia a un rango que es un número específico de filas y columnas de otro rango o celda.
Sintaxis
Range(«A1»).OFFSET(RowOffset, ColumnOffset)
- RowOffset indica el número de filas que deseas moverte desde la fila seleccionada.
- ColumnOffset es un entero que señala cuántas columnas deseas moverte desde la fila seleccionada.
Ejemplo:
Selecciona la celda C6, después de desplazarse 5 filas hasta A6, y luego 2 columnas a la derecha.
Range(«A1»).OFFSET(5, 2).Select
Dos columnas a la derecha de la celda C6, escribe la palabra APROBADO.
Range(«C6»).OFFSET(0, 2) = «Aprobado»
Incrementa en 1, el valor de la celda A1 y lo escribe una fila abajo
Range(«A1»).OFFSET(1, 0) = Range(«A1») + 1
</> Comando CELLS
Cells es una propiedad que se emplea para especificar una celda o todas las celdas en la hoja de trabajo.
Sintaxis
Cells(RowIndex, ColumnIndex)
- RowIndex indica el número de la fila al que deseas referirte.
- ColumnIndex señala el número de columna al que deseas referirte.
Ejemplo:
Devuelven la celda «B4» en una hoja de trabajo activa.
Expresión = Cells (4, 2)
</> Comando WORKBOOKS
Workbook es un objeto de la colección Workbooks. Esta colección contiene los objetos Workbook abiertos actualmente en Microsoft Excel.
Ejemplo:
En el siguiente ejemplo se activa el libro uno:
Workbooks(1).Activate
Para activar la Hoja1 en el libro Factura.xls:
Workbooks(«Factura.xls»).Worksheets(«Sheet1»).Activate
</> Comando INTERIOR.COLOR
La propiedad Interior.Color devuelve o define el color de un objeto. Se debe utilizar en conjunto con la función RGB para crear el valor de un color.
Sintaxis
expresión.Color
- expresión devuelve un objeto Interior.
Ejemplo
Aplica letra color ROJO al contenido de la celda D6:
Range(«D6»).Font.Color = vbRed
Aplica fondo color AZUL al contenido de la celda D5:
Range(«D5»).Interior.Color = vbBlue
Para establecer el color de las etiquetas de marca de graduación en el eje de valores de Chart1:
Charts(«Chart1»).Axes(xlValue).TickLabels.Font.Color = RGB(0, 255, 0)
</> Comando FONT
El comando FONT abarca los atributos de fuente tales como el nombre, tamaño, el color, etc., de un objeto.
Ejemplo:
Para dar formato de negrita a las celdas A1:B5
Worksheets(«Sheet1»).Range(«A1:B5»).Font.Bold = True
</> Comando ACTIVECELL
El comando ActiveCell se refiere al celda seleccionada actualmente en una hoja de cálculo. Una vez que la celda se encuentre seleccionada se le pueden asignar valores o funciones.
Ejemplo:
Para asignar el valor de 5 a la celda activa:
ActiveCell.Value = 5
</> Comando CLEARCONTENTS
ClearContents es una función que se utiliza para borrar el contenido en un rango dado de celdas o grupo de celdas.
Ejemplo:
Se borra el contenido del rango de celdas A1:C3.
Range(«A1:C3»).ClearContents
Ahora ya conoces los comandos básicos, toca sentarse a programar, así que mucho éxito.
👉Si tienes alguna pregunta, te leo en los comentarios.
¿Existe algún Curso gratis? O para pagar luego. Así como te financian en EEUU (¡Jajaja!).
Yo pago, siempre y cuando los ingresos provengan de lo aprendido.
Saludos desde Maracaibo, Venezuela, territorio de lo posible. 👋🏻✌🏻
Hola, se puede usar una variable en lugar del nombre de la hoja en esta fórmula:
ActiveCell.FormulaR1C1 = «=MID(‘Karen Orozco’!R1C1,9,LEN(‘Karen Orozcoz’!R1C1))»
si es así, cómo se puede hacer?
Hola Bertha gracias por tu comentario.
Solo debes usar el nombre de la hoja, si la fórmula utiliza el valor de otra hoja distinta a donde colocas esta fórmula.
Es decir si el valor está en la misma hoja, puedes usar:
ActiveCell.FormulaR1C1 = “=MID(R1C1,9,LEN(R1C1))”
Espero que esto te ayude, saludos!
Tengo un problema deseo construir una tabla con datos, de una interfaz inicial, deseo copiar los valores en a2, c2, a4,c4, a6, c6 y a8,c8 en una hoja denominada operaciones, en la primera parte se coloca en a3 y pega lo valores copiados.
Requiero que baje una celda en operaciones para que siga alimentandose la tabla con cada ejecucion de la macro.
Que comando necesito para bajar esa celda de forma reiterativa?
Hola Héctor gracias por tu comentarios,
Para lograr lo que comentas necesitas crear un código secuencial en la macro para que brinque automaticamente después de cada celda, existen diferentes método que puedes aplicar te recomiendo investigar más sobre los siguientes comandos:
Ciclos FOR / DO / WHILE
Comando OFFSET
Comando APPLICATION.WORKSHEETFUNTIONS.COUNTA
Espero que esto te ayude a continuar tu proyecto.
Saludos!
Gracias. Estas fórmulas son útiles