Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

MACROS Clase 1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

VISUAL BASIC

1 INTRODUCCIÓN
Abrir Visual Basic: ALT F11
F5 Te ejecuta la macro, F8 Te la ejecuta por partes
Si hago click sobre el código y aprieto F5 te ejecuta esa macro sin salir o tener que crear botón.
Barra superior
Guardar: no solo guarda el código sino también el archivo de Excel.
Importante guardar el Excel en formato habilitado para macros xlsm.
Lo que ejecuto en la macro no se puede revertir, así que tengo que guardar siempre antes de
ejecutar la macro.

Cuando se programa para todo el archivo hay que crear un módulo. También se pueden crear
macros para cada hoja.

Inmediato
Escribir el nombre de la macro, hacer un click y se ejecuta.
Apóstrofe (verde) y estructuras (azul)
Para comentario o para anular cosas escritas, las convierte en texto
En azul te indica las estructuras, funciones.

2 GRABADORA
Abrir grabadora (ventana programador)
 Nombre de la macro (no puede tener espacio)
 Método abreviado (no elegir una letra que se use normalmente). Si quiero cambiarlo
después: programador, macro, opciones y ahí le puedo cambiar la letra al método
abreviado.
 Guardar: en este libro, en libro de macros personal o libro nuevo (esto se puede usar por
ejemplo para que ese libro nuevo afecte otros excels). Cuando estoy grabando en el libro
personal para guardar tengo que hacerlo siempre en la ventana de visual basic.
Listo estoy grabando. Empiezo a ejecutar las acciones que quiero grabar.
Si veo la ventana de visual basic a la vez voy a ver el código que se está escribiendo.
3 OBJETOS, MÉTODOS, PROPIEDADES
3.1 Objetos

Se trabaja con objetos:

Nombre Qué es (en castellano)


Range Rango
Sheets Hojas
Workbooks Libro (Archivo de Excel)
Application Excel

Cells Celda
ActiveCell Celda activa
Selection Selección
Rows Filas
Columns Columnas

Worksheets Hojas de cálculo


ActiveSheet Hoja Activa

Windows Ventana
ActiveWindow Ventana activa
ActiveWorkbook Libro activo

Charts Hoja de gráfico


ChartObjects Gráfico dentro de una hoja de cálculo
ActiveChart Gráfico activo
Shapes Formas
PivotTables Tablas Dinámicas
ListObjects Objeto Tabla (el del botón "Dar formato
como tabla")

WorksheetFunction Funciones de Excel

3.2 Métodos y Propiedades

Al escribir en el editor de VB el nombre de un objeto y luego un punto aparece un listado


desplegable con todos sus métodos y propiedades .
 Propiedad
 Características del objeto
 También pueden ser objetos pertenecientes a otro objeto.
Las propiedades siempre tienen que tener un igual para que funcionen. Todos los objetos
tienen una propiedad por defecto, si no se le indica alguna va a hacer esa propiedad.
Ejemplos: Semana = Range("C2")
Cantidad = Range("A4", Range("A4").End(xlDown)).Count

4 ESCRIBIENDO EN VB

4.1 Sub / End Sub


Sub XX () Siempre termina con paréntesis, adentro puedo incluir argumentos.
End Sub

4.2 Range
Permite trabajar con una celda o un conjunto de celdas.
Range("A1").Select Selecciona la celda A1
Range("A4", Range("A4").End(xlDown)).Count Se coloca en A4 y cuenta desde A4 hasta lo último
escrito para abajo.

Semana = Range("C2")
Range("1:1").Find(Semana).Column

Para que me seleccione una celda me conviene ponerle nombre a la celda por si la muevo (creo
filas o columnas) siempre me toma el valor de la celda original:
Range = “carpeta”

ActiveCell.Formula
ActiveCell.Formula = "=sum(A1:B1)"
Me paro en la celda que quiero en el Excel, ejecuto esa macro y me va a devolver la suma de esas
celdas.

ActiveCell.FormulaR1C1
Para que la macro sea flexible y se ejecute en cualquier parte. Me paro en la celda que quiero del
Excel y aprieto la macro (por ej con F5)
ActiveCell.FormulaR1C1 = "RC(-2) + RC(-1)" Toma dos filas por arriba de la celda seleccionada y una
columna para la izquierda.

Function
Creo funciones que uso en el Excel, devuelven un resultado.
Function IVA (importe) donde importe es el argumento
IVA = importe * 0.21
End Function
Voy al Excel y escribo “=IVA (celda a la que voy a aplicar la función)” y devuelve el valor ese por
0.21.

Selection.X donde X es la propiedad

1) Ejemplo 1: Selection.Interior
Si grabo pintar una celda de color amarillo escribe lo siguiente:
With Selection.Interior (selection es la acción, ¨punto¨ Interior es la propiedad)
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Puedo eliminar todo y escribir:


Selection.Interior.Color = 65535

2) Ejemplo 2
Sub FormatoEncabezado()
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.RowHeight = 30
End With
End Sub
Clear
Borra el rango que dice la celda D7 (fila 7, columna 4)
Sub borrar()
Range(Cells(7, 4)).Clear
End Sub

Ejercicios
3) Copiar el dato de la celda C7 a todas las celdas del rango indicado en D7

Sub ejercicio1()
Cells(7, 3).Copy
Range(Cells(7, 4)).PasteSpecial (xlPasteValues)
End Sub
4) Copiar el dato de la celda C7 a todas las celdas del rango indicado en D7 pero incluyendo los
bordes:
Sub Ejemplo1()
Range("c7").Copy Range(Range("D7"))
End Sub
Lo mismo escrito distinto:
Sub macro3()
Cells(7, 3).Copy Range(Cells(7, 4))
End Sub

Agregar botones que ejecutan una macro


Inserto una forma, un gráfico, una imagen, etc. Selecciono la forma con botón derecho, asignar
macro y la selecciono.

Count
Indicar en D13 la cantidad de celdas incluidas en el rango indicado en D7
Sub ejercicio3()
Range("d13") = Range(Cells(7, 4)).Count
End Sub
Sheets.Select
Seleccionar hoja
Sub hoja ()
Sheets (“FGE”). Select también puedo poner sheets (1) selecciona hoja 1
End Sub

Sheets.Add
Crear una hoja con el nombre “ejemplo”
Sub ejercicio4()
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "Ejemplo"
End Sub
Crear una hoja con lo que diga una celda
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = Sheets("06 Práctica").Range("D17")

ActiveWorkbook
Como obtener la ruta del archivo que tengo abierto y me lo muestra en la ventana inmediato
(abajo)
Sub ruta()
Debug.Print ActiveWorkbook.Path
End Sub
El guión bajo me indica que la función sigue abajo
Workbook.Open

ActiveWorkbook.Path &"/"&
Debug.Print "tomi"
Debug.Print Range("d13")

Abrir cuadro y speak


Texto es la variable creada

Sub hablar()
texto = InputBox("Sigue vivo Jacinto") Te sale un cuadro con esto escrito
Debug.Print texto Te muestra en la ventana de inmediato lo que significa texto
Application.Speech.Speak texto
End Sub
On Error Resume Next
Cuando encuentra un error la macro te salta a la siguiente acción y no ejecuta esa fila. Sirve para
que no te salga un cartel y te abra el visual basic.

Sub ejercicio4b()

On Error GoTo
Si se produce un error realiza una acción sino sigue con la acción del segundo GoTo
On Error GoTo cuandohayaerror
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = Sheets("06 Práctica").Range("D17")
GoTo estabien
cuandohayaerror:
ActiveSheet.Delete
estabien:
End Sub

Dim
Crear variable.
Dim texto as XX
No es necesario escribir antes la variable se puede poner:
 = es para una variable
 cuando es de goto pones dos puntos

FOR-NEXT
Se empieza con For y se termina con Next
Cells (se define con n° de fila y n° de columna)

Sub repetir ()
For i = 1 to Range (“D1”) Desde 1 hasta el valor que este en esa celda
Cells (i, 1) = i
Next i
End Sub

Va desde 1 hasta la celda activa

For i = 1 to Sheets.Count Desde 1 hasta el valor que este en esa celda


ActiveCells = i
Next i

Sub selecciona las hojas del documento ()


For i = 1 To Sheets.Count
Sheets(i).Select
Next i
End Sub

Sub te hace un listado del nombre de las hojas en la última hoja()


For i = 1 To Sheets.Count - 1
Sheets(i).Select
Sheets(Sheets.Count).Cells(i, 1) = Sheets(i).Name
Next i
End Sub

IF-THEN
If a = b Then x1 (puedo escribir que haga algo x1 o dejarlo en blanco y va a seguir la macro)
Else x2

También puedo escribirlo como:


If a <> b Then
MsgBox (“los listados no coinciden”)
GoTo alfinal va a buscar donde esta alfinal con “dos puntos” en toda la macro
End if

Next i
alfinal: el goto llega hasta aca y va a hacer lo que este después, en este caso terminar la macro
End Sub

VER

Crear variables
Private variable solo se crea para esta macro

Se pueden crear macros que se ejecuten con lo que ocurre en una hoja}
Private variable1 defino la variable
Public variable1 la variable creada sirve para todos los archivos

Eventos
Private Sub y selecciono arriba a la derecha que quiero que haga
Private Sub (macro q se ejecuta solo en esta hoja)

También podría gustarte