You are on page 1of 17

Curso de Excel

Avanzado

INTRODUCCIN A VBA

J. David Moreno

TRABAJANDO CON
RANGOS

J. David Moreno

1
INTRODUCCIN A VBA
3

Para programar correctamente en VBA y


trabajar con Excel es obligatorio aprender a
trabajar con rangos (seleccionar, copiar,
pegar)

INTRODUCCIN A VBA
4

COPIAR UN RANGO Y PEGARLO EN OTRO


En
E E
Excell es muy normall copiar
i un conjunto
j t d de
datos y pegarlos en otro sitio.
Vamos a copiar los datos en las celdas A1 a B7 y
pegarlos en la celda D1.
Ejemplo:

Si no sabe como empezar,


puede usar la Grabadora de
Macros y examinar el cdigo
que genera.

2
INTRODUCCIN A VBA
5

GRABADORA DE MACROS
Usemos la grabadora de macros para ver el cdigo
que genera. Cdigo de la grabadora
PRIMERO hace seleccin
SEGUNDO: Copia
TERCERO: Selecciona
destino
CUARTO: Pega
QUINTO: anula modo copiar

Resultado de
ejecutar la
macro

INTRODUCCIN A VBA
6

CDIGO VBA DIRECTO


Cuidado
En VBA no es necesario SELECCIONAR un rango
determinado para trabajar con l.

Podemos copiar el Rango A1:B7 directamente


usando el mtodo Copy. Este permite indicar el
destino donde se copiar
copiar.

3
INTRODUCCIN A VBA
7

COPIAR UN RANGO DE TAMAO VARIABLE

En muchos casos queremos copiar un rango de celdas en el que


las dimensiones exactas (filas y columnas) se desconocen.

Ejemplo: En el fichero DatosPedidos.xls contiene datos de los


clientes de una empresa, pero cada da aparecen nuevos
clientes, as el nmero de filas no es fijo.

Queremos una macro que copie


este rango variable y lo pegue en la
hoja 1

INTRODUCCIN A VBA
8

CDIGO VBA

Debemos usar la propiedad CurrentRegion Que


devuelve el objeto Range que incluye el bloque
de celdas que rodean a la celda en concreto.

4
INTRODUCCIN A VBA
9

SELECCIONAR EL EXTREMO DE UNA FILA O COLUMNA

En Excel es muy comn seleccionar desde la celda actual todas las


celdas hasta el final de las columnas o de la fila
Se hace con Control+Mayuscula+Flecha
En VBA podemos usar el mtodo End
End es un mtodo del objeto Range
El mtodo End tiene solo un argumento que puede ser:
xlUp
xlDown
xlToLeft
xlToRight

INTRODUCCIN A VBA
10

Ejemplo: Usando el ejemplo de los pedidos


seleccionar todas las filas hasta el final de los
datos.

5
INTRODUCCIN A VBA
11

SELECCIONAR UNA FILA O UNA COLUMNA

Utilizamos la propiedad EntireColumn, que devuelve un Range


que es una columna.
Para seleccionar una fila usaremos EntireRow.

Ejemplo: La macro siguiente selecciona la columna de la celda


activa.

INTRODUCCIN A VBA
12

Ejercicio: Usando la propiedad EntireRow


cambie a negrita todas las celdas en la fila 4
del ejemplo de das de la semana.

Si lo hacemos con la grabadora


no usa EntireRow sino seleccin
diferente
Rows("4:4").Select
Selection.Font.Bold = True

6
TRABAJAR CON
FUNCIONES

Silvia Mayoral

INTRODUCCIN A VBA
14

Recordar que hay 2 tipos de procedimientos:


PROCEDIMIENTOS SUB y FUNCIONES.
Los procedimientos de Funciones se pueden usar:
A. Desde otro procedimiento en VBA
B. Desde una hoja de Excel, como cualquier otra funcin.

La diferencia, es que
Su cdigo sera: una funcin siempre
DEVUELVE UN VALOR
Function NombreFuncin(Arg1,Arg2,)
[Sentencias]
End Function

7
INTRODUCCIN A VBA
15

Podemos escribir directamente el cdigo en VBA,


i i i d con F
iniciando FunctionEnd
ti E dF
Fuction
ti
O darle al menu INSERTAR Elegir FUNCIN

INTRODUCCIN A VBA
16

Ejemplo: Supongamos que usted tiene que calcular el


rea de un rectngulo frecuentemente, y desea crear
una funcin que le de directamente este rea.
Area= Base * Altura Ahora vaya a Excel y
busque en FRMULAS
DEFINIDAS POR EL
Solucin cdigo: USUARIO

8
INTRODUCCIN A VBA
17

Podemos introducirlo as

O directamente al escribir el
nombre de la funcin
AreaRectang ya nos aparece
como una funcin

INTRODUCCIN A VBA
18

Usar una funcin dentro de un procedimiento SUB

Podemos ejecutar un procedimiento Funcin dentro de un


procedimiento SUB simplemente llamndola con los argumentos que
requiere y como debe dar un valor, es necesario asignarle una variable.

Ejercicio: Cree una macro que a travs de InputBox pida al usuario la base
y altura, y usando la funcin AreaRectang calcule el rea. Despus
muestre el resultado con MsgBox.

9
INTRODUCCIN A VBA
19

Solucin:

INTRODUCCIN A VBA
20

Para insertar funciones que no est grabado su cdigo en ese


mismo libro.
Si la funcin fue grabada en otro libro, puede usarla pero debe
indicar antes de la funcin el nombre del libro donde se grab.
=NombreLibro.xlsm!NombreFuncion(Arg1,Arg2)

Lo mejor si est en otro


lib es usar ell A
libro Asistente
i t t
para Funciones, y Excel
pone toda la ruta
directamente

10
INTRODUCCIN A VBA
21

Podemos introducir la definicin o explicacin a nuestra funcin siguiendo estos


pasos:
1. C
Cree lla F
Funcin
i en VBA
2. Seleccione en Excel men PROGRAMADORMACROS

3. Aqu aparecen solo los nombres de macros SUB. Tiene que introducir el
o b e de la
nombre a funcin
u c AreaRectang
ea ecta g
4. Clic en Opciones e introduzca la explicacin

CONTROLES DE
EJECUCIN

Silvia Mayoral

11
CONTROLES DE EJECUCION
23

VBA utiliza muchos trminos que se encuentran en muchos otros


lenguajes de programacin.
Estos trminos se usan para controlar el flujo de ejecucin.

If-Then

For-Next

With-End-With

SelectCase
Do While
Do Until

CONTROLES DE EJECUCION
24

Constructor If-Then
If Then

Una de las estructuras ms importantes, que da a las


aplicaciones la capacidad de tomar decisiones.

If condicion Then intrucciones End If (no necesario sino se salta de lnea)

Si la condicin es verdadera entonces se ejecuta una serie de


instrucciones. Si incluye Else, entonces se ejecutar otras
sentencias si la condicin no es verdadera.

12
CONTROLES DE EJECUCION
25

Constructor If-Then

Ejemplo:

Ejercicio:
j Construir una Sub qque si una celda es negativa
g le
reste 5 y te lo diga y en caso de que sea positivo sume 5 y te lo
ensee

CONTROLES DE EJECUCION
26

Solucin:

13
CONTROLES DE EJECUCION
27

Bucle For
For-Next
Next

Se utiliza para ejecutar una o ms instrucciones varias veces.

For contador To Final Instrucciones Next contador

CONTROLES DE EJECUCION
28

Constructor With-End With

Modo abreviado de usar varias propiedades o mtodos al mismo


objeto.

SIMPLIFICA MUCHO LA VIDA

14
CONTROLES DE EJECUCION
29

Constructor Select Case

Modo abreviado de escoger entre varias opciones.

Simplifica el no tener que hacer muchos If anidados

CONTROLES DE EJECUCION
30

Ejercicio: Estas preparado para hacer una funcin que calcule


unas comisiones sobre unas ventas (dato inicial), de forma que
la comisin cambia:
Ventas < 1.000 8%
Entre 1.000 y 10.000 10%
Entre 10.000 y 100.000 12%
Superiores a 100.000 14%
En caso que gane ms de 1.000 le de un mensaje de lo que has ganado
tio

15
CONTROLES DE EJECUCION
31

Solucin:

CONTROLES DE EJECUCION
32

Bucle Do.Loop Until

Estructura que ejecuta un bloque de sentencias un nmero indefinido


de veces hasta que una condicin llegue a ser True.

Do Until condicion . Sentencias .Loop


Do While Condicion Sentencias Loop

Cuidado no se ejecute de manera indefinida

16
Algunas Funciones Interesantes
33

Funcin que Escribe las Formulas que hay en una Hoja en Otra

Algunas Funciones Interesantes


34

Funcin que Habla lo que pone en una celda

Funcin que indica el usuario

17