+ All Categories
Home > Documents > Curso Macros

Curso Macros

Date post: 07-Jan-2016
Category:
Upload: juand100893
View: 39 times
Download: 0 times
Share this document with a friend
Description:
macros
Popular Tags:
113
7/17/2019 Curso Macros http://slidepdf.com/reader/full/curso-macros 1/113 Sub holamundo() ActiveWorkbook.Sheets(1).Activate ActiveSheet.Range("A6").Activate ActiveCell = "ola mundo"  !!!!!!!!!!!!!!!! Sub estilos() ActiveWorkbook.Sheets(1).Activate ActiveSheet.Range("A#$").%ont.Color = vb&reen ActiveSheet.Range("a#d").'nterior.Color = R&(1* 1+* 1,) -nd Sub -. andera ActiveWorkbook.Sheets(1).Activate Range("1#1").'nterior.Color = vb/ello0 Range("#").'nterior.Color = vblue Range("+#+").'nterior.Color = vbRed Range("a#a").'nterior.Color = R&(1,* 1,* 1,) $-%''R 2A 3AR'A4- # $'5 5R- 3AR'A4-7'8 3AR'A4-  7'8 $- $A7 '7-R3A4 /7- 9 A 4-A 7R2- %A4S- '7-&-R :+;6, A +;6; 4& :1<;<,+6<, A 1<;<,+6<; $24- :1*;,; - +9, A :<*< -:+< -&A7'3S <<-:+< A 1*;;e +9, >ositivos
Transcript
Page 1: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 1/113

Sub holamundo()

ActiveWorkbook.Sheets(1).Activate

ActiveSheet.Range("A6").Activate

ActiveCell = "ola mundo"

 !!!!!!!!!!!!!!!! 

Sub estilos()

ActiveWorkbook.Sheets(1).Activate

ActiveSheet.Range("A#$").%ont.Color = vb&reen

ActiveSheet.Range("a#d").'nterior.Color = R&(1* 1+* 1,)

-nd Sub

-. andera

ActiveWorkbook.Sheets(1).Activate

Range("1#1").'nterior.Color = vb/ello0

Range("#").'nterior.Color = vblue

Range("+#+").'nterior.Color = vbRed

Range("a#a").'nterior.Color = R&(1,* 1,* 1,)

$-%''R 2A 3AR'A4- #

$'5 5R- 3AR'A4-7'8 3AR'A4-

 7'8 $- $A7 '7-R3A4

/7- 9 A

4-A 7R2- %A4S-

'7-&-R :+;6, A +;6;

4& :1<;<,+6<, A 1<;<,+6<;

$24- :1*;,; - +9, A :<*< -:+< -&A7'3S

<<-:+< A 1*;;e +9, >ositivos

Page 2: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 2/113

$-C'5A4 +9 >osiciones des>ues de la *

$A7- 1 enero 199 al +1 diciembre

S7R'& cadenas caracteres

-#

Sub bandera() este es el nombre de la macro

$im suma As $ouble

$im >romedio As $ouble

ActiveWorkbook.Sheets(1).Activate

Range("a+").Activate

While (ot ('s-m>t?(ActiveCell))) =@ se utilia >ara recorrer

suma = 3al(ActiveCell.Bset(9* 1)) ! 

 3al(ActiveCell.Bset(9* )) ! 

 3al(ActiveCell.Bset(1* 9))

>romedio = suma D +

ActiveCell.Bset(9* <) = >romedio

ActiveCell.Bset(1* 9).Activate

Wend

-nd Sub

::::: 3A4 =@ vuelve una cadena de caracteres en ti>o numErico

5acro crea e variables

$eFne la hora en Ge

Sub bandera() este es el nombre de la macro

Page 3: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 3/113

$im suma As $ouble

$im >romedio As $ouble

ActiveWorkbook.Sheets(1).Activate

Range("a+").Activate

While (ot ('s-m>t?(ActiveCell))) =@ se utilia >ara recorrer

suma = 3al(ActiveCell.Bset(9* 1)) ! 

 3al(ActiveCell.Bset(9* )) ! 

 3al(ActiveCell.Bset(1* 9))

>romedio = suma D +

ActiveCell.Bset(9* <) = >romedio

ActiveCell.Bset(1* 9).Activate

Wend

-nd Sub

MAYO 4,13

Ej. Base Altura Area

Sub hallararea()

$im base As $ouble

$im altura As $ouble

$im area As $ouble

ActiveWorkbook.Sheets(1).Activate

Range("A").Activate

While (ot ('s-m>t?(ActiveCell)))

base = 3al(ActiveCell)

altura = 3al(ActiveCell.Bset(9* 1))

area = base H altura

ActiveCell.Bset(9* ) = Str(area)

activell.Bset(1* 9).Activate

Page 4: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 4/113

Wend

-nd Sub

 !!!!!!!!!!!!!!!!!!!!!!! 

OPERADORES VBA

-s un elemento Gue me >ermite relacionar variables ? constantes . -em>lo elH (o>eraciones aritmEticos * lIgicos ? relacionales).

>eradores AritmEticos =@ os >ermiten realiar todas las o>eracionesmatemJticas

Suma

: Resta

H 5ulti>licaciIn

D $ivisiIn

K $ivisiIn entera

5od mIdulo de la divisiIn

L eM>onente ( altgr L)

-n este orden se deben utiliar

L Se evalua de >rimero*

() de segundo lugar

HK D ? mod tercer lugar

: cuarto lugar

8-RA$R-S 4&'CS#

5a?or Gue

5enor Gue

5a?or o igual Gue

5anor o iGual Gue

Page 5: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 5/113

'gual Gue

$iNerentes

19@9

19

;9 @=9

19O=19

1=

O@

8-RA$R-S 4&'CS # os >ermiten establecer relaciones entre valoresbooleanos.

>erador SigniFcado

And ?

r I

ot no

$ato 1 $ato not(dato1) $ato 1 and dato dato 1 or dato % % 3 % %% 3 3 % 33 % % % 33 3 % 3 3

-S7R2C72RAS C$'C'A4-S#

3A manea + estructuras

'%

'N else i

Select case

-. '%

'%(CondiciIn thenP..

Acciones

Si la acciIn es verdadera P.. continua

-nd iN.

. 'N else (nos >ermite si la condiciIn es verdadera I Nalta)

Page 6: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 6/113

-. 'N(condicioon)then

.

.

Acciones

Si la condiciIn es verdadera

.

.else

.

.

Acciones si la condiciIn es Nalta

.

.

End if.

S-4-C7 CAS-#

Select case 3ariable

Case 3alor 1#

P. Acciones P..

Case valor

P.acciones P.

Case valor +

P. Acciones P

Case else#

.

.

Acciones

.

.

Page 7: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 7/113

End select

Ej.

Sub cnce!t"#

Sub cnce!t"#

Acti$e%r&b&.S'eets"()ja*(#.Acti$ate

Acti$eS'eet.Ran+e"(a*(#.Acti$ate

%'ile "t "-sE!t/"Acti$e0ell###

Select 0ase Val"Acti$e0ell.Oset"2, 4##

0ase 2 1.5

Acti$e0ell.Oset"2, 6# 7 (De8ciente(

0ase * *.5

Acti$e0ell.Oset"2, 6# 7 (-nsu8ciente(

0ase 3 3.5

Acti$e0ell.Oset"2, 6# 7 (Ace!table(

0ase 4 4.45

Acti$e0ell.Oset"2, 6# 7 (Sbresaliente(

0ase 4, 9 95

Acti$e0ell.Oset"2, 6# 7 (E:celente(

0ase Else

Acti$e0ell.Oset"2, 6# 7 (Predi n $alid(

End Select

Acti$e0ell.Oset"1, 2#.Acti$ate

%end

End Sub

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 8: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 8/113

Eje!l <rea del trian+ul circul rect<n+ul

Sub 8+ura"#

Acti$e%r&b&.S'eets"()ja3(#.Acti$ate

Acti$eS'eet.Ran+e"(a*(#.Acti$ate

%'ile "t "-sE!t/"Acti$e0ell###

Select 0ase "Acti$e0ell#

0ase (rian+ul(

Acti$e0ell.Oset"2, 3# 7 Acti$e0ell.Oset"2, 1# = Acti$e0ell.Oset"2, *#> *

0ase (0ircul(

Acti$e0ell.Oset"2, 3#.?rula 7 (7""( @ Acti$e0ell.Oset"2,

1#.Address @ (#*#=!i"#(

0ase (Rectan+ul(

Acti$e0ell.Oset"2, 3# 7 Acti$e0ell.Oset"2, 1# = Acti$e0ell.Oset"2, *#

End Select

Acti$e0ell.Oset"1, 2#.Acti$ate

%end

End Sub

Ejecutar acr cn f9

;;;;;;;;;;;;;;;;;;;;;;

0-0OS REPE--VOS 5

%'ile

D C'ile

?r C'ile

%'ile(condiciIn)

:::: acciones ..

Page 9: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 9/113

%end

$o 0hile(condiciIn)

..

Acciones

..

!

%or variable=valor inicial to valor inicial

:::::acciones ::::

e:t $ariable

0OMADOS -ERA00-O 0O E SAR-O 5

?unciFn -n!utb:

3ariable=in>utboM(QteMto*titulo)

?unciFn Ms+b: 5

s=msgboM(QteMto*botones E iconos*titulo)

Eje!l de

Sub llenar!tabla()

  $im Alumno* ota1* ota* ota+ As String

  ActiveWorkbook.Sheets("oa").Activate

While (ot ('s-m>t?(ActiveCell)))

ActiveCell.Bset(1* 9).Activate

Wend

S = vb 

$o While (S = vb)

Alumno = 'n>utoM("'ngrese el ombre del Alumno"* "Alumno")

ota1 = 'n>utoM("'ngrese la nota 1"* "ota 1")

ota = 'n>utoM("'ngrese la nota "* "ota ")

Page 10: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 10/113

ota+ = 'n>utoM("'ngrese la nota +"* "ota +")

ActiveCell = Alumno

ActiveCell.Bset(9* 1) = ota1

ActiveCell.Bset(9* ) = ota

ActiveCell.Bset(9* +) = ota+

S = 5sgoM("desea ingresar otro alumno"* vbCancel vb'nNormation* "")

ActiveCell.Bset(1* 9).Activate

4oo>

MAYO 11,1*

PRO0ED-M-EOS 7G -s un bloGue de >asos Gue realia una NunciInes>ecTFca*

Sub nombre: >rocedimiento()

P..sentencias

-nd Sub.

?0-OES 7G -s un bloGue de >asos Gue realia unaNunciIn es>ecTFca >ero a diNerencia de los >rocedimientoes estos >ueden retornar valores ? los >rocedimientosno.

Sub ombre UNunciIn (variables) ti>o de dato de retorno

P.. sentencias

-nd Nuntion Area!C (base as doublE* altura as double)

%unction area!c(base As $ouble* altura As $ouble) As $ouble

$im area As $ouble

area = base H altura

area!c = area

Page 11: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 11/113

-nd %unction

%unction area!R(radio As $ouble) As $ouble

$im a As $ouble

a = +.1<1+ H (radio H radio)

area!c = a

-nd %unction

%unction area!tri(base As $ouble* altura As $ouble) As $ouble

$im As $ouble

ar = (base H altura) D

area!tri = a

-nd %unction

Sub calcularareas()

Range("A<").Activate

While (ot ('s-m>t?(ActiveCell)))

Select Case (ActiveCell)

Case "Rentangulo"#

ActiveCell.Bset(9* +) = Str(area!R(Activacell.Bset(9* 1)* ActiveCell.Bset(9*)))

Case "7riangulo"#

ActiveCell.Bset(9* +) = Str(area!R(Activacell.Bset(9* 1)* ActiveCell.Bset(9*)))

Case "Circulo"#

ActiveCell.Bset(9* +) = Str(area!R(Activacell.Bset(9* 1)))

-nd Select

ActiveCell.Bset(1* 9).Activate

Wend

Page 12: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 12/113

-nd Sub

-em>lo

Sub Alumno()

$im suma As $ouble

$im >romedio As $ouble

ActiveWorkbook.Sheets("oa").Activate

Range("A").Activate

While (ot ('s-m>t?(ActiveCell)))

 suma = 3al(ActiveCell.Bset(9* 1)) 3al(ActiveCell.Bset(9* )) 3al(ActiveCell.Bset(9* +))

 >romedio = suma D +

-nd Sub

%unction >romedio(ota1* ota* ota+ As $ouble) As $ouble

 $im >romedio As $ouble

 8 = (ota1 ota ota+) D +

 >romedio = 8

-nd %unction

Sub conce>to(8 As $ouble)

 Select Case 8

  Case 9 7o 1.#

  ActiveCell.Bset(9* ) = "'nsuFciente"

  Case 7o .#

  ActiveCell.Bset(9* ) = "$eFciente"

  Case + 7o +.#

  ActiveCell.Bset(9* ) = "Ace>table"

  Case < 7o <.<#

Page 13: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 13/113

  ActiveCell.Bset(9* ) = "Sobresaliente"

  Case -lse

  ActiveCell.Bset(9* ) = "-Mcelente"

  -nd Select

-nd Sub

Sub estado(8 As $ouble)

'N (8 @ +) 7hen

ActiveCell.Bset(9* 6) = "Re>robado"

-lse

ActtiveCell.Bset(9* 6) = "A>robado"

-nd 'N 

-nd Sub

Sub llenar!tabla()

$im >rom As $ouble

ActiveWorkbook.Sheets("oa").Activate

ActiveSheet.Range("A<").Activate

While (ot ('s-m>t?(ActiveCell)))

 >rom = >romedio(3al(ActiveCell.Bset(9* 1))* 3al(ActiveCell.Bset(9* +))*3al(ActiveCell.Bset(9* +)))

 ActiveCell.Bset(9* <) = Str(>rom)

 Call conce>to(>rom)

 Call estado(>rom)

 ActiveCell.Bset(1* 9).Activate

 Wend

 

-nd Sub

 !%unciones #

%2C' ACC'

Page 14: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 14/113

Abs (nVmero) 3alor absoluto

Atn(nVmero) ArCotangente

Cos (nVmero) Coseno

-M>(nVmero) e nVmero

'ntc (nVmero ) 8arte entera

4og (nVmero ) logaritmo

Rnd Randon

Sgn Signo del nVmero si es >ositivo 1* si es negativo :1* si es cero 9

Sin nVmero Seno

SGr nVmero RaT

 7an nVmero 7angente

$ate %echa actual sistema

$a? (Necha) dTa de la Necha

eM nVmero conversiIn aheMadecimal

our hora hora de la Necha

5inute hora minutos de la Necha

4en (string) 4ongitud de cadena

4case (string) 8aso de ma?Vsculas a minVsculas

3case (string) 8aso de minVsculas a ma?Vsculas

5id(string* ini* ncaract) -MtracciIn de cadenas

Right (string* longitude) Q

4eNt (string* longitud) Q

S>lit(string* delimitador) -MtracciIn de subcadenas

 oin (string* delimitadot) uniIn de subcadenas

Strcom>(string* str ) com>araciIn cadenas

Re>lace (string* substring* rem>lace0ith) Reem>laar cadenas.

Ejemplo de buscar :

Page 15: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 15/113

Function buscar()

Dim texto As String

Dim l, i, j As Double

texto = InputBox(ingrese el nombre a buscar )

i = !

"ange(A#)$Acti%ate

l = &en(texto)

'ile (ot (IsEmpt*(Acti%e+ell$-set(i, !))))

re. = Acti%e+ell(i, !)$/ext 

I. 0+ase(texto) = 0+ase(re.) /en

 Acti%e+ell$-set(i, !)$Interior$+olor = %b1ello2

End I. 

i = i 3 4

'end

End Sub

 55555555555555555555 

+ontroles : Acti%exnd buttom

/ext box 

+ombobox 

"adio buttom

+ec6box 

&abel

&istbox 

Page 16: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 16/113

 Abs Regresa el valor absoluto de un número

Asc Obtiene el valor ASCII del primer caracter de una cadena de texto

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

CCur  Convierte una expresión al tipo de dato moneda (Currency)

Page 17: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 17/113

CDate Convierte una expresión al tipo de dato fecha (Date)

CDbl Convierte una expresión al tipo de dato doble (Double)

CDec Convierte una expresión al tipo de dato decimal (Decimal)

Choose Selecciona un valor de una lista de arumentos

Chr  Convierte un valor A!SI en valor de tipo texto

CInt Convierte una expresión en un dato de tipo entero (Int)

CLng Convierte una expresión en un dato de tipo laro ("on)

CreateObject Crea un ob#eto de tipo O"$

CStr  Convierte una expresión en un dato de tipo texto (Strin)

CurDir  %eresa la ruta actual

CVar  Convierte una expresión en un dato de tipo variante (&ar)

Date %eresa la fecha actual del sistema

DateAdd  Area un intervalo de tiempo a una fecha especificada

DateDiff  Obtiene la diferencia entre una fecha y un intervalo de tiempo especificado

DatePart %eresa una parte espec'fica de una fecha

DateSerial Convierte una fecha en un nmero serial

DateValue Convierte una cadena de texto en una fecha

Day %eresa el d'a del mes de una fecha

Page 18: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 18/113

Dir  %eresa el nombre de un archivo o directorio ue concuerde con un patrón

EOF %eresa verdadero si se ha lleado al final de un archivo

FileDateTie %eresa la fecha y hora de la ltima modificación de un archivo

FileLen %eresa el nmero de bytes en un archivo

ForatCurrency %eresa un nmero como un texto con formato de moneda

ForatPercent %eresa un nmero como un texto con formato de porcenta#e

!our  %eresa la hora de un valor de tiempo

IIf  %eresa un de dos partes* dependiendo de la evaluación de una expresión

In"utBo# +uestra un cuadro de di,loo ue solicita la entrada del usuario

InStr  %eresa la posición de una cadena de texto dentro de otra cadena

InStr$e% %eresa la pocisión de una cadena de texto dentro de otra cadena pero empe-ando desde el final

Int %eresa la parte entera de un nmero

IsDate %eresa verdadero si la variable es una fecha

IsE"ty %eresa verdadero si la variable est, vac'a

IsError  %eresa verdadero si la expresión es un valor de error 

Is&ull %eresa verdadero si la expresión es un valor nulo

Is&ueric %eresa verdadero si la variable es un valor num.rico

'oin %eresa una cadena de texto creada al unir las cadenas contenidas en un arrrelo

Page 19: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 19/113

LCase %eresa una cadena convertida en minsculas

Left %eresa un nmero espec'fico de caracteres a la i-uierda de una cadena

Len %eresa la lonitud de una cadena (en caracteres)

LTri %emueve los espacios a la i-uierda de una cadena

(id $xtrae un nmero espec'fico de caracteres de una cadena de texto

(inute %eresa el minuto de una dato de tiempo

(onth %eresa el mes de una fecha

(sgBo# Despliea un cuadro de dialoo con un mensa#e especificado

&o) %eresa la fecha y hora actual del sistema

$e"lace %eempla-a una cadena de texto con otra

S"ace reresa una cadena de texto con el nmero de espacios especidicados

S"lit %eresa un arrelo formado for cadenas de texto ue formaban una sola cadena

Str  %eresa la representación en texto de un nmero

$ight %eresa un nmero especificado de carecteres a la derecha de una cadena de texto

$nd %eresa un nmero aleatorio entre / y 0

$ound %edondea un nmero a una cantidad espec'f ica de decimales

$Tri %emueve los espacios en blanco a la derecha de una cadena de texto

Second %eresa los seundos de un dato de tiempo

Page 20: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 20/113

StrCo" Compara dos cadenas de texto

Str$e%erse Invierte el orden de los caracteres de una cadena

Tie %eresa el tiempo actual del sistema

Tier  %eresa el nmero de seundos desde la media noche

TieValue Convierte una cadena de texto a un nmer de serie de tiempo

Tri %emueve los espacios en blanco al inicio y final de una cadena de texto

Ty"e&ae Obtiene el nombre del tipo de dato de una variable

*Case Convierte una cadena de texto en maysculas

Val %eresa el nmero contenido en una cadena de texto

+ee,day %eresa un nmero ue representa un d'a de la semana

+ee,day&ae %eresa el nombre de un d'a de la semana

 -ear  Obtiene el a1o de una fecha

 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

C7R4-S A CA4C24 =@

Page 21: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 21/113

¿Qué es una macro

de Excel?Por Moisés Ortíz el 5 julio, 2011

Si utilizas Excel frecuentemente es posible que en alguna ocasión te hayas encontrado

ejecutando una misma serie de acciones una y otra vez. Esas acciones que haces repetidas

veces se podrían automatizar con unamacro.

Unamacro es un conjunto de comandos que se almacena en un lugar especial de Excel de

manera que están siempre disponibles cuando los necesites ejecutar.

Por ejemplo, si todas las mañanas creas un reporte de ventas y en ese reporte siempre das elmismo formato a los textos, se podría crear una macro para que lo haga automáticamente por

ti. Lasmacros se utilizan principalmente para eliminar la necesidad de repetir los pasos de

aquellas tareas que realizas una y otra vez.

Un lenguaje de programación

Lasmacros se escriben en un lenguaje de computadora especial que es conocido como

Visual Basic for Applications (VBA). Este lenguaje permite acceder a prácticamente todas las

funcionalidades de Excel y con ello también ampliar la funcionalidad del programa.

Pero no te preocupes si no eres un programador de computadoras, Excel provee de una

herramienta especial que permite crear unamacro sin necesidad de conocer los detalles del

lenguaje de programación. Aunque si aceptas el desafío y te introduces en el mundo de la

programación VBA pronto te convertirás en un Ninja de Excel.

Verás que crear unamacro en Excel no es tan complicado y será una manera fácil y rápida de

eliminar esas tareas repetitivas que todos los días te quitan minutos preciados de tu tiempo.

Para qué sirve una

macro en ExcelPor Moisés Ortíz el 17 junio, 2012

Page 22: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 22/113

¿Para qué sirve una macro en Excel? Una macro nos ayuda a automatizar aquellas tareas

que hacemos repetidamente. Una macro es una serie de instrucciones que son guardadas

dentro de un archivo de Excel para poder ser ejecutadas cuando lo necesitemos.

Automatización de tareasSeguramente estás familiarizado con procesos de automatización en el ámbito industrial. Un

ejemplo muy claro son las plantas ensambladoras de automóviles donde existen robots que

han sustituido tareas que antes eran hechas por humanos. La automatización trajo beneficios

como mayor eficiencia y productividad de las plantas y un mejor aprovechamiento del tiempo

del personal al reducir la cantidad de tareas repetitivas que realizaban.

De la misma manera las macros nos ayudan a eliminar esas tareas repetitivas de nuestro

trabajo cotidiano al permitirnos utilizar mejor nuestro tiempo en el análisis de los datos y en la

toma de decisiones.

¿Cómo se ve una macro en Excel?

Las macros son escritas en un lenguaje de computadora conocido como VBA por sus siglas

en inglés (Visual Basic for Applications). Como cualquier otro lenguaje de computadora

debemos aprender a utilizar los comandos que nos ayudarán a indicar a Excel lo que

deseamos hacer con nuestros datos.

Page 23: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 23/113

Aprender ellenguaje VBA no es nada complicado y se puede lograr fácilmente. Lo que toma

un poco más de tiempo es pulir nuestras habilidades de programación. Lo que quiero decir

con esto es que para ser un buen programador de macros debes dedicar tiempo en resolver

múltiples problemas en donde puedas llevar al límite el lenguaje VBA.

Creación de una macroLas macros se crean con elEditor de Visual Basic el cual nos permitirá introducir el código con

las instrucciones que serán ejecutadas por la macro.

Existe otro método que es utilizar laGrabadora de macros la cual irá grabando todas las

acciones que realicemos en Excel hasta que detengamos la grabación. Una vez grabada la

macro podremos “reproducir” de nuevo las acciones con tan solo un clic.

Ahora que ya sabespara qué sire una macro en Excel puedes dar los primeros pasos en

este camino utilizando el tutorialIntroducción a las macros.

Mostrar la ficha

Programador

Page 24: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 24/113

Por Moisés Ortíz el 6 julio, 2011

Si quieres escribir una nueva macro o ejecutar una macro previamente creada, entonces

debeshabilitar la ficha Programador dentro de la cinta de opciones. Para mostrar esta ficha

sigue los siguientes pasos.

Mostrar la ficha Programador en Excel 2010

Haz clic en la ficha Archivo y elige la sección Opciones. Se mostrará el cuadro de

diálogoOpciones de Excel donde deberás seleccionar la opciónPersonalizar cinta de

opciones.

En el panel de la derecha deberás asegurarte de seleccionar la fichaProgramador.

Page 25: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 25/113

Acepta los cambios y la ficha se mostrará en la cinta de opciones.

Page 26: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 26/113

Grupos de la ficha Programador

El grupoCódigotienes los comandos necesarios para iniciar el Editor de Visual Basic donde

se puede escribir directamente código VBA. También nos permitirá ver la lista de macros

disponibles para poder ejecutarlas o eliminarlas. Y no podríamos olvidar mencionar que eneste grupo se encuentra el comandoGrabar macro el cual nos permite crear una macro sin

necesidad de saber sobre programación en VBA.

El grupoComplementosnos permite administrar y habilitar complementos como elSolver.

El grupoControlesincluye funcionalidad para agregar controles especiales a las hojas de

Excel como los controles de formulario que son botones, casillas de verificación, botones de

opción entre otros más que serán de gran utilidad para ampliar la funcionalidad de Excel.

El grupoXMLpermite importar datos de un archivo XML así como opciones útiles para

codificar archivos XML. Finalmente el grupoModificarsolamente contiene el comando Panel

de documentos.

Aunque pueden parecer intimidantes los comandos de laficha Programadorcon el paso del

tiempo te irás familiarizando poco a poco con cada uno de ellos.

La grabadora de

macrosPor Moisés Ortíz el 7 julio, 2011

Puedes crear una macro utilizando el lenguaje de programación VBA, pero el método más

sencillo es utilizar lagrabadora de macros que guardará todos los pasos realizados para

ejecutarlos posteriormente.

La grabadora de macros en Excel 2010

Lagrabadora de macros almacena cada acción que se realiza en Excel, por eso es

conveniente planear con antelación los pasos a seguir de manera que no se realicen acciones

innecesarias mientras se realiza la grabación. Para utilizar la grabadora de macros debes ir a

la ficha Programador y seleccionar el comandoGrabar macro.

Page 27: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 27/113

Al pulsar el botón se mostrará el cuadro de diálogoGrabar macro.

En el cuadro de textoNombre de la macro deberás colocar el nombre que identificará de

manera única a la macro que estamos por crear. De manera opcional puedes asignar un

método abreviado de teclado el cual permitirá ejecutar la macro con la combinación de teclas

especificadas.

La lista de opcionesGuardar macro en permite seleccionar la ubicación donde se

almacenará la macro.

• Este libro. Guarda la macro en el libro actual.

• Libro nuevo. La macro se guarda en un libro nuevo y que pueden ser ejecutadas en

cualquier libro creado durante la sesión actual de Excel.

• Libro de macros personal. Esta opción permite utilizar la macro en cualquier

momento sin importar el libro de Excel que se esté utilizando.

También puedes colocar una Descripción para la macro que vas a crear. Finalmente debes

pulsar el botón Aceptar para iniciar con la grabación de la macro. Al terminar de ejecutar las

acciones planeadas deberás pulsar el botónDetener grabación para completar la macro.

Page 28: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 28/113

Artículos relacionados

¿Qué es una macro de Excel?

El código de la

Grabadora de macrosPor Moisés Ortíz el 14 noviembre, 2011

Una manera muy interesante de descubrir y aprender más sobrecódigo VBA es analizar el

código generado por laGrabadora de macros. Para este ejemplo grabaremos una macro

muy sencilla que solamente cambie el color de la fuente de la celda actual.

Para comenzar debemos ir a la fichaProgramador y pulsar el comandoGrabar macro lo cual

mostrará el cuadro de diálogo donde asignaré un nombre a la macro que estoy por crear.

Page 29: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 29/113

Pulsa el botón Aceptar y se comenzarán a grabar todas las acciones, así que debes actuar

con cuidado porque se grabará absolutamente todo. Para la macro que estoy grabando solo

haré lo siguiente: iré a la ficha Inicio y pulsaré el comandoColor de fuente y seleccionaré el

colorrojo para la celda activa.

Una vez hecho esto debo detener la grabación de la macro y una alternativa para hacerlo es

pulsar el icono que se muestra en la barra de estado.

Ahora que ya hemos generado la macro, pulsa el botónMacros que se encuentra en el

grupoCódigo de la fichaProgramador. Se mostrará el cuadro de diálogoMacro que enlista

todas las macros que hemos creado.

Page 30: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 30/113

Selecciona la macro recién creada y pulsa el botón Modificar. Esto abrirá elEditor de Visual

Basic y mostrará el código generado para la macro.

Observando este código podemos aprender varias cosas. Para empezar observamos que el

objeto Selection tiene una propiedad llamadaFontque es la que hace referencia a la fuentede la celda o rango seleccionado. A su vez, la propiedad Font tiene otra propiedad llamada

Color que es precisamente la que define el color rojo de nuestra celda.

Aunque este ha sido un ejercicio muy sencillo, cuando tengas curiosidad o duda sobre qué

objetos utilizar alprogramar en VBA considera utilizar laGrabadora de macros para darte

una idea del camino a seguir.

Page 31: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 31/113

En esta ocasión mostraré cómocrear una macro en Excel utilizando la grabadora de macros.

La macro será un ejemplo muy sencillo pero permitirá ilustrar el proceso básico de creación.

Voy acrear una macro que siempre introduzca el nombre de tres departamentos de una

empresa y posteriormente aplique un formato especial al texto. Para iniciar la grabación debes

ir al comandoGrabar macro que se encuentra en la ficha Programador lo cual mostrará el

siguiente cuadro de diálogo.

Observa cómo he colocado un nombre a la macro y además he especificado el método

abreviado CTRL+d para ejecutarla posteriormente. Una vez que se pulsa el botón Aceptar se

iniciará la grabación. Observa con detenimiento los pasos.

Page 32: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 32/113

Al terminar los pasos se pulsa el comandoDetener grabación y la macro habrá quedadoguardada. Para ejecutar la macro recién guardada seleccionaré una nueva hoja de Excel y

seleccionaré el comando Macros.

Page 33: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 33/113

Al pulsar el comandoMacrosse mostrará la lista de todas las macros existentes y de lascuales podrás elegir la más conveniente. Al hacer clic sobre el comando Ejecutar se realizarán

todas las acciones almacenadas en la macro y obtendrás el resultado esperado. Por supuesto

que si utilizas el método abreviado de teclado de la macro entonces se omitirá este último

cuadro de diálogo.

Establecer seguridad

de macrosPor Moisés Ortíz el 6 septiembre, 2011

Page 34: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 34/113

La seguridad es un tema importante al hablar de macros en Excel. Si abres algún archivo que

contenga una macro maliciosa puedes causar algún tipo de daño al equipo. De manera

predeterminada Excel no permite ejecutar macros automáticamente.

Sin embargo, si estás creando tus propias macros y deseas remover esta protección porque

sabes que no existe código malicioso, entonces puedes modificar la configuración

parahabilitar todas las macros. Para hacerlo debes seguir los siguientes pasos: Haz clic en

la ficha Archivo y posteriormente en Opciones. Dentro del cuadro de diálogo mostrado

selecciona la opciónCentro de confianza y posteriormente pulsa el botónConfiguración del

centro de confianza. Se mostrará el cuadro de diálogoCentro de confianza.

Dentro de la secciónConfiguración de macros selecciona alguna de las opciones

disponibles.

• Deshabilitar todas las macros sin notificación. Deshabilita las macros y permite

ejecutar solamente aquellas que estén almacenadas en un lugar confiable. Los lugares

confiables se configuran en la sección Ubicaciones de confianza del mismo cuadro de

diálogo.

• Deshabilitar todas las macros con notificación. Muestra una alerta de seguridad

advirtiendo sobre la intención de ejecutar una macro de manera que se pueda decidir si

se desea ejecutar. Esta es la opción predeterminada de Excel.

Page 35: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 35/113

• Deshabilitar todas las macros excepto las firmadas digitalmente. Solamente se

podrán ejecutar las macros que están firmadas digitalmente.

• Habilitar todas las macros. Permite ejecutar todas las macros sin enviar alguna

notificación al usuario. Esta opción es útil si se ejecutan múltiples macros totalmente

confiables. Esta opción es la que corre los mayores riesgos al ejecutar una macro de una

fuente desconocida.

Una vez seleccionada la opción deseada se debe pulsar el botón Aceptar para hacer los

cambios permanentes.

Programando en VBAPor Moisés Ortíz el 20 agosto, 2011

Excel 2010 es una de las herramientas de software más poderosas para el manejo, análisis y

presentación de datos. Aun y con todas sus bondades, en ocasiones Excel no llega a suplir

algunas necesidades específicas de los usuarios.

Afortunadamente Excel cuenta con VBA que es un lenguaje de programación que permite

extender las habilidades del programa para cubrir nuestros requerimientos. Utilizando VBA se

pueden desarrollar nuevos algoritmos para analizar la información o para integrar a Excel con

alguna otra aplicación como Microsoft Access.

Principios fundamentales

La programación en VBA puede ser un tanto misteriosa para la mayoría de los usuarios de

Excel, sin embargo una vez que se comprenden los principios básicos de programación en

VBA se comenzarán a crear soluciones robustas y efectivas.

El primer concepto importante a entender es que cada elemento de Excel es representado en

VBA como unobjeto. Por ejemplo, existe el objetoWorkbookque representa a un libro deExcel. También existe el objetoSheetque representa una hoja y el objetoChartpara un

gráfico.

El segundo concepto importante a entender es que cada uno de estos objetos

tienepropiedadesymétodos. Para explicar mejor este concepto utilizaré una analogía.

Page 36: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 36/113

Propiedades y Métodos

Supongamos que tenemos el objetoauto. Así es, un auto como el que manejamos todos los

días para ir al trabajo. Este auto tiene variaspropiedades como son: marca, modelo, color,

tipo de transmisión las cuales ayudan a describir mejor al auto. También haypropiedadesque

indican su estado actual como por ejemplo gasolina disponible, temperatura del aceite,

velocidad, kilómetros recorridos entre otras propiedades más. Podemos decir que

laspropiedadesde un objeto nos ayudan a describirlo mejor en todo momento.

Por otro lado tenemos losmétodosde un objeto que en resumen son las acciones que

podemos realizar con dicho objeto. Por ejemplo, con nuestro auto podemos hacer lo siguiente:

encenderlo, avanzar, vuelta a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc.

Todas las acciones que se pueden llevar a cabo con un objeto son conocidas comométodos.

Volviendo al terreno de Excel, el objetoWorkbooktienepropiedadescomo

ActiveSheet(Hoja activa), Name(Nombre), ReadOnly(Solo Lectura), Saved(Guardado) y

algunos de susmétodosson Save(Guardar), Close(Cerrar), PrintOut(Imprimir),

Protect(Proteger), Unprotect(Desproteger).

Será dificil mencionar todos los objetos de Excel y sus propiedades en esta publicación, pero

lo importante a recordar en este ocasión es que cada elemento de Excel está siempre

representado por unobjetoen VBA y cada objeto tiene a su vezpropiedadesymétodosque

nos permitirán trabajar con nuestros datos

El Editor de Visual

BasicPor Moisés Ortíz el 24 septiembre, 2011

ElEditor de Visual Basic, VBE por sus siglas en inglés, es un programa independiente a

Excel pero fuertemente relacionado a él porque es el programa que nos permite escribir

código VBA que estará asociado a las macros.

Page 37: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 37/113

Existen al menos dos alternativas para abrir este editor, la primera de ellas es a través del

botónVisual Basic de la ficha Programador.

El segundo método para abrir este programa es, en mi opinión, el más sencillo y rápido y que

es a través del atajo de teclado: ALT + F11. ElEditor de Visual Basic contiene varias

ventanas y barras de herramientas.

En la parte izquierda se muestra elExplorador de proyectos el cual muestra el proyecto VBA

creado para el libro actual y además muestra las hojas pertenecientes a ese libro de Excel. Sipor alguna razón no puedes visualizar este módulo puedes habilitarlo en la opción de menú

Ver y seleccionando la opciónExplorador de proyectos.

Page 38: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 38/113

El Explorador de proyectos también nos ayuda a crear o abrir módulos de código que se serán

de gran utilidad para reutilizar todas las funciones de código VBA que vayamos escribiendo.

Dentro delEditor de Visual Basic puedes observar una ventana llamada Inmediato que está

en la parte inferior. Esta ventana es de mucha ayuda al momento de escribir código VBA

porque permite introducir instrucciones y observar el resultado inmediato. Además, desde el

código VBA podemos imprimir mensajes hacia la ventanaInmediato con el

comandoDebug.Printde manera que podamos depurar nuestro código. Si no puedes observar

esta ventana puedes mostrarla también desde el menú Ver.

El área más grande en blanco es donde escribiremos el código VBA. Es en esa ventana en

donde escribimos y editamos las instrucciones VBA que dan forma a nuestras macros.

Es importante familiarizarnos con elEditor de Visual Basic antes de iniciar con la creación de

macros.

Page 39: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 39/113

Utilizar comentarios en

VBAPor Moisés Ortíz el 9 mayo, 2012

Utilizar comentarios dentro del código VBA es una de las mejores prácticas que debes adoptar

desde que inicias en el mundo de la programación en Excel. Los comentarios harán que tu

código sea fácil de entender.

Uncomentario en VBA es una línea dentro del código que no será tomada en cuenta al

momento de realizar la ejecución. Los comentarios serán solo visibles por ti al momento de

editar el código dentro del Editor de Visual Basic.

Para agregar un comentario será suficiente con colocar una comilla sencilla (‘) al inicio de la

línea. Después de colocar la comilla sencilla debes escribir el comentario y al terminar de

insertar la línea Excel colocará automáticamente el texto en color verde indicando que ha

reconocido la línea como uncomentario en VBA.

Page 40: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 40/113

He visto en más de una ocasión que muchas personas no tienen esta buena práctica al

programar en VBA y el problema se presentará cuando pase el tiempo y tengan que modificar

el código pero ya no recuerden la lógica implementada ni lo que significa cada una de las

variables.

Aunque pareciera una actividad aburrida, créeme que te ahorrará mucho tiempo cuando te

veas en la necesidad de modificar tu código. Además, si por alguna razón necesitas que otra

persona haga modificaciones al código le serán de gran ayuda los comentarios que hayas

agregado.

Comentar varías líneas de código

Como ya lo mencioné, uncomentario en VBA será omitido al momento de la ejecución. En

ocasiones cuando está haciendo pruebas con tu código VBA deseas evitar que ciertas líneas

de código se ejecuten y una manera de hacer es comentando dichas líneas.

Para comentar varias líneas de código en una macro, sin la necesidad de estar colocando la

comilla sencilla al principio de cada una de las líneas, puedes seguir los siguientes pasos. En

primer lugar selecciona todas las líneas de código que deseas convertir en comentarios y

posteriormente oprime el botónBloque con comentarios de manera que Excel coloque todas

las comillas sencillas (‘) a cada línea de código seleccionada.

De la misma manera puedes remover las comillas sencillas si pulsas el botónBloque sin

comentarios que se encuentra justo al lado derecho del botónBloque con comentarios.

Page 41: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 41/113

Si no puedes ver los botones anteriores en el Editor de Visual Basic es porque seguramente

tienes oculta la barra de herramientas de Edición. Para mostrarla, haz clic derecho sobre un

área libre del menú superior y seleccionar la opción Edición.

Objetos, propiedades y

métodosPor Moisés Ortíz el 7 noviembre, 2011

Losobjetos en Excel (VBA) son cosas. Una celda es un objeto, una hoja es un objeto, un

libro es un objeto y de esta manera existen muchos más objetos en Excel. A esto lo

conocemos como el modelo de objetos de Excel.

Page 42: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 42/113

Cada uno de los objetos de Excel tienepropiedades ymétodos. Las propiedades son las

características del objeto y los métodos son las acciones que el objeto puede hacer.

Propiedades de un objetoSi una persona fuera un objeto de Excel sus propiedades serían el color de sus ojos, el color

de su cabello, su estatura, su peso. De la misma manera, un objeto de Excel tiene

propiedades por ejemplos, una celda (Range) tiene las propiedades valor (Value) y dirección

( Address) entre muchas otras. Estaspropiedades describen mejor al objeto.

Métodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos seríancorrer, caminar, hablar, dormir. Los métodos son las actividades o acciones que el objeto

puede realizar. Los objetos de Excel se comportan de la misma manera que el ejemplo de una

persona. Una celda (Range) tiene losmétodos activar ( Activate), calcular (Calculate), borrar

(Clear) entre muchos más.

Utilizando las propiedades y los métodos

Para acceder a laspropiedades ymétodos de un objeto lo hacemos a través de una

nomenclatura especial. Justo después del nombre del objeto colocamos un punto seguido delnombre de la propiedad o del método. Observa este ejemplo donde hacemos uso de la

propiedadValue para la celda A1:

Range("A1").Value = "Hola"

Page 43: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 43/113

De esta manera asignamos una cadena de texto al valor de la celda A1. Ahora bien, si

queremos borrar ese valor que acabamos de colocar en la celda podemos utilizar el

métodoClear de la siguiente manera:

Range("A1").Clear

Ver todas las propiedades y métodos

Los objetos tienen muchas propiedades y métodos y a veces es difícil pensar que los

llegaremos a memorizar todos por completo. Sin embargo, elEditor de Visual Basic es de

gran ayuda porque justamente al momento de escribir nuestro código nos proporciona la lista

completa de propiedades y métodos para un objeto.

Esto sucede al momento de introducir el punto después del nombre del objeto. Puedes

distinguir entre las propiedades y métodos porque tienen iconos diferentes. En la imagen de

arriba los métodos son los que tienen el icono de color verde.

Recuerda, losobjetos son cosas en Excel y sus características las llamamospropiedades las

cuales nos ayudan a definir al objeto. Losmétodos son las acciones que cada objeto puede

realizar.

Navegando el modelo

de objetosPor Moisés Ortíz el 17 enero, 2012

Page 44: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 44/113

Excel tiene un modelo de objetos el cual es una jerarquía de todos los objetos que podemos

utilizar desde el lenguaje VBA. En la parte superior de la jerarquía se encuentra el objeto

Application y todos los demás objetos estarán por debajo de él.

Acceder a objetos inferioresPara tener acceso a los objetos que están por debajo del objeto Application podemos utilizar el

punto. El punto nos ayuda a navegar por la jerarquía hacia un nivel inferior. Observa lo que se

muestra en el Editor de Visual Basic al colocar un punto después del objeto Application:

Por ejemplo, si deseamos poner en negritas el texto de la celda A1 debemos llegar al objeto

Range el cual nos dará acceso a modificar la propiedad Bold de la siguiente manera:

Aunque esta línea de código puede tomarnos un poco de tiempo en escribirla, pero describepor completo la jerarquía de los objetos.

Objetos predeterminados

Existe una funcionalidad intrínseca de VBA conocida como objetos predeterminados la cual

nos permite omitir la escritura de algunos objetos y aun así tener un código funcional. Por

ejemplo, en la sentencia mostrada previamente podemos omitir el objeto Application y tener

nuestro código funcionando correctamente:

Inclusive podemos omitir los objetos ActiveWorkbook y ActiveSheet sabiendo que el código se

ejecutará siempre sobre el libro activo y la hoja que esté activa al momento de la ejecución:

Page 45: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 45/113

Referencias completas a objetos

A algunas personas les gusta utilizar las referencias completas a los objetos, es decir,

especificar toda la ruta completa hasta llegar al objeto deseado. Una razón para hacer esto es

porque da una claridad absoluta sobre la ubicación exacta de cada objeto lo cual ayudará a

evitar cualquier mala interpretación del código.

Si decides no hacer uso de los objetos predeterminados sino que deseas utilizar las

referencias completas hacia cada objeto aún hay una manera de ahorrar algunas líneas de

código. Supongamos las siguientes instrucciones en VBA:

Podemos ahorrar algunas palabras de este código haciendo uso del bloque With de la

siguiente manera.

En ambos casos el resultado será el mismo y en el último ahorraremos algunos caracteres

dejando nuestro código VBA claro y legible.

Las colecciones de

objetos Workbooks yWorksheets

Page 46: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 46/113

Por Moisés Ortíz el 22 mayo, 2012

Un objeto en VBA puede contener otro objeto y ese objeto a su vez puede contener otro objeto

y así sucesivamente. La raíz de todos los objetos en VBA se encuentra en elobjeto

Application el cual a su vez contiene lascolecciones de objetos Workbooks y Worksheets.

El objeto Workbook y el objeto Worksheet

El objeto Workbook representa un libro de Excel y el objeto Worksheet representa una hoja de

un libro de Excel. Como sabemos, un libro de Excel puede tener más de una hoja lo cual

significa que un objeto Workbook puede contener más de un objeto Worksheet.

Ya que no hay límite en el número de hojas que puede tener un libro, se volvería complicado

organizar esta relación entre los objetos Workbook y Worksheet y por esta razón se crearon

las colecciones de objetos. De esta manera un objeto Workbook tiene asociada unacolección

de objetos Worksheets la cual contiene los objetos Worksheet que representan las hojas de

ese libro de Excel.

De la misma manera, el objeto Application no tiene asignados directamente todos los libros de

Excel sino que tiene unacolección de objetos Workbooks la cual incluirá todos los objetos

Workbook de los libros de Excel que abramos en nuestro código VBA.

Abrir un libro de Excel

Para abrir un libro de Excel en VBA podemos utilizar el método Open del objeto Workbooks de

la siguiente manera:

Application.Workbooks.Open Filename="C!ibro1.ls"

Esta instrucción abrirá el archivo ubicado en “C:Libro1.xlsx” y lo agregará a lacolección de

objetos Workbooks. De esta manera podemos abrir tantos archivos como sean necesarios y

para cada uno de ellos se creará un objeto Workbook el cual será almacenado dentro de

Workbooks.

Hacer referencia a un libro en VBA

Una vez que hemos abierto los archivos que necesitamos podremos hacer referencia a cada

uno de ellos a través dela colección de objetos Workbooks de la siguiente manera:

Page 47: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 47/113

Application.Workbooks(1).Acti#ate

El número que observas dentro de los paréntesis indica el índice del objeto Workbook dentro

de lacolección de objetos Workbooks. De manera predeterminada el índice 1 será para el

libro de Excel que contiene el código VBA y a partir de ahí la numeración será de acuerdo al

orden en que hayamos abierto otros archivos.

Si conocemos el nombre del libro podemos utilizarlo en lugar del índice y tener una instrucción

como la siguiente:

Application.Workbooks("!ibro1.ls").Acti#ate

Lacolección de objetos Workbooks nos permitirá acceder a todos los libros que hayamos

abierto dentro de nuestra aplicación VBA.

Acceder las hojas de un libro

De igual manera podemos acceder las hojas de cualquier libro a través de sucolección de

objetos Worksheets. Esta colección también puede ser accedida por el índice de cada una

de las hojas del libro:

Application.Workbooks(1).Works$eets(1).Range("A1").Value = "Hola"

Esta instrucción accede a la hoja con el índice 1 y coloca el valor “Hola Mundo” en la celda

A1. También podemos acceder a una hoja a través de su nombre en caso de que loconozcamos:

Application.Workbooks(1).Works$eets("Ho%a1").Range("A1").Value = "Hola"

Agregar una nueva hoja

A través de lacolección de objetos Worksheets podemos crear nuevas hojas en un libro.

Observa la siguiente instrucción:

Works$eets.A&&

Observa que no he iniciado la instrucción anterior con el objeto Application, ni tampoco está

precedida por el objeto Workbooks. Esta es una sintaxis aceptable dentro de VBA e indica que

se agregará una nueva hoja al libro que esté activo en ese momento. Este es un método

Page 48: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 48/113

abreviado que podemos utilizar si estamos seguros de que el libro activo es el libro al que

deseamos agregar una nueva hoja. De lo contrario, podemos especificar tota la ruta completa:

Application.Workbooks("!ibro1.ls").Works$eets.A&&

Ahora ya sabemos que VBA tiene un objeto para representar los libros de Excel (Workbook) y

otro objeto para representar las hojas de un libro (Worksheet). Ambos tipos de objetos son

almacenados dentro de colecciones de objetos que son conocidas comoWorkbooks, que se

refiere a la colección de libros que se han abierto yWorksheets que es la colección de hojas

que pertenecen a un determinado libro.

El objeto Applicationen VBAPor Moisés Ortíz el 30 mayo, 2012

Cuando escribimos macros con VBA trabajamos con múltiples objetos que pueden ejecutar

nuestras instrucciones adecuadamente, pero elobjeto Application está en el nivel más alto

de la jerarquía del modelo de objetos de Excel.

Elobjeto Application simboliza a Excel mismo y nos da acceso a opciones y configuraciones

a nivel de la aplicación. Muchas de las opciones que podemos modificar con el objeto

Application son las mismas que encontramos en la ficha Archivo dentro del cuadro de diálogo

Opciones de Excel.

Ya que elobjeto Application es el objeto principal dentro de VBA todos los demás objetos

derivan de él. Es por ello que encontrarás frecuentemente instrucciones que comienzan

especificando el objeto Application:

Application.Acti#e'$eet.ame = "Reporte &e Ventas"

Sin embargo, VBA nos permite, en la mayoría de los casos, omitir la escritura delobjeto

Application ya que supone que todos los demás objetos provienen de él. De esta manera lasiguiente instrucción también es válida.

Acti#e'$eet.ame = "Reporte &e Ventas"

Colecciones del objeto Application

Page 49: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 49/113

El objeto Application tiene algunas colecciones que son de mucha utilidad

comoSheets,Columns yRows. La colección Sheets nos permite acceder a todas las hojas

de un libro:

Application.'$eets.Count

Es muy importante mencionar que la colección Sheets se referirá al libro de Excel que se

encuentre activo en el momento de ejecutar esta instrucción. Las colecciones Columns y Rows

nos permitirán acceder a las columnas y filas de la hoja activa.

Application.Columns().'elect

Application.Ro*s().'elect

Propiedades del objeto Application

El objeto Application tiene muchas propiedades como para mencionarles todas en esta

ocasión, pero algunas de las más importantes son las siguientes:

• ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel

activo.

• ActiveSheet. Regresa un objeto Worksheet que representa a la hoja que esté

actualmente seleccionada (activa).

• ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja

activa en el libro de Excel activo.

• ThisWorkbook. Esta propiedad devolverá un objeto Workbook que representará ellibro que contiene la macro que está siendo ejecutada.

Métodos del objeto Application

Uno de los métodos más utilizados del objeto Application es el métodoInputBox que nos

ayuda a mostrar un cuadro de diálogo que solicita al usuario el ingreso de algún valor.

Observa la siguiente línea de código:

+mpresiones = Application.+nput,o(-rompt="mero &e impresiones"/ 0

itle="+mprimir"/ 2e3ault=1/ 4pe=1)

Esta instrucción hará que Excel muestre un cuadro de diálogo pidiendo al usuario ingresar el

número de impresiones que desea realizar. El número ingresado por el usuario se guardará en

la variable Impresiones.

Page 50: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 50/113

El libro de macros

personal en ExcelPor Moisés Ortíz el 21 marzo, 2012

Cuando creamos una macro en Excel podemos guardarla en el libro actual o podemos

guardarla en ellibro de macros personal. La ventaja de guardar una macro en ellibro de

macros personal es que nuestra macro estará disponible para cualquier libro.

El libro de macros personal

Ellibro de macros personal es en realidad un archivo oculto llamado personal.xlsb y que es

cargado cada vez que iniciamos Excel. Si tienes Windows 7 podrás encontrar el archivo

personal.xlsb en la siguiente carpeta:

C5suarios65suario7App2ataRoaming8icroso3t9cel:!'AR

En la ruta que observas arriba [Usuario] es el nombre de tu usuario en el equipo. Además la

carpeta AppData es una carpeta oculta por lo que no la encontrarás directamente en el

navegador de Windows a menos que habilites la vista de archivos ocultos.

Creación del libro de macros personal

Ellibro de macros personal se crea la primera vez que se guarda una macro en él. Para

hacerlo,crea una macro y especifica que deseas guardarla en elLibro de macros personal.

Page 51: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 51/113

Cuando guardes el archivo Excel verás un mensaje preguntando si deseas guardar los

cambios realizados allibro de macros personal, para lo cual deberás pulsar el botón

Guardar.

El libro de macros personal en el Editor de

Visual Basic

Una vez que ellibro de macros personal ha sido creado lo podrás ver dentro del Editor de

Visual Basic:

Page 52: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 52/113

Por debajo del nombre VBAProject (PERSONAL.XLSB) encontrarás la carpeta Módulos y

dentro de ella encontrarás todas las macros que se hayan guardado en ellibro de macros

personal organizadas en módulos.

Si deseas eliminar algún módulo solamente deberás hacer clic derecho sobre él y seleccionar

la opción Quitar Módulo.

Tipos de errores enVBAPor Moisés Ortíz el 15 mayo, 2012

No todas las cosas funcionan bien a la primera y seguramente te encontrarás con errores al

programar en Excel. Existen dostipos de errores en VBA: errores de sintaxis y errores en

tiempo de ejecución.

Errores de sintaxis en VBA

Un error de sintaxis ocurre cuando tenemos un error con el lenguaje VBA, es decir, cuando

intentamos hacer algo que no está permitido. Este tipo de errores son los más fáciles de

Page 53: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 53/113

localizar porque el Editor de Visual Basic está configurado para avisarnos en el momento en

que encuentra un error de este tipo en nuestro código.

Los errores de sintaxis en VBA surgen cuando intentamos insertar algún operador o alguna

instrucción de VBA en un lugar que no le corresponde. Observa la siguiente imagen:

En este ejemplo he intentado utilizar la palabraNext en lugar del tipo de dato de la variable. Es

por eso que el Editor de Visual Basic muestra un mensaje de error de compilación. La

palabraNext es parte del lenguaje VBA pero la he utilizado en el lugar inapropiado y por esoobtengo el error.

De igual manera el Editor de Visual Basic notará si hemos utilizado una palabra que no

pertenece al lenguaje VBA. En el siguiente ejemplo he confundido la instrucción Mod (módulo)

y he colocado la palabra Mud.

Page 54: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 54/113

Estos son solo unos ejemplos de errores de sintaxis que podemos cometer pero como lo he

mencionado antes, el Editor de Visual Basic nos alertará sobre dichos errores y podremos

detectarlos y corregirlos.

Errores en tiempo de ejecución

Un error en tiempo de ejecución ocurre cuando nuestra aplicación ya está siendo ejecutada e

intenta hacer alguna acción que no está permitida por Excel o por Windows. Esto ocasionará

que nuestra aplicación colapse o que Excel deje de responder.

Este tipo de errores son mas difíciles de encontrar pero aun así se podrán encontrar algunos

de ellos al hacer pruebas y depuración de nuestra aplicación. Algunos ejemplos de este tipo

de errores son los siguientes:

• Intentar realizar una operación no permitida por el ordenador. Por ejemplo una división

entre cero o intentar sumar una cadena de texto y un valor Double.

• Intentar utilizar una librería de código que no está accesible en ese momento.

• Utilizar un bucle con una condición que nunca se cumple.

• Tratar de asignar un valor que está fuera de los límites de una variable.

Existen muchas otras razones por las que podemos tener un error en tiempo de ejecución. La

mejor manera de prevenir estos errores será haciendo una depuración de nuestro código pero

eso será tema de otro artículo.

Page 55: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 55/113

Lo importante por ahora es estar consiente de estos dostipos de errores en VBA y saber

que debemos estar atentos para corregir todos los errores de sintaxis de nuestro código y

minimizar al máximo los posibles errores de ejecución.

Artículos relacionados

Depurar macros en

ExcelPor Moisés Ortíz el 18 mayo, 2012

Cuando nos encontramos con errores en nuestras macros podemos depurar el código

utilizando el Editor de Visual Basic para encontrar fácilmente los errores que pueda contenernuestro código VBA. Considera la siguiente macro:

Depurar código VBA

Para iniciar con la depuración del código podemos seleccionar la opción de

menúDepuración >Paso a paso por instrucciones o simplemente pulsar la tecla F8.

Page 56: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 56/113

Esto hará que se inicie la ejecución en la primera línea, la cual se mostrará con un fondo

amarillo indicando que esa instrucción es la que esta por ejecutarse.

Para continuar con la depuración debemos pulsar de nuevo la tecla F8 hasta llegar al final del

código. Cada vez que pulsamos la techa F8 suceden las siguientes cosas:

1. Excel ejecuta la instrucción que está sombreada en color amarillo

2. Si Excel encuentra un error en la instrucción, entonces enviará un mensaje de error.

3. Por el contrario, si no hubo error en dicha instrucción, entonces Excel marcará en

amarillo la siguiente instrucción a ejecutar.

De esta manera podemos ejecutar cada una de las líneas de nuestro código VBA y validar que

no exista error alguno. Regresando a nuestro ejemplo, al momento de llegar a la tercera

instrucción y pulsar la tecla F8, Excel enviará el siguiente mensaje de error:

Page 57: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 57/113

El mensaje nos advierte que el objeto no admite esa propiedad o método y se está refiriendo

al objetoRange en donde el métodoValue no está escrito de manera correcta y por lo tanto el

depurador de VBA no reconoce dicha propiedad. Pulsa el botón Aceptar para cerrar el cuadro

de diálogo y poder corregir el error en el código.

Ya hemos hablado sobre los diferentes tipos de errores en VBA y la depuración nos ayudará aprobar nuestro código y a encontrar la gran mayoría de los errores que podamos tener. Es

probable que al principio veas a la depuración como un trabajo muy exhaustivo pero cuando

tus programas y macros comiencen a crecer entonces verás todos los beneficios que nos da

ladepuración de macros en Excel.

PROGRAMACION

Variables en VBAPor Moisés Ortíz el 6 junio, 2012

Cuando programamos en VBA frecuentemente necesitamos un repositorio para almacenar el

resultado de alguna operación. Lasvariables en VBA son utilizadas para guardar valores y su

tipo dependerá de clase da dato que deseamos guardar dentro de ellas.

En VBA existen variables de tipo entero que almacenan números, variables de tipo doble que

también almacenan números pero con decimales, variables de tipo texto para guardar unacadena de caracteres entre algunos otros tipos de variables. A continuación haremos una

revisión de cada uno de estos tipos.

Variables de tipo entero

Page 58: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 58/113

Las variables de tipo entero son utilizadas para guardar números enteros. Debemos utilizar la

palabra claveIntegerpara declarar una variable de este tipo.

2im As +nteger

= ;

En la primera instrucción estoy declarando la variable con el nombre “x” y estoy indicando que

será del tipoInteger. “Declarar una variable” significa avisar a Excel sobre la existencia de

dicho repositorio para guardar información. En la segunda instrucción asigno el valor 6 a la

variable “x”.

Variables de tipo doble

Las variables de tipo doble pueden almacenar números con el doble de precisión incluyendo

números decimales. La palabra clave para este tipo de variables esDouble.

2im As 2ouble

= <.11;

Aunque las variables de tipo doble pueden almacenar números enteros sin problema, no es

recomendable hacerlo porque estaremos desperdiciando espacio en la memoria del

ordenador. Es decir, el tamaño reservado para una variable doble es el adecuado para

guardar números decimales, si solo guardamos un número entero quedará especio sin utilizar.

Por lo tanto es recomendable utilizar siempre el tipo de variable adecuado para cualquier

número.

Variables de tipo texto

Una variable de tipo texto se declara con la palabra claveString. En el siguiente código

declararé la variable título y posteriormente le asignaré un valor.

2im libro As 'tring

libro = "-rogramaci>n en 9cel"

Variables de tipo lógico

Una variable de tipo lógico es aquella que puede almacenar solamente dos valores: falso o

verdadero. La palabra clave para definir estas variables esBoolean.

Page 59: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 59/113

2im continuar As ,oolean

continuar = rue

La primera línea declara la variable “booleana” y en la segunda le asignamos un valor.

Solamente podemos asignar dos valores a este tipo de variables: True (verdadero) y False

(falso).

Estos son los tipos de variables básicos en VBA. Existen algunos más que iré tratando en

artículo posteriores. Mientras tanto es indispensable que aprendas a declarar adecuadamente

lasvariables en VBA porque será inevitable hacer uso de ellas dentro de nuestros

programas.

Cadenas de texto enVBAPor Moisés Ortíz el 12 junio, 2012

Existen varias funciones en VBA que podemos utilizar para manipular cadenas de texto. A

continuación revisaremos algunas de estas funciones VBA y observaremos el resultados de

cada una de ellas.

Para iniciar con esta revisión, debes colocar un botón de comando dentro de una hoja de

Excel y después hacer doble clic sobre él para introducir el código.

Page 60: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 60/113

Unir cadenas de texto

Para unir dos (o más) cadenas de texto podemos utilizar el operador &. Observa el siguiente

código:

El resultado de este código es el siguiente:

Page 61: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 61/113

La función Left

La función Left en VBA nos ayuda a extraer un número determinado de caracteres a la

izquierda de la cadena de texto.

En el código he especificado los 7 caracteres a la izquierda de la cadena de texto. El resultado

es el siguiente:

La función Right

La función Right nos permite extraer caracteres a la derecha de una cadena de texto. Observa

el siguiente código:

Page 62: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 62/113

En esta función la cuenta de caracteres se hace de derecha a izquierda siendo el último

carácter de la cadena de texto el primero que extraerá la función Right. Para este ejemplo he

pedido los últimos 5 caracteres a la derecha de la cadena de texto:

La función Len

La función Len nos ayuda a conocer la longitud de una cadena de texto, es decir, la cantidad

de caracteres que conforman a una cadena.

La función Len contará cada uno de los caracteres de la cadena y regresará un número:

La función InStr

Page 63: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 63/113

La función InStr devuelve la posición de un carácter dentro de la cadena. Supongamos que

quiero encontrar la posición de la letra “M” dentro de la cadena que contiene el valor “Hola

Mundo”.

Es importante resaltar que la función InStr es sensible a mayúsculas y minúsculas. Observa

cómo he especificado buscar la letra “M” (mayúscula) y el resultado de la función es elsiguiente:

La función InStr encontró la letra “M” en la posición número 6 comenzando desde la izquierda.

Si en lugar de la letra “M” busco la letra “m” (minúscula), la función InStr devolverá el valor 0

(cero) indicando que no ha encontrado dicha letra.

Además de indicar letras individuales en la función InStr, también podemos especificar

palabras completas por ejemplo:

ca&ena = "Hola 8un&o"

+n'tr (ca&ena/ "8un&o")

Por ejemplo, al buscar la palabra “Mundo” dentro de la cadena de texto obtendremos como

resultado la posición número 6 ya que en esa posición comienza la palabra “Mundo”.

La función Mid

Page 64: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 64/113

Con la función Mid podemos extraer una subcadena de otra cadena de texto con tan solo

especificar la posición inicial de la subcadena y su longitud. Observa el siguiente ejemplo:

La función Mid se moverá a la posición 15 de la cadena y a partir de ahí contará 7 caracteres y

devolverá como resultado la cadena comprendida entre ambas posiciones. En nuestro

ejemplo, la palabra “funcion” es la que se encuentra entre dichas posiciones.

Las funciones de texto en VBA nos ayudarán a manipular adecuadamente las cadenas detexto y podremos obtener los resultados que necesitamos.

La declaración If-

Then en VBAPor Moisés Ortíz el 20 junio, 2012

En ocasiones necesitamos ejecutar algunas líneas de código de nuestra macro solamente

cuando alguna condición se haya cumplido. Ladeclaración If-Thennos permite validar una

condición para tomar una decisión adecuada.

Ladeclaración If-Then en VBA es la más básica de todas las declaraciones de control de

flujo que son aquellas declaraciones que nos permiten tomar decisiones en base a una

Page 65: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 65/113

condición. Esta declaración la podemos traducir como Si-Entonces y la utilizaremos en

situaciones donde necesitamos realizar la siguiente evaluación:Si se cumple la

condiciónEntonces haz esto.

Ejemplo de la declaración If-ThenPara probar el funcionamiento de ladeclaración If-Then inserta un botón de comando

(Control ActiveX) en una hoja de Excel y haz doble clic sobre él para colocar el siguiente

código:

• En el primer paso se hace la declaración de las variables que utilizaré en el resto del

código.

• En el segundo paso asigno el valor de la celda A1 a la variablecalificación.

• El tercer paso contiene la declaración If-Then y que pruebaSi el valor de la

variablecalificación es mayor o igual a 60. En caso de ser verdaderoEntonces se asigna

el valor “Aprobado” a la variableresultado.

• El último paso es asignar el valor de la variableresultado a la celda B2.

Ahora observa el resultado al ejecutar esta macro.

Page 66: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 66/113

La declaración Else

Parece que todo funciona muy bien en el código anterior pero aún lo podemos mejorar

agregando ladeclaración Else de manera que tengamos una declaración de la forma If-Then-

Else. Esta variante nos permite hacer la siguiente evaluación:Si se cumple lacondición Entonces haz esto De lo contrario haz otra cosa.

Ladeclaración Else en VBA nos permite indicar otro bloque de instrucciones que se deben

ejecutar en caso de que la condición sea falsa. De esta manera podemos tomar una acción

determinada en caso de que la condición se cumpla o en caso de que no se cumpla.

Ahora modificaré el ejemplo anterior para asegurarme de que en caso de que la condición de

calificación mayor o igual a 60 no se cumpla se despliegue el resultado “reprobado”. Observa

el siguiente código.

En el tercer paso puedes observar ladeclaración If-Then-Else. Ahora observa el efecto de

este cambio al momento de ejecutar el código:

Page 67: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 67/113

Por último quiero que observes que en este segundo ejemplo ladeclaración If-Then-

Else termina con la declaración End If. Siempre que utilicemos la declaración If-Then o la

declaración If-Then-Else debemos terminar con End If.

La única ocasión donde no se termina con End If es cuando ladeclaración If-Then se puede

colocar en una sola línea como es el caso del primer ejemplo de este artículo.

Acceder celdas conVBAPor Moisés Ortíz el 25 junio, 2012

Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos

utilizar el objeto Range y también podemos utilizar el objeto Cells. A continuación revisaremosambos objetos.

Seleccionar una celda

Si deseamos seleccionar la celda B5 podemos utilizar cualquiera de las dos instrucciones

siguientes:

Range(",").'elect

Cells(/ ?).'elect

El objeto Cells tiene como primer argumento el número de fila y como segundo argumento el

número de columna.

Seleccionar un rango

Page 68: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 68/113

Para seleccionar un rango de celdas lo más conveniente es utilizar el objeto Range de la

siguiente manera:

Range("A12").'elect

El objeto Cells no nos permite seleccionar un rango porque solamente podemos especificar

una celda a la vez.

Establecer el valor de una celda

Para establecer el valor de una celda podemos utilizar alguna de las siguientes instrucciones:

Range(",").Value = @@

Cells(/ ?).Value = ;@@

Ventaja del objeto Cells

Es mucho más común encontrarse el objeto Range en las aplicaciones VBA, sin embargo el

objeto Cells ofrece una ventaja que debemos considerar cuando necesitamos hacer un

recorrido programático por varias celdas ya que será muy sencillo especificar las filas y

columnas utilizando una variable numérica.

For i = 1 o 1@

For % = 1 o Cells(i/ %).Value = i %

et %

et i

El bucle For-Next en

VBAPor Moisés Ortíz el 28 junio, 2012

En términos de programación, un bucle es una instrucción que nos permitirá ejecutar

repetidamente un conjunto de instrucciones hasta que se cumpla la condición que hayamos

especificado. Los bucles también son conocidos como ciclos.

Page 69: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 69/113

La instrucción For-Next

Elbucle For-Next es una de las instrucciones más útiles al programar en VBA. La sintaxis de

esta instrucción es la siguiente:

For   inicialización de variable   To   límite

BCon%unto &e instrucciones ue se repetirDnE

 Next   incrementar   variable

• Inicialización de variable: Ya que la instrucción For Next repite un conjunto de

instrucciones un número de veces específico, debemos inicializar una variable que irá

contando cada una de las repeticiones. Es común encontrar la instrucción escrita

comoFor i = 1 lo cual indica que la variable i llevará la cuenta de las repeticiones que

deseamos que inicien en 1.

• Límite: Además de inicializar la variable que llevará la cuenta de las repeticiones,

debemos especificar un límite donde se detendrá el ciclo. Este límite es indicado con la

instrucciónTo. De esta manera, si deseamos hacer un bucle que vaya desde 1 hasta 5 la

instrucción la escribiremos comoFor i = 1 To 5.

• Incrementar variable: El final del conjunto de instrucciones se indica con la instrucción

Next y que va seguida del nombre de la variable que lleva la cuenta para incrementar su

valor en uno. Así podemos terminar el bucle con la instrucciónNext i.

Ejemplo de un bucle For-Next

A continuación un ejemplo muy sencillo de unbucle For-Next donde la única instrucción que

se repite es la de mostrar una ventana de diálogo con el valor de la variable i:

Con este bucle provocaremos que se muestre una ventana de diálogo 5 veces y en cada una

de ellas se mostrará el valor actual de la variable i que comenzará con 1 y terminará con 5.

Observa el resultado:

Page 70: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 70/113

Ya que la variable i comienza con el valor 1, el primer cuadro de diálogo muestra el mensaje “i

= 1”, después “i = 2” y así sucesivamente hasta llegar al límite.

Elbucle For-Next en VBA nos ayudará a crear ciclos que ejecutarán un conjunto de

instrucciones hasta alcanzar el límite que hayamos especificado.

Operadores lógicos en

VBAPor Moisés Ortíz el 2 julio, 2012

Los operadores lógicos más comunes en VBA son: And y Or. Cada uno de estos operadores

es de mucha utilidad para evaluar condiciones y tomar decisiones adecuadas sobre el código

que será ejecutado.

Page 71: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 71/113

El operador lógico And

Eloperador lógico And es el operador que nos ayuda a forzar el cumplimiento de dos

condiciones. Este operador lo traducimos como “Y” de manera que para ejecutar un bloque de

código se debe cumplir lacondición1 Y lacondición2.

En el siguiente ejemplo tengo la calificación de dos exámenes. Solamente si ambos exámenes

tienen una calificación mayor a 70, entonces el estudiante será aprobado, de lo contrario la

calificación será reprobatoria.

El código que se ejecutará al pulsar el botón será el siguiente:

Al ejecutar este código obtendremos el resultado “Aprobado” ya que ambos exámenes tienen

una calificación mayor a 70:

Page 72: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 72/113

De esta manera comprobamos que eloperador lógico And nos ayuda a forzar que ambas

condiciones se cumplan. En cambio, si el valor de una de las celdas es menor a 70, entonces

tendremos un resultado diferente:

Eloperador lógico And devolverá el valor verdadero solamente cuando ambas condiciones

se cumplan y será suficiente con que una de ellas no se cumpla para obtener un resultado

negativo.

El operador lógico Or

Eloperador lógico Or lo traducimos como “O” y nos permitirá saber si al menos una de las

condiciones se cumple, es decir, si la condición1 O la condición2 se cumplen.

Si cambiamos un poco el ejemplo anterior y decimos que es suficiente que alguna de las dos

calificaciones sea mayor a 70 para que el estudiante sea aprobado, entonces podemos

modificar el código de la siguiente manera:

Si alguna de las calificaciones es mayor a 70, entonces el estudiante será aprobado:

Page 73: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 73/113

La única manera en que eloperador lógico Or nos devuelva un valor falso es que ninguna de

las condiciones se cumpla. En nuestro ejemplo, el alumno estará reprobado solamente cuando

ambas calificaciones sean menores a 70:

Podemos concluir que al evaluar dos condiciones, los operadores And y Or se comportarán de

la siguiente manera:

Eventos en VBAPor Moisés Ortíz el 5 julio, 2012

Loseventos en VBA nos ayudan a monitorear las acciones que realizan los usuarios en Excel

de manera que podamos controlar la acción a tomar cuando el usuario hace algo específico

como el activar una hoja o hacer clic en alguna celda.

Ejemplos de eventos en VBA

Algunos ejemplos deeventos en VBA son los siguientes:

• WorkbookOpen: El usuario abre un libro de Excel.

Page 74: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 74/113

• WorkbookActivate: El usuario activa un libro de Excel.

• SelectionChange: El usuario cambia la selección de celdas en una hoja.

Para descubrir los eventos que tiene un objeto es suficiente con abrir el Editor de Visual Basic

y posteriormente el Examinador de objetos (F2). En el panel izquierdo se mostrarán los

objetos y en el panel derecho las propiedades, métodos y eventos de dicho objeto. Podrás

distinguir los eventos porque tienen un icono en forma de rayo (color amarillo):

Un ejemplo de eventos en VBA

El ejemplo que crearemos en esta ocasión es para activar un cuadro de diálogo con el

mensaje “Bienvenido a la Hoja 2” y que se mostrará cuando activemos la Hoja2 de nuestro

libro. Para comenzar, debes seleccionar el objeto Hoja2 del panel izquierdo del Editor de

Visual Basic y posteriormente seleccionar la opción Worksheet:

Page 75: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 75/113

Esto creará automáticamente la subrutina para el evento SelectionChange pero podemos

fácilmente crear otro evento seleccionándolo de la lista de Procedimientos. Para este ejemplocrearé el evento Activate:

Una vez creada la subrutina para el evento Activate solamente insertaré el código para que se

muestre el mensaje dentro del cuadro de diálogo:

Page 76: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 76/113

Ahora que hemos definido una acción asociada al evento Activate de la Hoja2, el mensaje se

mostrará cada vez que actives la Hoja2.

Loseventos en VBA son de mucha utilidad porque nos ayudan a controlar el momento exacto

en que deseamos ejecutar algún bloque de código al iniciarse alguna acción por el usuario.

Artículos relacionados

Objetos, propiedades y métodos en VBA

Arreglos en VBAPor Moisés Ortíz el 25 julio, 2012

Losarreglos en VBA pueden ser entendidos como un grupo de variables contenidas dentro

de otro repositorio. Dentro de un arreglo podemos referirnos a un valor específico (elemento)

utilizando su posición (índice).

Para comprender mejor lo que es un arreglo observa la siguiente imagen:

Un arreglo es una colección de “casillas” que contendrán variables individuales. Casa casilla

tendrá un número de índice el cual nos permitirá asignar u obtener el valor que contiene.

Crear un arreglo en VBA

Para crear un arreglo en VBA utilizamos la siguiente instrucción:

2im -aises(1 o ) As 'tring

Con este código estamos creando el arreglo llamado Paises que tendrá 5 elementos y

estamos indicando que cada uno de los elementos será del tipo String, es decir, cadenas de

Page 77: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 77/113

texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente

manera.

-aises(1) = "Argentina"

-aises(?) = "Colombia"

-aises(<) = "9spaa"

-aises() = "8Gico"

-aises() = "-er"

Acceder un elemento del arreglo

Para acceder cualquier elemento del arreglo simplemente colocamos el nombre del arreglo

seguido por paréntesis y el número de índice del elemento que necesitamos. Por ejemplo,

para desplegar un mensaje con el nombre de país España puedo utilizar la siguiente

instrucción:

8sg,o -aises(<)

El resultado de esta instrucción será el siguiente:

Fecha y hora en VBAPor Moisés Ortíz el 27 julio, 2012

Los valores defecha y hora en VBA pueden ser manipulados de diversas maneras. En estaocasión aprenderemos cómo obtener el año, mes y día en VBA y cómo hacer operaciones

básicas con fechas.

Para realizar estos ejemplos debes colocar un control de botón en una hoja de Excel y colocar

las líneas de código mostradas.

Page 78: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 78/113

Obtener la fecha y hora actual

Para obtener la fecha actual en VBA utilizamos la función Date y para obtener la hora actual

usamos Now.

En este ejemplo las variablesfechaActual yhoraActual contienen la fecha y horas actuales

respectivamente.

Obtener el año, mes y día

En el ejemplo anterior he obtenido la fecha actual en la variablefechaActual, sin embargo, si

deseo mostrar solamente el año puedo utilizar la función Year.

El resultado de este código es el siguiente:

Page 79: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 79/113

Al trabajar con fechas podremos obtener el mes utilizando la función Month y para obtener el

día la función Day.

Obtener la hora, minuto y segundo

Para obtener la hora de la variablehoraActual utilizaremos la función Hour de la siguiente

manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones Minute y Second.

Page 80: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 80/113

Convertir una cadena de texto en fecha

Ya hemos visto que la función Date nos devuelve la fecha actual, pero podemos utilizar otra

función que nos permitirá convertir una cadena de texto en una fecha. La función que

utilizaremos para este será la función DateValue.

El único argumento de la función DateValue es la cadena de texto que convertirá en fecha. El

resultado de esta conversión es el siguiente:

Sumar días a una fecha

Para sumar días a una fecha en VBA utilizaremos la función DateAdd. Esta función nos

permite especificar la cantidad exacta de días a sumar:

Page 81: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 81/113

Observa el resultado de sumar 5 días a la fecha original:

El primer argumento de la función DateAdd determina la unidad de tiempo que será sumada.

En este ejemplo especifiqué “d” para indicar días, pero podemos utilizar otras medidas detiempo:

• “yyyy” para años

• “m” para meses

• “d” para días

• “ww” para semanas

Las fechas y horas son un tipo de dato muy común con el que seguramente tendrás que

trabajar al crear tus macros. Es importante que aprendas a utilizar las funciones VBA que nos

permitirán manipular adecuadamente la información.

Funciones VBA

Page 82: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 82/113

Por Moisés Ortíz el 11 diciembre, 2011

El lenguaje de programación VBA contiene un número considerable defunciones que

podemos utilizar para construir código en Excel. Cuando estás escribiendo código, puedes

introducir la palabra VBA seguida de un punto y verás una lista desplegable de estas

funciones.

La siguiente tabla provee una descripción breve de algunas de lasfunciones VBA más

utilizadas.

F*&CI.& DESC$IPCI.&

Abs %eresa el valor absoluto de un nmero

Asc Obtiene el valor ASCII del primer caracter de una cadena de texto

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

CCur  Convierte una expresión al tipo de dato moneda (Currency)

CDate Convierte una expresión al tipo de dato fecha (Date)

CDbl Convierte una expresión al tipo de dato doble (Double)

CDec Convierte una expresión al tipo de dato decimal (Decimal)

Choose Selecciona un valor de una lista de arumentos

Chr  Convierte un valor A!SI en valor de tipo texto

CInt Convierte una expresión en un dato de tipo entero (Int)

CLng Convierte una expresión en un dato de tipo laro ("on)

CreateObject Crea un ob#eto de tipo O"$

Page 83: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 83/113

CStr  Convierte una expresión en un dato de tipo texto (Strin)

CurDir  %eresa la ruta actual

CVar  Convierte una expresión en un dato de tipo variante (&ar)

Date %eresa la fecha actual del sistema

DateAdd  Area un intervalo de tiempo a una fecha especificada

DateDiff  Obtiene la diferencia entre una fecha y un intervalo de tiempo especificado

DatePart %eresa una parte espec'fica de una fecha

DateSerial Convierte una fecha en un nmero serial

DateValue Convierte una cadena de texto en una fecha

Day %eresa el d'a del mes de una fecha

Dir  %eresa el nombre de un archivo o directorio ue concuerde con un patrón

EOF %eresa verdadero si se ha lleado al final de un archivo

FileDateTie %eresa la fecha y hora de la ltima modificación de un archivo

FileLen %eresa el nmero de bytes en un archivo

ForatCurrency %eresa un nmero como un texto con formato de moneda

ForatPercent %eresa un nmero como un texto con formato de porcenta#e

!our  %eresa la hora de un valor de tiempo

IIf  %eresa un de dos partes* dependiendo de la evaluación de una expresión

Page 84: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 84/113

In"utBo# +uestra un cuadro de di,loo ue solicita la entrada del usuario

InStr  %eresa la posición de una cadena de texto dentro de otra cadena

InStr$e% %eresa la pocisión de una cadena de texto dentro de otra cadena pero empe-ando desde el final

Int %eresa la parte entera de un nmero

IsDate %eresa verdadero si la variable es una fecha

IsE"ty %eresa verdadero si la variable est, vac'a

IsError  %eresa verdadero si la expresión es un valor de error 

Is&ull %eresa verdadero si la expresión es un valor nulo

Is&ueric %eresa verdadero si la variable es un valor num.rico

'oin %eresa una cadena de texto creada al unir las cadenas contenidas en un arrrelo

LCase %eresa una cadena convertida en minsculas

Left %eresa un nmero espec'fico de caracteres a la i-uierda de una cadena

Len %eresa la lonitud de una cadena (en caracteres)

LTri %emueve los espacios a la i-uierda de una cadena

(id $xtrae un nmero espec'fico de caracteres de una cadena de texto

(inute %eresa el minuto de una dato de tiempo

(onth %eresa el mes de una fecha

(sgBo# Despliea un cuadro de dialoo con un mensa#e especificado

Page 85: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 85/113

&o) %eresa la fecha y hora actual del sistema

$e"lace %eempla-a una cadena de texto con otra

S"ace reresa una cadena de texto con el nmero de espacios especidicados

S"lit %eresa un arrelo formado for cadenas de texto ue formaban una sola cadena

Str  %eresa la representación en texto de un nmero

$ight %eresa un nmero especificado de carecteres a la derecha de una cadena de texto

$nd %eresa un nmero aleatorio entre / y 0

$ound %edondea un nmero a una cantidad espec'f ica de decimales

$Tri %emueve los espacios en blanco a la derecha de una cadena de texto

Second %eresa los seundos de un dato de tiempo

StrCo" Compara dos cadenas de texto

Str$e%erse Invierte el orden de los caracteres de una cadena

Tie %eresa el tiempo actual del sistema

Tier  %eresa el nmero de seundos desde la media noche

TieValue Convierte una cadena de texto a un nmer de serie de tiempo

Tri %emueve los espacios en blanco al inicio y final de una cadena de texto

Ty"e&ae Obtiene el nombre del tipo de dato de una variable

*Case Convierte una cadena de texto en maysculas

Page 86: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 86/113

Val %eresa el nmero contenido en una cadena de texto

+ee,day %eresa un nmero ue representa un d'a de la semana

+ee,day&ae %eresa el nombre de un d'a de la semana

 -ear  Obtiene el a1o de una fecha

Creando una función

VBAPor Moisés Ortíz el 15 octubre, 2011

Como hemos visto en el artículoTu primera macro con VBA, una subrutina nos ayuda a

organizar y agrupar las instrucciones en nuestro código. El día de hoy te mostraré cómo crear

unafunción VBA, la cual es similar a una subrutina excepto por una cosa.

A diferencia de las subrutinas, lasfunciones VBA fueron diseñadas para regresar un valor.

Así es, a través de una función podemos agrupar código que nos ayudará a hacer algún

cálculo específico y obtener un resultado de regreso.

Unafunción VBA también es conocida como Función Definida por el Usuario, UDF por sus

siglas en inglés, y una vez creada puede ser utilizada de la misma manera que las funciones

incluidas en Excel como la función SUMAR o la función CONSULTAV. Esto hace que las

funciones VBA sean una herramienta muy poderosa.

A continuación mostraré una función que toma un rango y regresa la suma de cada una de

sus celdas. Posteriormente iré explicando el detalle de la función.

Page 87: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 87/113

La palabra clave Function

La primera línea de código comienza con la palabraFunction la cual define el inicio de la

función. Observa también cómo la última línea de código esEnd Function que está

especificando el término de la función.

Inmediatamente después de la palabra claveFunction se debe especificar el nombre de la

función que en este ejemplo esMiSuma seguida de paréntesis que de manera opcional

pueden contener una lista de parámetros.

Parámetros de una función VBA

Los parámetros son el medio por el cual pasamos información de entrada a la función.

Algunas funciones necesitarán de dichas entradas para realizar algún cálculo y algunas otras

no, es por ello que los parámetros de una función son opcionales. Puedes incluir tantos

parámetros como sean necesarios y solamente debes recordar separarlos por una coma.

Un parámetro no es más que una variable y por lo tanto puedes observar que en el ejemplo he

definido la variablerango que será del tipoRange.

Valor de retorno

Como mencioné al principio, la característica principal de una función es que puede regresar

un valor. Es por eso que al definir una función se debe indicar el tipo del valor de retorno que

tendrá dicha función. En este caso el valor de retorno será de tipoDouble y se está

especificado por las palabrasAs Double que aparecen después de los paréntesis.

Page 88: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 88/113

Cuerpo de la función VBA

Una vez definida la función se pueden especificar todas las instrucciones que serán ejecutas.

En el ejemplo he comenzado por definir un par de variables, la variablecelda que será del

tipoRange y la variableresultado del tipoDouble. En ésta última variable es donde se irá

acumulando la suma de todas las celdas.

La parte central de la función se encuentra en la instrucciónFor Each ya que realiza un

recorrido por todas las celdas del rango que fue especificado como parámetro. Para cada

celda que se encuentra se va sumando su contenido en la variableresultado.

Retornando el valor

Una vez que se han hecho los cálculos necesarios, es importante regresar el valor. Parahacerlo es indispensable igualar el nombre de la función al valor o variable que contiene el

valor que se desea regresar. En nuestro ejemplo, la variable resultado es la que contiene la

suma de todas las celdas por lo que se iguala con el nombre de la función en la líneaMiSuma

= resultado.

Probando la función VBA

Finalmente probaré lafunciónVBA recién creada dentro de una hoja de Excel. Tal como lo

definimos en el código, el único parámetro de la función debe ser un rango del cual meregresará la suma de los valores de la celda. Observa el siguiente ejemplo.

Aunque la función MiSuma hace lo mismo que la función de Excel SUMAR, nos ha servido de

ejemplo para introducir el tema de las funciones en VBA. Con este ejemplo tan sencillo hemos

creado nuestra primera función VBA.

Artículos relacionados

Page 89: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 89/113

Controles de

formulario en ExcelPor Moisés Ortíz el 19 diciembre, 2011

Loscontroles de formulario en Excel son objetos que podemos colocar dentro de una hoja y

que nos darán funcionalidad adicional para interactuar mejor con los usuarios y tener un mejor

control sobre la información.

Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de una

lista predefinida o permitir que el usuario inicie una macro con tan solo pulsar un botón.

Loscontroles de formulario en Excel se encuentran dentro de la fichaProgramador dentro

del grupoControles. Solamente pulsa el botónInsertar y observarás cada uno de ellos:

Justo por debajo de loscontroles de formulario podrás observar el grupo decontroles

 ActiveX pero sus diferencias y similitudes las discutiremos en otro artículo. Por ahora nos

enfocaremos solamente en loscontroles de formulario.

Page 90: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 90/113

¿Cómo insertar un control de formulario en

Excel?

Para insertar cualquiera de loscontroles de formulario debes seleccionarlo del menúdesplegable y hacer clic sobre la hoja de Excel arrastrando el borde para “dibujar” el contorno

del control. Observa este procedimiento.

Los diferentes controles de formulario

Existen diferentes tipos decontroles de formulario en Excel que ofrecen diversos tipos de

funcionalidad e interacción con el usuario. Desde una simple etiqueta hasta controles que

permiten una selección múltiple de sus opciones. A continuación una breve descripción de

cada uno de ellos.

• Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra

dentro de un intervalo predefinido.

• Botón. El botón nos permite ejecutar una macro al momento de hacer clic sobre él.

• Botón de opción. Nos permite una única selección dentro de un conjunto de

opciones.

• Casilla de verificación. Permite la selección o no selección de una opción.

• Control de número. Nos ayuda a aumentar o disminuir un valor numérico.

• Cuadro combinado. Es una combinación de un cuadro de texto con un cuadro de

lista.

• Cuadro de grupo. Agrupa varios controles dentro de un rectángulo.

• Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una sola

opción o múltiples opciones de acuerdo a la configuración del control.

• Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.

Page 91: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 91/113

Controles de formulario no disponibles en

Excel 2010

Loscontroles de formulario han estado presentes por varias versiones de Excel, sinembargo existen algunos controles que ya no pueden ser utilizados en Excel 2010 como lo

son elCampo de texto, elCuadro combinado de lista y elCuadro combinado

desplegable. Sin embargo podemos alcanzar funcionalidad similar utilizando controles

ActiveX.

Artículos relacionados

Controles ActiveX enExcelPor Moisés Ortíz el 30 diciembre, 2011

Loscontroles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de

formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido

comoControles de formulario y que tienen una funcionalidad similar, sin embargo existen

algunas diferencias entre ambos tipos.

Controles ActiveX y controles de formulario

Loscontroles de formulario fueron introducidos desde la versión 4 de Excel y por lo tanto han

estado presentes en la aplicación por más tiempo que loscontroles ActiveX los cuales

comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron

introducidos posteriormente ofrecen más posibilidades de configuración y formato que los

controles de formulario. Ambos tipos de controles se encuentran en la ficha Programador.

Page 92: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 92/113

La diferencia más significativa entre ambos es la manera en como podemos obtener

información de los controles al momento de interactuar con el usuario. Los controles de

formulario solamente responderán después de que el usuario ha interactuado con ellos, como

después de haber pulsado el botón. Por el contrario, loscontroles ActiveX responden demanera continua a las acciones del usuario lo cual nos permite realizar acciones como

cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratón sobre el

botón.

Propiedades de los controles ActiveX

A diferencia de los controles de formulario, loscontroles ActiveX tienen una serie de

propiedades que podemos configurar pulsando el botón Propiedades que se encuentra dentro

del grupo Controles de la ficha Programador.

Antes de poder ver las propiedades de uncontrol ActiveX debemos pulsar el botónModo

Diseño el cual nos permitirá seleccionar el control y posteriormente ver sus propiedades.

Cada tipo decontrol ActiveX mostrará una ventana de Propiedades con sus propias

características. A continuación un ejemplo de la ventana Propiedades para un botón de

comando ActiveX:

Page 93: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 93/113

Controles ActiveX con subrutinas VBA

Otra diferencia entre los controles de formulario y loscontroles ActiveX es que los primeros

pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciará la

ejecución de dicha macro.

Loscontroles ActiveX no tienen asignada una macro explícitamente sino que podemos

asignar código VBA para cada evento del control. Un evento de un control ActiveX puede ser

el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener elfoco sobre el control ActiveX, entre otros eventos más.

Para asignar código a uno de los eventos de uncontrol ActiveX solamente debemos hacer

clic derecho sobre él y seleccionar la opciónVer código.

Page 94: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 94/113

Esto mostrará elEditor de Visual Basic con una subrutina para el eventoClick()donde

podremos escribir nuestro código.

En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para

nuestro control ActiveX y para los cuales podemos escribir código VBA. Al seleccionar

cualquiera de dichos eventos se insertará una nueva subrutina que podremos utilizar. Son

precisamente la gran cantidad de eventos disponibles para loscontroles ActiveX lo que los

hace controles muy poderosos que podemos utilizar en nuestros formularios.

Otra ventaja de los controles ActiveX

En la versión de Excel 2010 algunos controles de formulario han dejado de ser soportados y

no podemos utilizarlos más. Ese es el caso del control de formulario conocido como campo de

texto. Sin embargo, dentro de la lista decontroles ActiveX tenemos disponibles un control

Page 95: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 95/113

llamadoCuadro de texto lo cual puede hacer atractiva la opción de utilizarcontroles

ActiveX en lugar de controles de formulario.

Cuadro de texto enExcelPor Moisés Ortíz el 31 julio, 2012

Elcuadro de texto es un control ActiveX que muestra un campo vacío donde el usuario

puede introducir cualquier texto. En esta ocasión revisaremos cómo incrustar un cuadro de

texto y hacer referencia al mismo desde código VBA.

Insertar un cuadro de texto en Excel

Para insertar uncuadro de texto en una hoja de Excel debes ir a laficha Programador y

hacer clic en el botón Insertar y entonces hacer clic sobre la opción Cuadro de texto de la

sección Controles ActiveX.

El puntero del ratón se convertirá en una cruz la cual nos permitirá dibujar elcuadro de

texto sobre la hoja de Excel. Una vez dibujado el cuadro de texto podrás hacer clic derecho

sobre él y seleccionar la opción Propiedades para conocer el nombre que la ha sido asignado.

Page 96: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 96/113

También puedes ver las propiedades de cualquier control seleccionándolo primero y pulsando

el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Modificar valor del cuadro de textoSi deseas colocar un texto dentro delcuadro de texto desde VBA puedes utilizar una

instrucción como la siguiente:

et,o1.et = "eto inicial"

Esto hará que elcuadro de texto se vea de la siguiente manera:

 

Leer valor del cuadro de texto

Si quieres leer el valor delcuadro de texto y colocarlo en una celda podemos utilizar la

siguiente instrucción:

Range("A1").Value = et,o1.et

El valor de la celda será el mismo que el delcuadro de texto.

Page 97: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 97/113

Si deseas limpiar elcuadro de texto puedes utilizar la siguiente instrucción:

et,o1.et = ""

Artículos relacionados

Controles ActiveX en Excel

Cuadro de lista enVBAPor Moisés Ortíz el 2 agosto, 2012

Elcuadro de lista es un control ActiveX que nos permite desplegar una serie de opciones de

las cuales el usuario puede realizar una selección. Podemos configurar el cuadro de lista para

permitir seleccionar uno o varios elementos de la lista.

Dibujar un cuadro de lista

Para insertar uncuadro de lista en una hoja de Excel debemos ir a la ficha Programador y

pulsar el botón Insertar para seleccionar la opciónCuadro de lista (control ActiveX).

Page 98: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 98/113

Especificar los elementos del cuadro de listaUna alternativa para indicar los elementos de uncuadro de lista es a través de la propiedad

llamadaListFillRange. Para ello debemos abrir las propiedades del control e indicar el rango

de celdas que contiene los elementos:

En este ejemplo he especificado que los valores sean tomados del rango A1:A6, lo cual dacomo resultado uncuadro de listacon los valores especificados en dicho rango:

Page 99: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 99/113

Elementos del cuadro de lista por código

Otra alternativa para indicar los elementos de uncuadro de lista es a través de código VBA.

Para ello puedes incluir el siguiente código en el evento Workbook_Open:

De esta manera cuando se abra el libro se agregarán las opciones alcuadro de lista llamado

ListBox1.

Asociar una celda al cuadro de lista

Adicionalmente podemos asociar una celda alcuadro de lista la cual mostrará la selección

que hagamos. Para hacer esta asociación debemos especificar la dirección de la celda en la

propiedad LinkedCell:

Page 100: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 100/113

De esta manera, cada vez que hagamos una selección de alguna de las opciones delcuadro

de lista se verá reflejado su valor en la celda asociada:

Artículos relacionados

Cuadro de lista de selección múltiple

Cuadro combinado

en VBAPor Moisés Ortíz el 6 agosto, 2012

Excel tiene un control ActiveX conocido comoCuadro combinado el cual también es llamado

comúnmente por su nombre en inglés:Combo Box. Este control nos permite crear listas

desplegables en nuestros formularios.

Page 101: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 101/113

Para insertar unCuadro combinado debemos ir a la ficha Programador y dentro del botón

Insertar pulsar el comandoCuadro combinado (control ActiveX):

Después de dibujar elCuadro combinado tendrás un resultado como el siguiente:

Agregar elementos al cuadro combinado

Si quiero que elCuadro combinado muestre los valores del rango A1:A5, puedo utilizar la

propiedadListFillRange donde puedo indicar este rango:

Page 102: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 102/113

Como resultado obtendré los valores de las celdas como elementos delCuadro combinado:

Diferencia con el cuadro de lista

Una diferencia importante entre elCuadro combinado y elcuadro de lista es que el primero

permite que el usuario capture una opción diferente a las mostradas en la lista. En el ejemplo

anterior no aparecía el día domingo como parte de los elementos, sin embargo puedo capturar

el día domingo dentro del cuadro de lista.

Page 103: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 103/113

Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:

• Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado

• Utilizar elCuadro combinado pero validar la opción seleccionada con código VBA de

manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un

ejemplo de código de validación es el siguiente:

Asociar una celda al cuadro combinado

Al igual que con otros controles ActiveX, podemos asocias una celda al cuadro combinado de

manera que muestre el elemento de la lista que haya sido seleccionado. Esta configuración la

hacemos en la propiedadLinkedCell:

Page 104: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 104/113

Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en la

celda indicada en la propiedadLinkedCell:

Casilla de verificación

en VBAPor Moisés Ortíz el 8 agosto, 2012

Unacasilla de verificación es un control ActiveX que podemos utilizar para permitir que un

usuario marque una opción y por lo tanto poder conocer sus preferencias al verificar dicho

valor en código VBA.

Page 105: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 105/113

El control ActiveX casilla de verificación

Para insertar este control debemos ir al comando Insertar y seleccionar la opciónCasilla de

verificación (Control ActiveX).

Después de dibujar este control tendrás el siguiente resultado:

Propiedades de una casilla de verificación

La primera propiedad que desearas modificar de unacasilla de verificación será su

propiedadCaption que es la que almacena el texto desplegado dentro del control ActiveX. Por

ejemplo, si deseo que el control muestre el texto “Mayor de edad” debo hacer el cambio de la

siguiente manera:

Page 106: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 106/113

La otra propiedad de unacasilla de verificación que tal vez quieras modificar será la

propiedadValue que de manera predeterminada tendrá el valorFalse lo cual indica que el

control se mostrará desmarcado. Si deseas que el control se muestre marcado de manera

predeterminada, debes poner el valorTrue en la propiedadValue:

Page 107: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 107/113

Valor de una casilla de verificación

Unacasilla de verificación nos dirá su ha sido seleccionada o no, es decir, nos devolverá un

valor FALSO o VERDADERO. Para leer este valor debemos acceder a la propiedadValue del

control de la siguiente manera:

-ri#ate 'ub C$eck,o10Click()

Range("C").Value = C$eck,o1.Value

9n& 'ub

Esta línea de código coloca el valor de lacasilla de verificación en la celda C4. De esta

manera, al seleccionar la casilla de verificación obtendré el siguiente resultado:

Para validar en VBA si lacasilla de verificación tiene un valor u otro podemos utilizar un

código como el siguiente:

+3 C$eck,o1.Value = rue $en Range("C").Value = 1

+3 C$eck,o1.Value = False $en Range("C").Value = @

La primera línea valida si el control ActiveX tiene un valor verdadero y de ser así coloca el

número 1 en la celda C4. Si lacasilla de verificación no ha sido seleccionada (falso)

entonces colocará el número cero en la celda C4.

Botón de opción en

VBAPor Moisés Ortíz el 10 agosto, 2012

Page 108: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 108/113

Unbotón de opción es un control ActiveX que nos permitirá seleccionar una sola opción

dentro de un grupo de botones de opción. A diferencia de las casillas de verificación, los

botones de opción dependen uno del otro.

El botón de opción en ExcelPara insertar unbotón de opción hacemos clic en el comando Insertar de la ficha

Programador.

Un solo botón de opción no hace mucho sentido, así que siempre agregamos dos o

másbotones de opción para permitir que usuario haga una selección de cualquiera de ellos.

Una vez que se ha agregado un segundobotón de opción podrás notar que al seleccionar

uno de ellos se desmarcarán todos los demás.

La propiedad Caption

Page 109: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 109/113

De manera predeterminada Excel colocará elbotón de opción con un nombre como

OptionButton1. Para cambiar este texto debemos editar la propiedadCaption del botón de

opción.

El botón de opción en VBA

Para saber si unbotón de opción ha sido seleccionado podemos acceder a su

propiedadValue de la siguiente manera:

-ri#ate 'ub Option,utton10Click()

+3 Option,utton1.Value = rue $en 8sg,o ("Has selecciona&o la opci>n Hombre")

9n& 'ub

La propiedadValue es la que nos indica si el control está seleccionado, en cuyo caso, la

propiedad será igual aTrue. Para este ejemplo, al validar que elbotón de opción está

seleccionado, se mostrará un cuadro de diálogo con un mensaje sobre la opción seleccionada.

Formularios en VBAPor Moisés Ortíz el 14 agosto, 2012

Page 110: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 110/113

Losformularios en VBA no son más que un cuadro de diálogo de Excel donde podremos

colocar controles que nos ayudarán a solicitar información del usuario. Podremos colocar

cajas de texto, etiquetas, cuadros combinados, botones de comando, etc.

Crear un formulario en ExcelLosformularios de Excel son creados desde el Editor de Visual Basic donde debemos

seleccionar la opción de menú Insertar y posteriormente la opción UserForm.

Inmediatamente se mostrar unformulario en blanco y de igual manera podrás observar

elCuadro de herramientas:

Page 111: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 111/113

Si no ves elCuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro de

herramientas.

Agregar controles al formulario

Para agregar un control alformulario debes seleccionarlo del Cuadro de herramientas y

dibujarlo sobre el formulario. En mi formulario he agregado etiquetas y cuadros de texto así

como un par de botones de comando:

Page 112: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 112/113

El texto de las etiquetas se modifica en la propiedad llamadaCaption. Para realizar este

cambio solamente selecciona el control y se mostrará la ventana de Propiedades dondepodrás hacer la modificación. De igual manera el texto desplegado en los botones de

comando se modifica en su propiedadCaption.

Código para el botón Cancelar

El botón cancelar cerrará elformulario sin guardar la información capturada en ningún lugar.

El código que debemos utilizar es el siguiente:

-ri#ate 'ub Comman&,utton?0Click()5nloa& 8e

9n& 'ub

Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload Me”

cerrará elformulario.

Código para el botón Aceptar

A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de texto enlas celdas A1, B1 y C1. El código utilizado es el siguiente:

-ri#ate 'ub Comman&,utton10Click()

Works$eets("Ho%a1").Range("A1").Value = 8e.et,o1.Value

Works$eets("Ho%a1").Range(",1").Value = 8e.et,o?.Value

Page 113: Curso Macros

7/17/2019 Curso Macros

http://slidepdf.com/reader/full/curso-macros 113/113

Works$eets("Ho%a1").Range("C1").Value = 8e.et,o<.Value

9n& 'ub

Al pulsar el botón Aceptar se transferirán los valores de los controlesTextBox hacia las celdas

de la Hoja1.

Botón para abrir formulario

Para facilitar la apertura del formulario puedes colocar un botón ActiveX en la hoja con el

siguiente código:

-ri#ate 'ub Comman&,utton10Click()

5serForm1.'$o*

9n& 'ub

Probar el formulario

Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:


Recommended