Sie sind auf Seite 1von 40

Documento de la Universidad Carlos III

- Dpto. Economa de la Empresa

Curso de Excel
Avanzado
SESIN 2:
INTRODUCCIN A VBA
J. David Moreno

NDICE
2

VBA: programacin orientada a objetos

1.
1.

Definicin de los elementos en VBA


1.
2.
3.
4.
5.

Menu Depuracin (paso a paso)


Objetos y Colecciones
Propiedades
Mtodos
Variables

Usando InputBox y MsgBox y el menu Depuracin

2.
1.
2.

InputBox
MsgBox

Trabajando con Rangos

3.
1.
2.
3.
4.
5.

Copiar un rango
Copiar un rango de tamao variable
Seleccionar el extremo de la fila o columna
Seleccionar una fila o una columna
Mover un rango

Trabajar con funciones

4.
1.
2.
3.

Crear y modificar funciones


Funciones con argumentos
Crear Funciones personalizadas en Excel

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A LAS
MACROS Y VBA
J. David Moreno

INTRODUCCIN A VBA
4

Hay

muchas macros que no pueden ser realizadas


simplemente con la grabadora, y debemos escribir nosotros
el cdigo.
n Por

ejemplo, siempre que aparece un bucle, o una eleccin entre


varias alternativas (If then.)

Debemos
1.
2.
3.
4.
5.

definir algunos conceptos:

Objetos
Colecciones
Propiedades
Mtodos
Procedimientos Sub y Funciones

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
5

Primeros pasos con el Editor de VBA


1.
2.

3.

Pulsar Alt+F11 para activar la ventana del Editor de VBA


En la ventana proyecto busque el libro donde est
trabajando
Inserte un mdulo (2 formas de hacerlo)

Modulo es un
contenedor de
programas de VBA

INTRODUCCIN A VBA
6

RECOMENDACIONES PARA ESCRIBIR CDIGO


1.

Debe usar sangrados para que sea ms legible

2.

Puede usar lneas en blanco

3.

Inserte comentarios, con apostrofo ()

4.

Si una sentencia es muy larga puede ponerla en 2 lneas


Con un espacio antes
con guin bajo (_)

5.

Cuando escriba una sentencia y pulse INTRO para pasar


a la lnea siguiente si no es correcta dar error.

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

En un mdulo podemos
tener ms de 1
procedimiento (macro)

En un libro de
Excel se puede
tener uno o ms
Mdulos

Puedo cambiar
nombre del Modulo
en VENTANA
PROPIEDADES

INTRODUCCIN A VBA
8

Macro
Procedimiento

Un conjunto de instrucciones de VBA que se realizan de forma automtica

Es otra forma de llamar a una macro.


Pueden ser de 2 tipos: Procedimiento Sub o Funcin

Objeto

Un elemento que se manipula desde VBA.


Ejemplos de objetos son: libro, rangos, grficos,

Mdulo

Un contenedor de cdigo VBA


Donde se escribe el cdigo de procedimientos o macros

Propiedad
Mtodo

Material elaborado por David Moreno

Un aspecto particular de un objeto.


Ejemplo: El objeto rango tienen propiedades como Height, Value,

Una accin que se realiza sobre un objeto.


Ejemplo: Aplicar el mtodo clear a un objeto rango hace que se elimine todo el contenido de esas
celdas.

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
9

VBA permite manipular objetos.


Excel tiene ms de 100 clases de objetos (ejemplo, un
libro, una hoja, un rango de una hoja, un grfico, etc)
Los objetos disponen de una jerarqua y actan como
contenedores de otros objetos.

Excel es en si mismo un objeto (Application) y contiene otros objetos


como el objeto workbook (libro de excel). El objeto workbook continen
otros objetos como el objeto Worksheet o Chart. Un objeto Workbook
puede contener otros objetos como el objeto Range.

Los

objetos tiene propiedades y mtodos


n
n

Una propiedad es un valor de una caracterstica de un objeto.


Un mtodo es una accin que se realiza con el objeto.

INTRODUCCIN A VBA
10

COLECCIONES
Todos

los objetos que son iguales o parecidos forman


una coleccin.
A.
B.
C.
D.

Coleccin Worksheets Formada por todas las hojas de


un libro particular
Coleccin Workbooks Formado por todos los libros de
trabajo
Coleccin ChartObjects Formado por todos los grficos
Coleccin Windows Coleccin de objetos window

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
11

JERARQUA DE OBJETOS EN VBA


Application

Windows

Cuando escribamos
cdigo VBA y queramos
referirnos a un objeto,
debemos especificar su
posicin en la jerarqua
de objeto.
Usando un punto como
separador

Workbooks

Charts

Worksheets

ChartObject

Range
Ejemplos con el Libro1 y Hoja 1
Application.Workbooks(Libro1).Worksheets(Hoja1).Range(B1:B5).Propiedad
Application.Workbooks(Libro1).Worksheets(Hoja1).Range(B1:B5).Metodo

INTRODUCCIN A VBA
12

Ejemplo 1: Para hacer referencia a un objeto libro


llamado Ventas.xls
n Application.Workbooks(Ventas)

Ejemplo 2: Para hacer referencia a un objeto hoja 1


dentro del libro Ventas
n Application.Workbooks(Ventas).Worksheets(Hoja1)

Ejemplo3: Dentro de estos objetos podemos referirnos a


una celda concreta D10.
n Application.Workbooks(Ventas).Worksheets(Hoja1).Ran

ge(D10)

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
13

OMITIENDO LAS REFERENCIAS ESPECFICAS


Si omitimos las referencias especficas, Excel utilizar
los objetos activos.

Ejemplo3

de la transparencia anterior se puede


tambin escribir as:
n Range(D10)
n Worksheets(Hoja1).Range(D10)

Se puede escribir as si la
Hoja1 del Libro Ventas es
ahora la hoja activa

n Workbooks(Ventas).Worksheets(Hoja1).Range(D1

0)
n Application.Workbooks(Ventas).Worksheets(Hoja1)
.Range(D10)

INTRODUCCIN A VBA
14

PROPIEDADES DE OBJETOS
Todos

los objetos tienen propiedades que son como


atributos o caractersticas de ese objeto.
Algunas propiedades son solo de lectura, pero otras se
pueden modificar.
Para referirnos a una propiedad de un objeto
debemos identificar el objeto un punto y el nombre de
la propiedad.
Ejemplo: Dar valor igual a 100 al objeto Rango.
n Range(D10).Value

Material elaborado por David Moreno

= 100

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
15

VBA nos ayuda a identificar las propiedades y


mtodos de los objetos.
Cuando empezamos a escribir nos muestra un
desplegable con las diferentes propiedades y
mtodos.

mtodos

Propiedades

INTRODUCCIN A VBA
16

Ejemplo de propiedades de solo lectura en un


objeto Rango son:
Propiedad

column: Range(D10).Column
Porpiedad row: Range(D10).Row

Ejemplo de propiedad que no es de solo lectura en


un objeto Rango es
Propiedad

formula:

n Range(D10).Formula=

=SUM(A1:A5)
=$A1$+5*B$1

Funciones deben ir
en ingls

n Range(B2:B3).Formula=

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
17

AYUDA DE VBA
Situado en el Editor de Visual,
si hacemos clic F1

Para ver todas las propiedades y


mtodos de un objeto, clic en
MIEMBROS DE OBJETO

Perico Delgado en los Lagos de Covadonga, 1987

18

da, F1
u
y
a
la
r
a
n
e
r
t
n
e
Hay que

Material elaborado por David Moreno

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
19

Podemos analizar con detalle cmo funciona nuestro


cdigo en VBA, ejecutando paso a paso cada
instruccin.
Men Depuracin
Paso a paso por
instrucciones

Puede ser ms conveniente aadir


la barra de Edicin
VERBARRA
HERRAMIENTAS
DEPURACIN

INTRODUCCIN A VBA
20

Es conveniente aadir la Ventana Locales, para


ejecutar el cdigo paso a paso.
De esta forma podemos ir viendo el valor de cada
variable.

Material elaborado por David Moreno

10

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
21

Ejemplo: Ejecutar el cdigo paso a paso, y con la


Ventana Locales para la macro del ejemplo 2 que
hemos presentado en la funcin MsgBox.
Click en PASO A
PASO o
simplemente F8

Aqu podemos ver


valor de las variables

INTRODUCCIN A VBA
22

Tambin podemos ver el valor de una variable si


ejecutamos el cdigo paso a paso, y situamos el
ratn justo encima

Material elaborado por David Moreno

11

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
23

Examinador de Objetos en Excel


Es

un mapa o manual de instrucciones de los diferentes


objetos, propiedades y mtodos de VBA.

Podemos activarlo
estndo en la ventana
del Editor de VBA y
pulsando F2

Haciendo clic
aqui

INTRODUCCIN A VBA
24

Si buscamos por ejemplo la palabra Application, nos informa


de todas las propiedades y mtodos asociadas a este objeto

Material elaborado por David Moreno

12

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
25

Propiedades de objeto Application

.Caption

Devuelve ruta de acceso al archivo

.ActiveSheet

Devuelve la celda activa

Devuelve la hoja activa

.Selection

Devuelve el objeto actualmente


seleccionado

.Name

Devuelve nombre del libro

.Path

.Path

Ttulo de la ventana principal de Excel

.ActiveCell

Propiedades del objeto Workbook

Devuelve la ruta de acceso al archivo


del libro

.Saved

Devuelve true/false. Si es verdadero no


se han hecho cambios en el libro. Si es
falso, ha habido cambios y no se han
salvado.

Muchas de estas propiedades son tambin un


objeto (devuelve un objeto). As, tendrn sus
propiedades: .Name, .Value,

INTRODUCCIN A VBA
26

Ejercicio: Realice una macro que muestre en un mensaje la ruta donde tiene
grabado su archivo de Excel.
Si no ponemos una variable

c = Application.Path
(c) que recoja la informacin
MsgBox (La ruta de acceso a este archivo es " & c)nos dar error

Ejercicio: Realice una macro que cambie el ttulo de la ventana principal de


excel con el siguiente nombre: Excel Pruebas VBA Uc3m.
Application.Caption = Excel Pruebas VBA Uc3m"

Ejercicio: Realice una macro que indique en un mensaje la columna de la


celda activa en la hoja de Excel.
MsgBox ActiveCell.Column
n

Tambin puede escribirse as

d=ActiveCell.Column
MsgBox (La celda activa se encuentra en la columna letra & d)

Material elaborado por David Moreno

13

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
27

Ejercicio: Realice una macro que indique en un nico


mensaje la fila y columna de la celda activa.
d = ActiveCell.Column
e = ActiveCell.Row
MsgBox ("La celda activa esta en fila " & e & " y columna " & d)

Ejercicio: Repita la macro anterior, pero muestre el


mensaje de la fila y la columna en diferentes lneas.
Busque en la ayuda (F1) de MsgBox para hacerlo.
d = ActiveCell.Column
e = ActiveCell.Row
MsgBox ("La celda activa esta en fila " & Chr(13) & e & Chr(13) & " y columna " & Chr(13)
& d)

INTRODUCCIN A VBA
28

Ejercicio: Repita la macro anterior pero como la lnea de


cdigo de MsgBox es muy larga escrbala en 2 lneas de
cdigo usando guin bajo (_).
d = ActiveCell.Column
e = ActiveCell.Row
MsgBox ("La celda activa esta en fila " _
& Chr(13) & e & Chr(13) & " y columna " & Chr(13) & d)

Guin bajo

Ejercicio: Cree una macro que muestre en un mensaje el


valor de cualquier celda activa.

Si la celda activa no tiene ningn valor, el mensaje saldr vaco,


sino mostrar el valor de esa celda.

valor = Application.ActiveCell.Value
MsgBox valor

Material elaborado por David Moreno

14

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
29

Ejercicio: Crear una macro que muestre en un


mensaje (usando MsgBox) la fila de la celda activa.
En ese mensaje debe cambiar el ttulo de la
ventana emergente por Mensaje de Informacin,
y deben aparecer 2 botones en la ventana
emergente (Yes y No).
e = ActiveCell.Row
Msg = "La fila y columna de la celda activa son: " e & d
ComboBotones = vbYesNo
Titulo = Mensaje de informacin"

Muy importante cmo


meter opciones en el
comando MsgBox

Respuesta = MsgBox(Msg, ComboBotones, Titulo)

INTRODUCCIN A VBA
30

Propiedades de objeto Worksheet

.Index

Devuelve el ndice numrico de la


hoja dentro de la coleccin de hojas

Propiedades del objeto Range

.Count

.Name

.Value

.Name

Devuelve nombre de la hoja

.UsedRange
Seleccin el rango completo de la
hoja (selecciona hasta la ultima fila y
columna donde hay algn dato)

Alguno de estas propiedades son tambin


un objeto (devuelve un objeto). As, tendrn
sus propiedades: .Name, .Value,

Material elaborado por David Moreno

Devuelve el nmero de celdas contenidas en ese rango


especificado

Devuelve el nombre de ese rango

Devuelve el valor de ese rango.


Si son varias celdas devuelve una matriz

.Formula

Devuelve la formula contenida en la celda


Es decir, lo que aparece en la barra de formulas

.Text

.Font

El valor formateado a string de lo que hay en la celda

Contiene atributos de fuente (.Name, .size, .Color,.


Bold, .Italic,)

15

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
31

Ms propiedades del objeto Range

Interior

.EntireRow

Todo lo referido al interior del objeto (.Color, .Pattern, .PaternColor,)

Devuelve un objeto Range que representa toda la fila (o filas) que contiene el rango
especificado.

EntireColumn

.Offset(Rowoffset,Columnoffset)

.Row

Se refiere al rango desplazado (filas,columnas) desde le rango especificado

Devuelve el nmero de la primera fila

.Column

Devuelve objeto Range que representa toda la columna/s que contiene el rango especificado

Devuelve el nmero de la primera columna

.End

Devuelve un objeto range que representa la celda situada al final de la regin que
contiene el rango de origen.

Equivale a presionar las teclas FIN+FLECHA ARRIBA, FIN+FLECHA ABAJO, FIN


+FLECHA IZQUIERDA o FIN+FLECHA DERECHA

INTRODUCCIN A VBA
32

Ejercicio: Cree una macro que seleccione el rango


de datos que hay en la hoja de Excel. Antes
introduzca estos datos en la hoja de Excel. Utilice la
funcin: .UsedRange

ActiveSheet.UsedRange.Select

Material elaborado por David Moreno

Muy importante ver que UsedRange


genera un objeto Rango, por tanto,
tendr las mismas propiedades y
mtodos que cualquier objeto
Rango.
- .Count
-.

16

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
33

Solucin al ejercicio anterior

INTRODUCCIN A VBA
34

Ejercicio: Cree una macro que cuente el nmero


total de datos de una hoja de Excel en un mensaje.
Suponga los mismos datos que en el ejercicio
anterior. Por tanto, la solucin sera 8 datos.
d=ActiveSheet.UsedRange.Count

Solucin

MsgBox d

Material elaborado por David Moreno

17

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
35

MTODOS DE OBJETOS
Todos

los objetos tienen mtodos que son acciones que


se pueden realizar con ese objeto.

Por

ejemplo, los objetos Range tienen un mtodo .Clear,


que lo que hace es borrar el contenido de las celdas en
el rango seleccionado.
Usar con el ejemplo anterior
de datos

Range(A1:B5).Clear

Otro

ejemplo, del objeto Application es el


mtodo .Quit, que cierra la aplicacin Excel.
Application.Quit

INTRODUCCIN A VBA
36

Mtodos del objeto Application

.Calculate

Cierra Excel

Equivale a hacer doble click en la


celda activa

.InputBox

Muestra un cuadro dialogo para que


el usuario introduzca informacin.

Material elaborado por David Moreno

.Open

Crea un libro nuevo

Activa el libro especificado

.Save

De la coleccin
de workbooks

.Activate

Abre un libro existente

.Add

.DoubleClick

.Quit

Recalcula todas las frmulas de todas


las hojas, de todas las hojas, de todos
los libros abiertos

Mtodos del objeto Workbook/s

Guarda el libro con el nombre actual

.SaveAs

Guarda el libro con un nuevo nombre

18

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
37

Mtodos del objeto Worksheet/s

.Active

.Calculate

Recalcula todas las frmulas de la


hoja especificada

.Paste

Activa la hoja especificada

Pega el contenido del portapapeles


en la hoja

.PrintOut

Imprime el objeto

Mtodos del objeto Range

.Select

.Activate

Borra valores del rango.


Pero mantiene el formato, reglas,

.PasteSpecial

Copia el rango en otro rango.


Si no se pone destino lo copia en portapapeles.

.ClearContents

Activa una sola celda (para ms de 1 celda usar


Select)

.Copy

Selecciona el rango (de 1 o ms celdas)

Pega el rango copiado especificando el tipo de


pegado

.Delete

Elimina el rango

Parix-Roubaix, La Clasica de las clsicas, 256Km

y
BA ha
V
r
e
d
o
pren
Para a sta el fond
ha
barro

rse en
e
t
e
m
que

el

38

Material elaborado por David Moreno

19

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
39

Ejercicio: Realice una macro que en la Hoja2 del libro


en que est trabajando rellene las celdas A1 a A10
con el valor 50. Luego debe copiar el valor de la celda
A10 en la celda A11.
Worksheets("Hoja2").Activate
Worksheets("Hoja2").Range("A1:A10") = 50
Range("A10").Copy
Range("A11").PasteSpecial
O tambin:
Worksheets("Hoja2").Activate
Worksheets("Hoja2").Range("A1:A10") = 50
Range("A10").Copy([A11])

INTRODUCCIN A VBA
40

El ejercicio anterior tambin se puede resolver as:


Worksheets("Hoja2").Activate
Worksheets("Hoja2").Range("A1:A10") = 50
Range("A10").Copy Destination:=Range("A11")

Material elaborado por David Moreno

20

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
41

Ejercicio: Usando los datos del ejercicio anterior,


realice una macro que en la Hoja2 del libro en que
est trabajando rellene la celda A11 con la suma
de las celdas A1:A10 (total debe dar 500). Luego
debe copiar ese valor en la Celda C15 del mismo
libro pero en la Hoja1.
Worksheets("Hoja2").Activate
Worksheets("Hoja2").Range("A1:A10") = 50
Range("A11").Formula = "=sum(A1:A10)"
Range("A11").Copy Destination:=Worksheets("Hoja1").Range("C15")

INTRODUCCIN A VBA
42

Ejercicio: Realice una macro exactamente igual que


en el ejercicio anterior, pero copie el resultado de
la frmula, no la formula en si.
Worksheets("Hoja2").Activate
Worksheets("Hoja2").Range("A1:A10") = 50
Range("A11").Formula = "=sum(A1:A10)"
Range("A11").Copy
Worksheets("Hoja1").Range("C15").PasteSpecial xlPasteValues

Material elaborado por David Moreno

21

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
43

VARIABLES
En todos los lenguajes de programacin (C++,
Fortran,) debemos definir las variables con las
que trabajaremos.
En VBA no es necesario declarar las variables
explcitamente antes de usar el cdigo.
Excepto que
Aunque es muy recomendable hacerlo.
introduzcamos al
inicio del cdigo la
Para declarar una variable

instruccin: Option
explicit

DIM NombreVariable As TipoDeDatos

INTRODUCCIN A VBA
44

Tipo Integer

Variables con datos enteros

Tipo Double

Variables con decimales precisin doble (decimal de 8


bytes)

DIM Var1 As Integer

DIM Var1 As Double

Tipo Single

Variable con datos decimales precisin sencilla (decimal de


4 bytes)
DIM Var1 As Single

Tipo String

Variable de texto

Tipo Bolean

Material elaborado por David Moreno

DIM Var1 As String

Variable de tipo lgico (verdadero o


falso)
DIM Var1 As Bolean

22

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
45

En VBA hay un tipo de variable especial, VARIANT,


que recoge cualquier tipo de datos (string, double,).
VARIABLES PBLICAS O LOCALES
LOCALES:

Se definen solo para un procedimiento o un


mdulo de VBA. Usando Dim

PUBLICAS:

Se define para que est disponible para todos


los procedimientos de todos los mdulos de VBA de un
proyecto. Usando PUBLIC
PUBLIC NombreVariable As TipoDeDatos

INTRODUCCIN A VBA
46

CONSTANTES
En

este caso la variable no cambia de valor al


ejecutarse un procedimiento. Se definen con la
sentencia CONST
CONST NombreVariable As TipoDeDatos

Ejemplo:
Const TipoInteres As Double
TipoInteres=0.025
Para

definirlas de forma pblica, usar PUBLIC CONST

PUBLIC CONST NombreVariable As


TipoDeDatos

Material elaborado por David Moreno

23

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
47

DECLARACIN DE MATRICES
Una

matriz se declara igual que otra variable (usando DIM,


PUBLIC, PRIVATE)
La diferencia es que en una matriz debemos especificar su
tamao.
n Matriz

fija: Matriz de tamao fijo para todo el programa

DIM NombreMatriz(N,M) As TipoDeDatos

Ejemplo: Dim MatrizReturns(2,99) As Double

n Matriz

Matriz de tamao 3 filas y


100 columnas
Option Base =0 Default

dinmica: Matriz cuyo tamao puede ir cambiando.

PUBLIC NombreVariable As TipoDeDatos


n

Ejemplo: Dim MatrizReturns() As Double

USANDO InputBox Y
MsgBox
Y EL MEN DEPURACIN
J. David Moreno

Material elaborado por David Moreno

24

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
49

InputBox (Funcin)

Sintaxis

Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un


texto o haga clic en un botn y devuelve una variable con el contenido
introducido.
InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

Ejemplo 1:
Dim Numero1to10 As Integer
Numero1to10= InputBox("Ingrese un nmero entero del 1 al 10")

Ejemplo 2:
Dim Numero1to10 As Integer
Dim Mensaje, Titulo
Mensaje="Ingrese un nmero entero del 1 al 10
Titulo=Ventana de Ejemplo 2
ValorPredeter=1
Numero1to10= InputBox(Mensaje, Titulo, ValorPredeter)

INTRODUCCIN A VBA
50

MsgBox (Funcin)

Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn.
Puede devolver un tipo Integer correspondiente al botn elegido por el usuario.

Sintaxis

MsgBox(prompt[, buttons][, title][, helpfile, context])

Ejemplo 1:
Dim MiEdad As Integer
MiEdad = InputBox("Introduzca su Edad en aos")
MsgBox ("Usted ha informado que su edad es " & MiEdad)

Ejemplo 2:
Dim MiEdad As Integer
Dim Mensaje, Titulo, Estilo
MiEdad = InputBox("Introduzca su Edad en aos")
Mensaje = "Su edad es " & MiEdad & " aos. Es correcto?"
Titulo = "Ventana comprobacin datos introducidos"
Estilo = vbYesNo
Respuesta = MsgBox(Mensaje, Estilo, Ttulo)

Material elaborado por David Moreno

25

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
51

Ejercicio: Cree una macro donde defina 2 variables


Precio y Unidades vendidas. Precio deber ser de
tipo Currency o single, y unidades vendidas integer.
Defina otra variable que ser Ventas, y calcule su
valor.
Para introducir el valor de las 2 primeras variables
use la funcin InputBox, y para mostrar el valor de
las ventas use MsgBox.

INTRODUCCIN A VBA
52

Solucin:

Public Sub Ventas()


Dim Precio, Ventas As Currency
Dim Unidades As Integer
Unidades = InputBox("Ingrese las unidades vendidas")
Precio = InputBox("Ingrese el precio por unidad (en euros)")
Ventas = Unidades * Precio
Mensaje = "La cifra de ventas es: " + Chr(10) & Ventas & " euros"
MsgBox (Mensaje)
End Sub

Material elaborado por David Moreno

26

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
53

Solucin

Como no se ha definido
aparece como Variant

INTRODUCCIN A VBA
54

Ejercicio: Realice exactamente el mismo ejercicio


que antes pero en este caso almacene las variables
Precio y Unidades vendidas en una matriz de
tamao (2 filas x 1 columna) en vez de en 2
variables diferentes.
Defina

la matriz como tipo Double.

Material elaborado por David Moreno

27

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
55

Solucin

Public Sub VentasMatrix()


Dim MatrizData(1) As Double
Dim Ventas As Double
Dim Mensaje As String
MatrizData(0) = InputBox("Ingrese las unidades vendidas")
MatrizData(1) = InputBox("Ingrese el precio por unidad (en euros)")
Ventas = MatrizData(0) * MatrizData(1)
Mensaje = "La cifra de ventas es: " + Chr(10) & Ventas & " euros"
MsgBox (Mensaje)
End Sub

INTRODUCCIN A VBA
56

Solucin

Material elaborado por David Moreno

28

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

TRABAJANDO CON
RANGOS
J. David Moreno

INTRODUCCIN A VBA
58

Para programar correctamente en VBA y trabajar


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

Material elaborado por David Moreno

29

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
59

COPIAR UN RANGO Y PEGARLO EN OTRO


En

Excel es muy normal copiar un conjunto 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.

INTRODUCCIN A VBA
60

GRABADORA
n Usemos

DE MACROS

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

Material elaborado por David Moreno

30

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
61

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.

INTRODUCCIN A VBA
62

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:

Esta hoja 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 2

Material elaborado por David Moreno

31

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
63

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.

INTRODUCCIN A VBA
64

Si no sabe como empezar, puede


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

GRABADORA DE MACROS

Tenemos que ir a BUSCAR Y


SELECCIONAR

IR A ESPECIALRegin
Actual

Material elaborado por David Moreno

32

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
65

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:
n
n
n
n

xlUp
xlDown
xlToLeft
xlToRight

INTRODUCCIN A VBA
66

Ejemplo: Usando el ejemplo de los das de la


semana seleccionar todas las filas hasta el final de
los datos.

Material elaborado por David Moreno

33

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
67

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
68

Ejercicio: Seleccione la columna donde se sita la


celda A1

Material elaborado por David Moreno

34

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
69

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

INTRODUCCIN A VBA
70

MOVER UN RANGO (CORTAR Y PEGAR)


Para

cortar un determinado rango y pegarlo en otra


zona de la hoja de Excel debemos usar el mtodo Cut.
n

Usando el mtodo Cut no es necesario 1 seleccionar, 2 cortar, 3


seleccionar destino, se puede hacer en una sola lnea

Ejemplo:

En el ejemplo de los das de la semana cortar los


datos del lunes (A1:B1) y pegarlo al final de la tabla
(despus del domingo, A8)

Material elaborado por David Moreno

35

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

TRABAJAR CON
FUNCIONES
J. David Moreno

INTRODUCCIN A VBA
72

Recordar que hay 2 tipos de procedimientos:


PROCEDIMIENTOS SUB y FUNCIONES.
Los procedimientos de Funciones se pueden usar:
A.
B.

Desde otro procedimiento en VBA


Desde una hoja de Excel, como cualquier otra funcin.

Su cdigo sera:

La diferencia, es que una


funcin siempre DEVUELVE
UN VALOR

Function NombreFuncin(Arg1,Arg2,)
[Sentencias]

End Function

Material elaborado por David Moreno

36

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
73

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

Solucin cdigo:

Function AreaRectang(Base, Altura)

Ahora vaya a Excel y busque


en FRMULAS DEFINIDAS
POR EL USUARIO

AreaRectang = Base * Altura


End Function

INTRODUCCIN A VBA
74

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

Material elaborado por David Moreno

37

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
75

Podemos escribir directamente el cdigo en VBA,


iniciando con FunctionEnd Fuction
O darle al menu INSERTAR Elegir FUNCIN

INTRODUCCIN A VBA
76

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.

Material elaborado por David Moreno

38

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
77

Solucin:

Public Sub AreaUsuario()


Dim Area1, Base1, Altura1 As Double
Dim Mensaje As String
Base1 = InputBox("Introduzca la base del rectngulo")
Altura1 = InputBox("Introduzca la altura del rectngulo")
Area1 = AreaRectang(Base1, Altura1)
Mensaje = "El rea de este rectangulo es " & Area1
MsgBox (Mensaje)
End Sub

INTRODUCCIN A VBA
78

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
libro es usar el Asistente
para Funciones, y Excel
pone toda la ruta
directamente

Material elaborado por David Moreno

39

Documento de la Universidad Carlos III


- Dpto. Economa de la Empresa

INTRODUCCIN A VBA
79

Podemos introducir la definicin o explicacin a


nuestra funcin siguiendo estos pasos:
1.
2.

3.

4.

Cree la Funcin en VBA


Seleccione en Excel men PROGRAMADORMACROS

Aqu aparecen solo los nombres de macros SUB. Tiene que


introducir el nombre de la funcin AreaRectang
Clic en Opciones e introduzca la explicacin

Material elaborado por David Moreno

40

Das könnte Ihnen auch gefallen