Sunteți pe pagina 1din 344

Aprendiendo OOo Basic

Autor : Mauricio Baeza Servn


Correo : mauricio (NO-SPAM) universolibre PUNTO org
Fecha : 15 e Se!"iembre el #$$%
Licencia : &NU 'ree (ocumen"a"ion )icense* v1+# o !os"erior
Ultima modificacin : , e agos"o e #$$-
Para ayudar : A!o.a es"e !ro.ec"o
/o!.rig0" (c) #$$% Mauricio Baeza Servin+ Se concee !ermiso !ara
co!iar* is"ribuir .1o moi2icar es"e ocumen"o ba3o los "4rminos e la
)icencia e (ocumen"aci5n )ibre e &NU* 6ersi5n 1+# o cual7uier
o"ra versi5n !os"erior !ublicaa !or la 'ree So2"8are 'ouna"ion9 sin
Secciones :nvarian"es ni Te;"os e /ubier"a (elan"era ni Te;"os e
/ubier"a Trasera+ Una co!ia e la licencia es"< incluia en la secci5n
"i"ulaa &NU 'ree (ocumen"a"ion )icense+
Too el c5igo incluio en es"e libro es"a ba3o la siguien"e licencia=
/o!.rig0" (/) #$$% Mauricio Baeza Servn
>s"e !rograma es so2"8are libre= us"e !uee reis"ribuirlo .1o
moi2icarlo ba3o los "4rminos e la )icencia P?blica &eneral &NU
!ublicaa !or la 'unaci5n !ara el So2"8are )ibre* .a sea la versi5n @
e la )icencia* o (a su elecci5n) cual7uier versi5n !os"erior+
>s"e !rograma se is"ribu.e con la es!eranza e 7ue sea ?"il* !ero
S:N &AAANTBA A)&UNA9 ni si7uiera la garan"a im!lci"a
M>A/ANT:) o e APT:TU( PAAA UN PAOPCS:TO
(>T>AM:NA(O+
/onsul"e los e"alles e la )icencia P?blica &eneral &NU !ara
ob"ener una in2ormaci5n m<s e"allaa+
(ebera 0aber recibio una co!ia e la )icencia P?blica &eneral &NU
3un"o a es"e !rograma+
>n caso con"rario* consul"e D0""!=11888+gnu+org1licenses1E+
A!renieno OOo Basic @
ndice de contenido
1 - Introduccin................................................................................7
2 - Conceptos iniciales......................................................................9
3 - Mi primer macro........................................................................15
4 - El lenguaje o !asic...............................................................22
4.1 - "eclarando # usando $aria%les................................................25
4.2 - Instrucciones # &unciones en o !asic..................................31
4.3 - Constantes ' (iempre lo mismo...............................................35
4.4 - !i&urcaciones ' )omando decisiones.......................................35
4.5 - !ucles ' *epitelo otra $e+........................................................3,
4.- - Matrices ' .untos pero no re$ueltos.........................................4-
4.7 - /m%ito de $aria%les ' 01ora me $e+2 a1ora no........................5-
4.7.1 - /m%ito 3ocal.....................................................................5-
4.7.2 - /m%ito 4ri$ado.................................................................59
4.7.3 - /m%ito de "ominio 4u%lico...............................................-2
4.7.4 - /m%ito 5lo%al...................................................................-2
4., - 6unciones # su%rutinas ' "i$ide # $encer7s............................-2
4.9 - peradores.............................................................................. 73
4.9.1 - 8 9 : E;ponenciacin <aritm=tico>....................................73
4.9.2 - 8 ? : Multiplicacin <aritm=tico>........................................75
4.9.3 - 8 @ : "i$isin <aritm=tico>..................................................7-
4.9.4 - 8 A : "i$isin entera <aritm=tico>.......................................77
4.9.5 - 8Mod: *esto de una di$isin entera <aritm=tico>..............7,
4.9.- - 8 B : (uma <aritm=tico>....................................................79
4.9.7 - 8 - : *esta <aritm=tico>......................................................,C
4.9., - peradores de relacin.....................................................,1
4.9.9 - Dot ' Degacin <lgico>.....................................................,1
4.9.1C - 0nd ' E <lgico>...............................................................,2
4.9.11 - r ' <lgico>.................................................................,3
4.9.12 - For ' e;clusi$a <lgico>................................................,4
4.9.13 - EG$ ' EGui$alencia <opuesto a For> <lgico>....................,5
4.9.14 - Imp ' Implicacin <lgico>...............................................,5
F
4.9.15 - 4recedencia de operadores............................................,-
4.1C - Control de errores..................................................................,,
4.11 - Halidacin de datos................................................................9-
4.12 - El I"E ' Muc1o m7s Gue un editor........................................1C2
5 - )ra%ajando con pen&&ice.org...............................................115
5.1 - Mis macros ' un arc1i$o especial...........................................11-
5.2 - 0signando macros.................................................................11,
5.3 - Creando nuestro primer 8ser$icio: <o%jeto>...........................124
5.3.1 - 4ropiedades especiales de depuracin...........................131
5.4 - )ra%ajando con documentos..................................................134
5.4.1 - Creando nue$os documentos.........................................134
5.4.2 - *utas de arc1i$os # directorios.......................................13-
5.4.3 - 0%riendo2 guardando # cerrando documentos................137
5.4.4 - E;portando a 4"6...........................................................145
5.4.5 - )areas comunes en documentos....................................14-
- - )ra%ajando con 1ojas de calculo ' Calc...................................149
-.1 - )ra%ajando con 1ojas.............................................................149
-.1.1 - Insertando 1ojas.............................................................153
-.1.2 - !orrando 1ojas................................................................15-
-.1.3 - Mo$iendo 1ojas...............................................................157
-.1.4 - Copiando 1ojas...............................................................1-C
-.1.5 - *enom%rando 1ojas........................................................1-1
-.1.- - cultando # mostrando 1ojas.........................................1-3
-.1.7 - 4roteccin # desproteccin de 1ojas...............................1-4
-.2 - *e&erencia a rangos...............................................................1-5
-.2.1 - *e&erencia a celdas indi$iduales.....................................1-5
-.2.2 - *e&erencia a un rango de celdas....................................1-7
-.2.3 - *e&erencia a $arios rangos de celdas.............................1-9
-.2.4 - *e&erencia a &ilas # columnas.........................................171
-.2.5 - *e&erencia a la seleccin actual.....................................175
-.2.- - %teniendo in&ormacin de rangos.................................177
-.2.7 - )ra%ajando con Cursores................................................1,C
-.2., - (elecciones especiales...................................................1,7
-.3 - Manipulando rangos..............................................................195
A!renieno OOo Basic 5
-.3.1 - Mo$iendo rangos............................................................195
-.3.2 - Insertando rangos...........................................................199
-.3.3 - Eliminando rangos..........................................................2C1
-.3.4 - Copiando rangos.............................................................2C3
-.4 - Manipulando datos.................................................................2C7
-.4.1 - %teniendo datos ..........................................................2C7
-.4.2 - Introduciendo datos........................................................212
-.4.3 - !orrando datos...............................................................215
-.4.4 - 3lenando series de datos................................................217
-.4.5 - !uscar # reempla+ar.......................................................219
-.4.- - )ra%ajando con notas.....................................................225
-.5 - "ando &ormato.......................................................................229
-.5.1 - 6ormato de celdas..........................................................229
-.5.2 - 6ormato de &ilas # columnas...........................................239
-.5.3 - Estilos # auto&ormato......................................................242
-.5.4 - 6ormato de p7gina..........................................................25C
-.5.5 - 6ormato condicional.......................................................2-5
-.- - Imprimiendo.......................................................................... 27C
-.7 - *angos de datos....................................................................27,
-.7.1 - "e&iniendo rangos...........................................................279
-.7.2 - rdenar datos.................................................................2,1
-.7.3 - 6iltrar datos....................................................................2,5
-.7.4 - (u%totales.......................................................................295
-.7.5 - Halidando datos..............................................................29,
-.7.- - 0grupando datos............................................................3C7
-., - !ases de datos......................................................................314
-.9 - 5ra&icando datos....................................................................314
-.1C - )ra%ajando con elementos gr7&icos.....................................314
-.1C.1 - Insertando im7genes....................................................315
-.1C.2 - Insertando auto&ormas..................................................315
-.11 - Con&iguracin glo%al de Calc...............................................315
7 - )ra%ajando con documentos de te;to ' Iriter........................31-
, - )ra%ajando con di%ujos ' "raJ...............................................317
9 - )ra%ajando con presentaciones ' Impress..............................31,
G
1C - )ra%ajando con %ases de datos - !ase..................................319
11 - )ra%ajando con &ormularios...................................................32C
12 - )ra%ajando con cuadros de dialogo.......................................321
13 - 0p=ndice 0............................................................................322
13.1 - (eguridad en macros...........................................................322
13.2 - Errores m7s comunes en tiempo de diseKo.........................324
14 - 0p=ndice !............................................................................329
14.1 - Instalando ("L.....................................................................329
14.2 - Mostrar in&ormacin de un o%jeto en un arc1i$o de Calc.....331
15 - 0p=ndice C............................................................................333
15.1 - 6ormulas de Calc espaKol-ingles..........................................333
15.2 - 3istar &uentes en un arc1i$o de Calc....................................34C
15.3 - 3istar &ormatos en un arc1i$o de Calc.................................341
1- - !i%liogra&Ma............................................................................343
17 - Indice 0l&a%=tico....................................................................344
A!renieno OOo Basic %
1 Introduccin
"Quien recibe una idea de m, recibe instruccin sin disminuir la ma; igual que
7uien enciene su vela con la ma* recibe luz sin 7ue .o 7uee a oscurasH
Thomas Jefferson
IAs 7ue 7uieres a!rener a !rogramar en OOo BasicJ Bien* !ues .o "ambi4n* . ese
es un buen in"er4s com?n . buen comienzo+ No se si llegas"e al lugar inicao* .a me lo con"aras+
Sabe e an"emano 7ue so. un !rogramaor au"oiac"a 7ue reconoce 7ue "iene vicios e los
cuales "al vez no me o. cuen"a* es!ero . eseo* 7ue alg?n buen samari"ano 7ue se encuen"re
con es"as no"as me a.ue a ien"i2icarlos+ >s"os a!un"es no "ienen o"ro !ro!5si"o 7ue com!ar"ir mi
e;!eriencia al ir e;!erimen"ano con es"e maravilloso !rograma llamao O!enO22ice+org . !or
su!ues"o* con su lengua3e e macros OOo Basic* una e;!eriencia sumamen"e !lacen"era+ Me
eci a aven"urarme a escribir* !or la 2al"a e ocumen"aci5n en es!aKol !ara !rogramar con
OOo Basic* a base e !aciencia . isci!lina 0e io !ro2unizao en el ominio el lengua3e* creo
7ue !ueo a.uar"e a 7ue "u curva e a!reniza3e no sea "an larga como la ma* si se cum!le es"e
seguno . sencillo !ro!5si"o* el "iem!o . es2uerzo inver"io* bien 0abr<n valio la !ena* as 7ue*
como icen en mi !ueblo -sobre aver"encia no 0a. engaKo-* aelan"e* em!ecemos+++
)a versi5n e O!enO22ice+org 7ue u"ilizo !ara escribir es"as no"as . mos"rar"e los
e3em!los e !rogramaci5n* normalmen"e es la ul"ima es"able (@+1 en es"e momen"o) escargaa
irec"amen"e ese 0""!=11es+o!eno22ice+org* es"o es !or 7ue algunas is"ribuciones &NU1)inu;*
com!ilan sus !ro!ias versiones* casi "oas LeberanM e "raba3ar e 2orma sa"is2ac"oria* !ero "e
recomieno ba3ar e ins"alar la o2icial !ara 7ue nos en"enamos me3or+ (ar4 !or sen"ao 7ue es"a
versi5n es "ambi4n con la 7ue "raba3as* no "e garan"izo 7ue los e3em!los mos"raos a7u
2uncionen con o"ras versiones* e 0ec0o no "e garan"izo 7ue 2uncionen con ninguna* o3o* no me
malin"er!re"es* es "an al"a la can"ia e e7ui!os* sis"emas . con2iguraciones i2eren"es* 7ue es
cues"i5n so2"8are es i2cil garan"izar algo . si lo uas* lee"e alguna e las muc0as licencias e
so2"8are 7ue 0a. en el mercao* inclu.eno !or su!ues"o* las e so2"8are libre+ )o 7ue si "e
!ueo asegurar* es 7ue caa uno e los e3em!los 7ue "e mues"ro los 0e !robao m<s e una vez
an"es e arlos !or buenos* as 7ue en general es!ero no "engas !roblemas con ellos+
Tambi4n* es im!or"an"e 7ue se!as* 7ue "raba3o sobre &NU1)inu; en varias
is"ribuciones (!or a0ora) Arc0)inu; (0""!=11arc0linu;-es+org)* aun7ue con"inuamen"e . m<s
seguio e lo 7ue "e imaginas cambio e is"ribuci5n* !ues aun no !ueo abanonar esa mana
e !robar . e;!erimen"ar (. a veces suiciar"e)* "an"o las nuevas is"ribuciones como las nuevas
versiones e las .a e;is"en"es* !or lo 7ue las in"er2aces !oran variar un !oco con res!ec"o al
sis"ema o!era"ivo (S+O+) 7ue usas* !or e3em!lo Mac1OS o Nino8s u o"ro* aun7ue es!ero 7ue
es"o no sea un !roblema !ues en si lo ?nico 7ue cambia es la ecoraci5n e las ven"anas* lo
em<s* LeberaM ser igual en la ma.ora e los casos* no obs"an"e no es"a e m<s 7ue al enviar
una consul"a es!eci2i7ues la versi5n e OOo 7ue usas . el S+O+ one "raba3as* aun7ue claro*
como no 0abra e recomenar"elo* 7ue es!eras !ara !robar alguna e las ecenas e
is"ribuciones &NU1)inu; e;is"en"es* seguro 7ue alguna se aa!"a a "u gus"o . 2orma e "raba3ar*
!or lo menos* no e3es e in"en"arlo+
>s"e ocumen"o es"a en cons"an"e crecimien"o* !uees veri2icar la ul"ima versi5n en=
888+universolibre+org* como eres libre e is"ribuirlo* si "e !arece 7ue lo merece* "e invi"o a 7ue
0ables e el . lo i2unas* . si no "e gus"a* !ues no seas c0ismoso+
, 1 :n"roucci5n
Para comen"arios* no"i2icaci5n e errores* sugerencias* colaboraciones . uas
!uees usar las siguien"es al"erna"ivas=
Presionar la "ecla F1 a.ua muc0o* an"es e escribir !ara uas* aseg?ra"e 7ue=
No es"a resuel"a en es"as no"as
No es"a resuel"a en la a.ua
No se 0a comen"ao en las lis"as e correo
IOa realizas"e una consul"a en "u buscaor 2avori"oJ
O lo m<s im!or"an"e* 7ue 0a.as "ra"ao e resolverlo !or "i mismo
(e !re2erencia* !lan"ea "us uas en las lis"as . no a mi correo* es"o. en la me3or
is!osici5n e a.uar"e* !ero recuera 7ue "u ua* "al vez o"ros la "engan* . si se !ublica en
alguna lis"a o 2oro* la !osible res!ues"a "ambi4n le !or< servir a mas e uno* si aun as* eseas
escribirme* !rocura ser lo mas claro !osible en "u e;!osici5n . aun7ue !rocuro con"es"ar siem!re*
no "e garan"izo una res!ues"a inmeia"a !ues a !ar"e e escribir es"as no"as* "engo o"ras varias
ac"iviaes 7ue "al vez no sean e "u in"er4s* !ero 7ue consumen un !oco e mi "iem!o*
agraezco "u com!rensi5n al res!ec"o+
:nscribe"e a cual7uiera e las siguien"es lis"as e correo* e !re2erencia a las os*
!ues en las os !ar"ici!o cons"an"emen"e+
Para enviar mensajes Para subscribirse
usersPes+o!eno22ice+org users-subscribePes+o!eno22ice+org
ooobasicQesPegru!os+ne" 0""!=11888+egru!os+ne"1gru!o1ooobasicQes1al"a
Procuro !ar"ici!ar en el 2oro o2icial e macros= 'oro e Macros en >s!aKol
>s"as no"as son !osibles gracias a la generosia e la gran comunia
O!enO22ice+org en "oo el muno . !or su!ues"o a la comunia munial el so2"8are libre* es
ecir* a las personas 7ue L"oos los asM esarrollan* usan . i2unen el so2"8are libre+
Dedico este trabajo a las personas que me aman
sin su amor, no seria lo que soy...
A!renieno OOo Basic -
2 Conceptos iniciales
/omo so. una !ersona 2lo3a* "al vez !ienses 7ue no me gus"a "raba3ar . es"ar<s en lo
correc"o* !or ello* cuano escubr lo 7ue se !oa 0acer con los lenguajes de programacin*
com!ren 7ue es"o es lo 7ue necesi"aba (. lo 7ue me gus"aba)* los lengua3es e !rogramaci5n
nos !ermi"en 0acer 7ue la com!u"aora 0aga !or noso"ros* esas "areas com!le3as* re!e"i"ivas .
"eiosas ("ambi4n las iver"ias)* en es"os a!un"es* "ra"aremos e a!rener como 0acer en
O!enO22ice+org* esas "areas com!le3as* re!e"i"ivas . "eiosas con uno e sus varios lengua3es
con los 7ue se !uee !rogramar en el* me re2iero claro es"a* al OOo Basic+ )as ins"rucciones 7ue
usamos !ara ecirle al !rograma 7ue 0acer* como* cuano* el oren . la secuencia en 7ue
7ueremos 7ue lo 0aga* las llamaremos MACROS* es"as macros !oemos 0acerlas e 2orma
Hsemiau"om<"icaH con la Grabadora de macros (!or a0ora solo !resen"e en Nri"er . /alc) o
escribirlas noso"ros ese cero (!oemos crearlas ese "oas las a!licaciones e
O!enO22ice+org)* a mi cri"erio* a es"a grabaora "oava le 2al"a maurar un !oco* !or lo cual*
crearemos nues"ras macros ese cero* veras 7ue no es "an com!licao . si* mu. iver"io+
)o !rimero 7ue "ienes 7ue a!rener (. recorar) es 7ue las macros se guaran en
mdulos* es"os a su vez se guaran . organizan en bibliotecas* las cuales* es"<n con"enias
en"ro e ocumen"os* con lo cual "enremos el siguien"e iagrama* !or cier"o* 0ec0o en (ra8+
1$ # /once!"os iniciales
Toos los ocumen"os* "ienen una biblio"eca es!ecial !ree"erminaa llamaa
Standard* a es"a biblio"eca le !uees agregar . eliminar m5ulos* !ero no !uees eliminarla* mas
aelan"e veremos . a!reneremos 7ue los m5ulos "ambi4n* aemas e macros* !ueen
con"ener HfuncionesH* . los ocumen"os "ambi4n !ueen con"ener HdilogosH+ >n la siguien"e
imagen !uees ver un ocumen"o (1) con una biblio"eca (#)* un moulo (@) . os macros (F)+
>m!ecemos con lo iver"io* crearemos el arc0ivo 7ue "e mues"ro en la imagen
an"erior* "al como es"a . el cual nos servir< !ara guarar las macros 7ue va.amos creano=
Abre /alc (!uees usar cual7uier o"ra a!licaci5n e O!enO22ice+org) . guara el
ocumen"o nuevo en el lugar . con el nombre 7ue consieres* !ara nues"ros 2ines usaremos el
nombre H>3em!los e macros+osH+
6e al men? Herramientas | Macros | Organizar macros | OpenOfficeorg !asic
Te mos"rara el siguien"e cuaro e ialogo* !resiona el bo"5n e comano
Administrar
Al mos"rar"e el siguien"e cuaro e ialogo* a un clic en la 2ic0a Bibliotecas
asegura"e e 7ue en"ro el cuaro e lis"a es!legable Ubicacin* es"e seleccionao el
A!renieno OOo Basic 11
ocumen"o al 7ue le ane;aremos la nueva biblio"eca* en nues"ro caso* el ocumen"o e /alc*
"jemplos de macrosods
:nmeia"amen"e es!u4s* !resiona el bo"5n e comano !uevo* "ras lo cual "e
mos"rara un cuaro e ialogo* solici"ano el nombre e la nueva biblio"eca* la cual llamaremos
mi!iblioteca+
(es!u4s e ar clic en Aceptar* no"aras 7ue la nueva biblio"eca se agrego a la lis"a*
a0ora* regresa a la 2ic0a "dulos . observa 7ue au"om<"icamen"e a la nueva biblio"eca se le
ane;o un moulo nuevo llamao Module#* si no lo vez* "al ves "engas 7ue ar clic en el bo"5n
e;!anir re!resen"ao !or un signo e suma (R) a la iz7uiera el nombre el ocumen"o+ (a un
clic en el bo"5n e comano Cerrar !ara regresar al an"erior cuaro e ialogo+
1# # /once!"os iniciales
A0ora* es!liega los elemen"os e nues"ro ocumen"o* es"o lo logras con el icono
el smbolo mas (R) 7ue es"a a la iz7uiera el nombre el ocumen"o* lo 7ue veas "iene 7ue ser
igual o mu. !arecio a la siguien"e ilus"raci5n* observa 7ue "ambi4n en la lis"a e macros* a!arece
.a una con el nombre e Main (eli!se ro3a)* el mismo moo 7ue al agregar una nueva biblio"eca
es"a a!arece con un nuevo moulo llamao e 2orma !ree"erminaa "odule#* cuano
agregamos un nuevo moulo* es"e crea e 2orma !ree"erminaa* una macro nueva . vaca con el
nombre e "ain* un nombre 7ue "e resul"ara 2amiliar si alguna vez !rogramas"e en /+ >s"os
nombres vienen !ree"erminaos* !ero se !ueen cambiar cuano 7uieras* como lo 0aremos a
con"inuaci5n* !ara lo cual* a un clic en el bo"5n e comano $ditar+
Al ar clic en $ditar* "e abrir< una nueva ven"ana* la cual ser< el cen"ro e "raba3o e
H"ooH lo 7ue 0agamos en OOo Basic* es"a nueva ven"ana e 0ec0o es una nueva a!licaci5n* una
a!licaci5n mu. es!ecial* !ues ella nos !ermi"ir< escribir "oas las macros 7ue nos !ermi"a nues"ro
"iem!o e imaginaci5n* es"a a!licaci5n* recibe el nombre e >n"orno e (esarrollo :n"egrao (:(>
!or sus siglas en ingles) . es mu. Limportante %ue te familiarices con el& lo mas !osible* lo
A!renieno OOo Basic 1@
cual* a2or"unaamen"e se a como consecuencia in"rnseca e !rogramar en OOo Basic+ Observa
como nos mues"ra el nombre el ocumen"o en one nos encon"ramos* as como el nombre e
la biblio"eca en la 7ue es"amos "raba3ano (1)* nos mues"ra* el nombre el moulo ac"ivo
ac"ualmen"e (#)* en caso e 7ue 0ubiese m<s* nos los mos"rara en 2ic0as con"iguas a es"e* !or
ul"imo* observa la macro mencionaa en el inciso an"erior* Main (@)
/omo siguien"e !aso* cambiemos el nombre el moulo* !ara ello* a un clic con el
bo"5n secunario e "u ra"5n (normalmen"e el bo"5n secunario es el erec0o) sobre la 2ic0a 7ue
mues"ra el nombre ac"ual (#)* "e mos"rara un men? con"e;"ual en"re cu.as o!ciones veras
Cambiar nombre* a un clic en ella . el cursor e escri"ura (el 7ue !ar!aea) se !osicionara al
2inal el nombre ac"ual el moulo* a0ora* !uees cambiarlo !or el 7ue 7uieras* !ara nues"ro
e3ercicio le llamaremos miModulo* al "erminar !resiona la "ecla SEnterT !ara ace!"ar el cambio o
sim!lemen"e ac"iva el <rea e escri"ura e c5igo (@) con un clic* es"a <rea en realia es un
ei"or e "e;"os* !ero un ei"or con muc0as carac"ers"icas es!eciales 7ue iremos conocieno
!oco a !oco* !ara "erminar nues"ro !rimer e3ercicio* a un oble clic a la !alabra Main* con lo cual
lograremos seleccionar la !alabra com!le"a* !uees reem!lazar es"e nombre !or el 7ue 7uieras
(bueno* casi !or el 7ue 7uieras* m<s aelan"e* veremos las res"ricciones al res!ec"o)* !ara
con"inuar con nues"ro e3ercicio escribiremos "i'Primer'"acro+
Por ul"imo* ve al men? Arc$i%o | Guardar& o a un clic en el conocio icono e
Guardar* o !resiona la combinaci5n e "eclas /AT)R&* como en la ma.or !ar"e e los !rogramas
e com!u"o* 0a. mas e una manera e 0acer la misma acci5n* usa* la 7ue me3or "e convenga o
gus"e . guara "u ocumen"o* .a sea con el nombre !ro!ues"o o con el 7ue consieres correc"o+
>n es"a misma ven"ana* ve al men? Herramientas | Macros | Organizar macros |
OpenOfficeorg !asic . com!rueba 7ue lo 7ue "ienes es bas"an"e similar a la imagen siguien"e*
7ue* salvo un !e7ueKo cambio (7ue .a no"as"e) 7ueo igual al 7ue !ro!usimos al inicio e es"as
no"as+
1F # /once!"os iniciales
ITe gus"o el cursoJ* es!ero 7ue si* eso es "oo* "an "an . 0as"a !ron"o+ No* no es
cier"o* con es"o cubrimos el $+$$1U e lo 7ue !re"eno* cons"e 7ue solo lo !re"eno+ Para 2inalizar
es"e ca!i"ulo . es"a noc0e (.a me canse)* sien"o muc0o ecir"e . con2esar"e* 7ue so. un !ro2esor
7ue e3a muc0a "area* as 7ue "u "area es=
Prac"icar muc0o
Agregar . eliminar biblio"ecas a i2eren"es ocumen"os e O!enO22ice+org+
Prac"icar muc0o
Agregar . eliminar m5ulos a i2eren"es biblio"ecas+
Prac"icar muc0o
Observar como es"a es"ruc"uraa nues"ra !rimer macro . "ra"ar e 0acer mas* como
conse3o* una macro no !uee ir en"ro e o"ra+
Prac"icar muc0o
)os cuaro e ialogo vis"os 0as"a a0ora* "ienen algunos con"roles mas* "ra"a e
inves"igar !ara 7ue sirven o cual es su 2unci5n+
Prac"icar muc0o
>nvame "us comen"arios* im!resiones* 7ue3as . uas* como un servicio agregao*
"ambi4n !uees enviarme "us !roblemas e;is"enciales+
VA0W . !rac"ica muc0o+++
A!renieno OOo Basic 15
Mi primer macro
A0ora 7ue .a sabes one crearemos nues"ras macros* em!ecemos con ellas+++
Abre "u arc0ivo e "raba3o* si 0as seguio es"as no"as* nues"ro arc0ivo* es un
ocumen"o e /alc nombrao $jemplos de macros(ods( (e 2orma !ree"erminaa* cuano
abres un arc0ivo e O!enO22ice+org 7ue con"iene macros* "e mos"rara el siguien"e aviso e
seguria* 7ue creo* es bas"an"e claro+
Por su!ues"o* !ara !oer "raba3ar correc"amen"e "ienes 7ue 0abili"ar las macros* m<s
aelan"e a!reneremos a evi"ar es"e mensa3e !ara los arc0ivos 7ue sabemos son seguros+ Puee
ser 7ue no "e mues"re es"e mensa3e . "e abra el arc0ivo irec"amen"e con las macros
es0abili"aas* si es"e es "u caso* "ienes 7ue cambiar el nivel e seguria como "e mues"ro en
%+1 Seguria en macros+ 6e al men? Herramientas | Macros | Organizar macros | OpenOfficeorg
!asic. navega 0as"a "u ocumen"o* "u biblio"eca . "u moulo* inmeia"amen"e es!u4s e
seleccionar la macro 7ue lleva !or nombre Mi'(rimer'Macro* !resiona el bo"5n e comano
$ditar+ >s"a serie e acciones* es la 2orma 7ue usaremos !ara acceer a la eici5n e cual7uier
macro vis"a en es"as no"as* !or lo cual* e a7u en aelan"e* ar4 !or 0ec0o* 7ue .a lo ominas+
/on la acci5n an"erior* "e abrir< el >n"orno e esarrollo (e a7u en aelan"e )*$) .
es"e es el !un"o in"eresan"e . el m<s iver"io* escribir c5igo* es ecir* ecirle al !rograma 7ue
1G @ Mi !rimer macro
0aga lo 7ue 7ueramos* cuano 7ueramos . como 7ueramos* !ara no salirnos e los Hsan"os
c<nonesH e la !rogramaci5n* em!ezaremos con un cl<sico+++
O !ara lograrlo* agrega la siguien"e linea a la macro* asegura"e e escribirla o
co!iarla "al cual=
MsgBox "Hola Mundo!!"
(e moo 7ue 7uee e la siguien"e manera=
A0ora* !ara He3ecu"arH la macro* es ecir* 7ue realice su "raba3o* !resiona el bo"5n e
e3ecuci5n (circulo ro3o en la imagen an"erior) o !resiona la "ecla SF!T . lis"o* "enr<s 7ue ver el
cuaro e mensa3e 7ue "e mos"r4 lineas arriba+ W'eliciaesV* .a eres "oo un !rogramaor* !ero
es!era* no eres "oava un !rogramaor com!le"o* !ues .a sabes el HcomoH* solo "e 2al"a el saber
el H!or7ueH* !ara lograr lo 7ue eca mi en"raKable !ro2esor e "o!ogra2a=
El "ombre terico sabe #por qu$#,
el "ombre practico sabe el #cmo#,
lo ideal es saber #como# y #por qu$#...
Para en"ener el HI!or 7u4JH* analicemos la linea 7ue acabamos e agregarle a
nues"ra macro=
MsgBox "Hola Mundo!!"
)a !rimer !alabra* es una HinstruccinH e OOo Basic* es ecir* una !alabra
es!ecial* 7ue el lengua3e* en con3un"o con el )*$* reconoce e moo es!ecial . HrealizaH* H0aceH*
He3ecu"aH* una "area es!eci2ica* en el caso e es"a Hpalabra clave o reservadaH (llamaa as* !or
7ue LsoloM OOo Basic !uee 0acer uso e ella* recuera es"o bien* solo %%o &asic la puede
usar) MsgBox* mues"ra un HmensajeH en un cuaro e ialogo* I7ue mensa3eJ* como 0abr<s
no"ao (!or 7ue e a7u en aelan"e "enr<s 7ue ser mu. observaor)* el mensa3e 7ue mues"ra es
A!renieno OOo Basic 1%
el 7ue Hnoso"rosH le inicamos elan"e e ella* . como es una HcaenaH e "e;"o* lo "enemos 7ue
0acer en"re comillas . se!araa e la ins"rucci5n !or un es!acio* Isuceer< lo mismo con
n?merosJ* I. con 2ec0as o algun o"ro valorJ+++
MsgBox 1234567890
MsgBox 15/01/1974
MsgBox 1dfgdfh245
Aealiza "oos los e;!erimen"os 7ue 7uieras . me cuen"as 7ue sucee+ Observa la
!rimer linea e la macro 7ue acabas e 0acer* . 7ue* si 0as seguio al !ie e la le"ra* no "enras
7ue 0aber moi2icao=
REM B!"#$
)a !rimer !alabra * "ambi4n es una !alabra clave e OOo Basic* . sencillamen"e lo
7ue H0aceH* es ecirle al !rograma (nues"ra macro)* 7ue "oo lo 0a.a es!u4s e es"a !alabra* es
un comen"ario* es ecir* el lengua3e se lo sal"ara olm!icamen"e sin 0acerle caso* comen"ar las
lineas e c5igo es una !rac"ica sumamen"e ?"il* sobre "oo* cuano las macros van crecieno e
"amaKo . com!le3ia* as 7ue* asume es"a recomenaci5n* HcasiH* como una regla* -siem!re
comen"a "us lineas e c5igo-* !or a0 le en alg?n 2oro 7ue un c5igo bien escri"o . !ro2esional no
necesi"aba comen"arios* !ero como noso"ros somo Lama"eurM 0aremos caso omiso e ese
comen"ario* !ues como i3o alguna vez )ing Ou Tan -me gus"a la gen"e ama"eur-+ As 7ue ve al
c5igo e nues"ra macro . comen"a la linea 7ue le agregas"e* e moo 7ue "e 7uee* as=
REM Mu%s&'a un (%nsa)% %n un *uad'o d% d+alogo
MsgBox "Hola Mundo!!"
)os comen"arios* "ambi4n !uees es"ablecerlos con una comilla sim!le (X)
,Mu%s&'a un (%nsa)% %n un *uad'o d% d+alogo
MsgBox "Hola Mundo!!"
Aemas* !oemos agregarlos* al 2inal e la linea e c5igo=
MsgBox "Hola Mundo!!" REM Mu%s&'a un (%nsa)%---d+alogo
MsgBox "Hola Mundo!!" ,Mu%s&'a un (%nsa)%--- d% d+alogo
Aei"ero* !rocura comen"ar la ma.or !ar"e e "u c5igo* "u memoria "e lo agraecer<*
as como "oos los !rogramaores con los 7ue com!ar"as "u c5igo* si ecies 7ue sea so2"8are
libre* como "e recomieno 7ue sea+
A0ora veamos la linea one inicia nues"ra macro=
"u. M+/0'+(%'/Ma*'o
1, @ Mi !rimer macro
/omo se 7ue eres observaor* .a 0abr<s eucio 7ue la !rimer !alabra* si*
e2ec"ivamen"e* es una !alabra clave e OOo Basic* la cual nos sirve !ara e2inir una Hsubru"inaH*
como "ambi4n se les conoce a las macros* !ara ien"i2icarla* le asignamos un nombre* en nues"ro
caso le !usimos= Mi_Primer_Macro* nombre 7ue=
NO !uee llevar es!acios* si lo 0aces* "e mos"rara un mensa3e* 7ue !or a0ora* no
analizaremos* !ero recueralo !ara m<s aelan"e+
NO !uee iniciar con un n?mero* si lo 0ace* "e mos"rara el siguien"e mensa3e e
error=
NO ebe re!e"irse el nombre e la macro* en"ro el moulo en 7ue se eclara* o
sea* no !uee 0aber os 7ue se llamen igual* si "ra"as e 0acer lo an"erior* al e3ecu"ar* "e mos"rara
el siguien"e mensa3e e error=
Observa la !rimer linea e los mensa3es e las os im<genes an"eriores* las os son
iguales -Error de sinta'is de &(SIC-* a7u* la !alabra im!or"an"e es9 Hsin"a;isH* 7ue* si nos
a"enemos a lo 7ue ice la (oKa Aeal Acaemia >s!aKola* 7uiere ecir=
sinta+is(
((el la"+ s)nta*is& . es"e el gr+ Y Z[\]^_* e Y`Z[ YYa^Z* coorinar)+ N
1. 2+ Gram Par"e e la gram<"ica 7ue enseKa a coorinar . unir las !alabras !ara
2ormar las oraciones . e;!resar conce!"os+
2. 2+ +nform /on3un"o e reglas 7ue e2inen las secuencias correc"as e los
elemen"os e un lengua3e e !rogramaci5n+
A!renieno OOo Basic 1-
Aeal Acaemia >s!aKola b Toos los erec0os reservaos
(e es"as e2iniciones* la 7ue nos in"eresa es la numero os* "ra"a e recorarla
-Conjunto de reglas ,ue definen las secuencias correctas de los elementos de un lenguaje de
programacin-* !ues en las siguien"es !<ginas* "ra"aremos e a!rener e im!lemen"ar es"e
conjunto de re,las* las cuales* "e con2esar4* no son "an"as* ni "an com!le3as . como seguro
0abr<s no"ao* el )*$ nos in2orma muc0as veces cuano im!lemen"amos mal* es"e con3un"o e
reglas* es ecir* cuano com?nmen"e 0acemos mal uso e la Lsin"a;isM e Ooo Basic+
Para 2inalizar es"e ca!i"ulo* analicemos la ul"ima . mu. sencilla linea e nues"ra
macro=
End "u.
Si* las os son !alabras claves el lengua3e . "ambi4n* creo* son bas"an"e e;!lici"as*
nos inican el 2inal e nues"ro H!rogramaH* Hsubru"inaH o HmacroH* como las llamaremos e a7u en
aelan"e+
>n"onces* caa lnea e c5igo .* 0as"a one se encuen"re un sal"o e lnea* el
lengua3e lo reconocer< como una sentencia e OOo Basic* !uees "ener varias sen"encias en
una sola lnea* si las se!aras con os !un"os* como en=
"u. 1a'+as"%n&%n*+as23
MsgBox "Es&as %s una s%n&%n*+a" 4 MsgBox "Es&a %s o&'a s%n&%n*+a"
End "u.
>n sen"encias largas* !uees usar el car<c"er e con"inuaci5n e lnea* 7ue es el
guion ba3o Q* como en el siguien"e e3em!lo* !ero recuera 7ue sigue sieno la misma sen"encia=
"u. 5+n%as5a'gas23
MsgBox "Es&as %s una l+n%a la'ga d% *od+go6 s% 7u%d% d+8+d+' " 9 /
"usando %l gu+on .a)o6 *o(o %n %s&% %)%(7lo"6 0 6"E)%(7lo " 9 /
"d% l+n%a la'ga"
End "u.
O a0ora si* !ara "erminar es"e ca!i"ulo* observa 7ue el +-" nos mues"ra i2eren"es
colores en las !alabras* es"o es mu. ?"il cuano se es"a !rogramano* !ero !or !uro gus"o .
"ambi4n* lo con2ieso* como una 0erencia el 6BA (aun7ue "ambi4n !esa el 0ec0o e "ener una
macro .a 0ec0a 7ue convier"e es"os colores en 2orma"o cTM))* uso la siguien"e combinaci5n e
colores=
!:ul 7a'a las 7ala.'as *la8%s
1%'d% 7a'a los *o(%n&a'+os
Ro)o 7a'a los n;(%'os
Ro)o o.s*u'o 7a'a las *ad%nas d% &%x&o
<%g'o 7a'a &odo lo d%(=s
A7u un e3em!lo e como se mos"rara el c5igo con es"a combinaci5n e colores=
>7&+on Ex7l+*+& R%( 0'u%.as d% *o(%n&a'+o
"u. 0'u%.as2B?1al 0al !s "&'+ng3
, *o(%n&a'+o
@+( +n&<u( !s #n&%g%'
+n&<u( A 10 B 10
#$ @ Mi !rimer macro
MsgBox "0'u%.a" ,*o(%n&a'+o
End "u.
Para con2igurar es"os u o"ros colores 7ue sean e "u agrao* ve al men?
Herramientas | Opciones en OpenOfficeorg escoge Representacin* !ara 7ue 7uee e la
siguien"e manera
Aecuera 7ue es"o es solo una recomenaci5n* "u* con el uso . la !rac"ica* eciir<s
si es as como "e gus"a* si no* no ues ni un momen"o en es"ablecer los colores 7ue m<s "e
agraen* gus"en o sim!lemen"e "e en la gana 7ue !ara eso es la liber"a+
>s"a es la e a e veras* a0ora si* !ara "erminar es"e ca!i"ulo* "ienes 7ue recorar
7ue !ara OOo Basic* es inis"in"o el uso e MAOUS/U)AS o min?sculas* o una combinaci5n e
ambas* es ecir* nues"ra macro* HeberaH e 2uncionar igual con=
min?sculas
su. (+/7'+(%'/(a*'o
(sg.ox "Hola Mundo!!"
%nd su.
MAOUS/U)AS
"CB M#/0R#MER/M!$R>
M"DB>E "Hola Mundo!!"
E<@ "CB
/ombinaci5n e ambas* como nues"ro original* 7ue es la 2orma mas com?n . la
2orma 7ue .o usare a "oo lo largo e es"as no"as+
"u. M+/0'+(%'/Ma*'o
MsgBox "Hola Mundo!!"
End "u.
A!renieno OOo Basic #1
>l +-"* no 0ace una au"ocorrecci5n e las !alabras* no "e iguala las !alabras a
ma.?sculas o min?sculas ("oava)* !ero es"o* "e a.ua muc0o a me3orar "u mecanogra2a* a ser
me3or observaor* as 7ue=
Prac"ica muc0o+
:nves"iga mas acerca e la ins"rucci5n MsgBo;* !resionar SF1T Ha.uaH muc0o+
Prac"ica muc0o+
>nvame "us comen"arios* a!or"es . uas+
Prac"ica muc0o+
## F >l lengua3e OOo Basic
) El len*uaje %%o &asic
OOo Basic* 2orma !ar"e e la 2amilia e lengua3es Basic* com!ar"e con ellos la ma.or
!ar"e e su sin"a;is* su 2acilia . sencillez* no en"raremos a7u en is7uisiciones 2ilos52icas e su
0is"oria o i2erencia con o"ros HsaboresH Basic* me limi"are a mos"rar"e el uso e su sin"a;is lo mas
claramen"e 7ue me sea !osible* !rocurano 7ue los e3em!los sean "u !rinci!al 2uen"e e consul"a+
>l +-"* se encarga e revisar la correc"a Hsinta+isH (recorano 7ue sin"a;is es un Hcon3un"o e
reglasH) e caa lnea 7ue noso"ros escribamos* !or ello* a OOo Basic se le enomina un
Hlengua3e in"er!re"aoH* !or 7ue revisa la sin"a;is* caa vez 7ue He3ecu"amosH la macro+
A0ora .a conoces one inicia . one "ermina una macro* como nombrarla . como
e3ecu"arla* es"o es im!or"an"e 7ue lo omines bien* !ues 7ue e a7u en aelan"e* ar4 !or
en"enio 7ue as es* !or 7ue caa nueva ins"rucci5n 7ue a!renamos* la "ienes 7ue !robar
Hen"roH e una macro* as 7ue !ara 7ue no 0a.a e;cusas* re!acemos una vez mas es"o+++
)a es"ruc"ura b<sica !ara una macro es=
"u. <o(.'%/d%/la/Ma*'o
REM !FuG 8an &odas las +ns&'u**+on%s Fu% Fu%'a(os
End "u.
Por su!ues"o e;is"en m<s varian"es* !or a0ora* !ara nues"ros 2ines* es"a es m<s 7ue
su2icien"e* vamos a escribir nues"ra seguna macro* a7u es"a=
"u. M+/"%gunda/Ma*'o
,!lgo (=s +n&%'%san&%
MsgBox "Hola <%na!"
End "u.
O .a encarrilaos* agrega una "ercer macro=
"u. M+H%'*%'Ma*'o
,5o Fu% Fu+%'as
MsgBox ">>o Bas+* %s f=*+l ? d+8%'&+do"
End "u.
Observaciones (Irecueras 7ue bamos a ser observaoresJ* ser buen observaor
es una e;celen"e vir"u en un !rogramaor)=
>n la "ercer macro* en el nombre* .a no use guiones !ara se!arar las !alabras* Ies
correc"oJ* res!ues"a* si* es correc"o* uno e los re7uisi"os es 7ue el nombre HnoH lleve es!acios*
as 7ue es"a bien escri"o MiTercerMacro* en la 7ue usamos la "4cnica enominaa e HcamelloH*
creo 7ue es bas"an"e obvio I!or 7ueJ* es"a es la 2orma en 7ue e a7u en aelan"e* escribir4 "oo
mi c5igo+
Su!ongo 7ue 0as io !robano caa macro* IveraJ* si no es as* a0ora es el
momen"o* !resiona SF!T . observa mu. bien 7ue sucee* I.aJ* es mu. sencilla la e;!licaci5n* .a
la 0abr<s eucio+ >l :(>* HsoloH* e3ecu"a la !rimer macro 7ue es"e en el m5ulo ac"ivo* as 7ue si
"ienes las "res macros 7ue 0emos 0ec0o* solo se e3ecu"ara la 7ue se llama Mi_Primer_Macro+
/laro* si "ienes como !rimer macro alguna o"ra* es"a ser< la 7ue se e3ecu"e+ O caa vez 7ue "ra"es
e e3ecu"ar* solamen"e "e mos"rara=
A!renieno OOo Basic #@
>n algunas is"ribuciones )inu;* 0e no"ao 7ue la macro 7ue se e3ecu"a al !resionar
'5* es la macro one es"e el cursor e escri"ura en ese momen"o* es"o me !arece bien* !ero
"oava no es"a im!lemen"ao en la is"ribuci5n o2icial+ Para e3ecu"ar la macro 7ue 7uieras* ve a la
barra e 0erramien"as . a un clic en el icono Seleccionar macro
(el cuaro e ialogo 7ue "e mues"ra* escoges la macro 7ue esees . !resiona el
bo"5n "jecutar+
/omo ira un buen amigo -ansina si-* a0ora si vemos lo 7ue 7ueremos ver=
#F F >l lengua3e OOo Basic
O la "ercera "ambi4n=
O"ra "4cnica !ara e3ecu"ar la macro 7ue sea* es crear una !rimer macro 7ue se llame
!or e3em!lo= +ruebas* .* ese es"a* HllamarH a las o"ras* as 7uearan nues"ras macros=
REM ***** BASIC *****
"u. 0'u%.as
M+/0'+(%'/Ma*'o
End "u.
"u. M+/0'+(%'/Ma*'o
,Hodo un *l=s+*o
MsgBox "Hola Mundo!"
End "u.
"u. M+/"%gunda/Ma*'o
,!lgo (as +n&%'%san&%
MsgBox "Hola <%na!"
End "u.
"u. M+H%'*%'Ma*'o
,5o Fu% Fu+%'as
MsgBox ">>o Bas+* %s f=*+l ? d+8%'&+do"
End "u.
O es"o* es algo 7ue "enr<s 7ue ominar mu. bien* HllamarH a una macro* ese o"ra*
observa como es "an sencillo como escribir el nombre correc"o e la macro 7ue eseamos
HllamarH+++
"u. 0'u%.as
M+/0'+(%'/Ma*'o
End "u.
Para llamar a la seguna macro seria as=
"u. 0'u%.as
M+/"%gunda/Ma*'o
End "u.
Tu 0aces la "ercera+ )o in"eresan"e* es 7ue !uees HllamarH a m<s e una macro*
ese o"ra* !or e3em!lo+
"u. 0'u%.as
M+/0'+(%'/Ma*'o
A!renieno OOo Basic #5
M+/"%gunda/Ma*'o
End "u.
O"ra 2orma e HllamarH a o"ras macros* es usano la ins"rucci5n Call* e la siguien"e
manera* el resul"ao es el mismo=
"u. 0'u%.as
$all M+/0'+(%'/Ma*'o
$all M+/"%gunda/Ma*'o
End "u.
Se 7ue "enramos 7ue escribir el nombre e la macro a llamar !ara !robar la 7ue
eseamos caa vez 7ue la necesi"amos* !ero recuera 7ue solo es e !rueba* aemas* m<s
aelan"e* cuano a!renamos m<s o!ciones e como eclarar . usar macros* veras 7ue es"e
ul"imo m4"oo e !ruebas es me3or 7ue el !rimero . 7ue es"o nos sirve como a2irmaci5n e lo 7ue
eca el Sr+ (escar"es -"oo lo com!le3o* !uee iviirse en !ar"es sim!les-
).1 Declarando y usando ,ariables
/aa vez 7ue !rogrames "us macros* recuera el siguien"e sencillo iagrama=
Si analizas caa !rograma e com!u"o 7ue usas* veras 7ue en ma.or o menor meia*
cum!le el 2lu3o an"erior* caa uno e es"os "res !asos los !oemos iviir en muc0os m<s* !ero
esa ivisi5n "u mismo la iras no"ano . esglosano con2orme !ro2unices en es"e o cual7uier o"ro
lengua3e* veamos un sencillo e3em!lo=
Solici"amos 7ue el usuario ca!"ure su nombre com!le"o (>n"raa)
/on"amos el n?mero e le"ras (o !alabras) 7ue con"iene (Proceso)
Mos"ramos el resul"ao ob"enio (6isualizaci5n)
A0ora* 7ue !asa si aemas el nombre solici"amos 7ue ca!"ure su 2ec0a e
nacimien"o* "al vez !oramos ob"ener aem<s el n?mero e le"ras o !alabras=
>l a e la semana en 7ue naci5
/uan"os as lleva vivo
/uan"os aKos "iene
/uan"as vocales "iene el nombre
ISe "e ocurren o"ra Lin2ormaci5nM 7ue !ueas ob"enerJ
Observa como con solo os a"os* !oemos ob"ener muc0a Lin2ormaci5nM* es"a
sencilla ecuaci5n 0ace la i2erencia en"re un !rograma e2icien"e* e uno 7ue no lo es* los buenos
!rogramas* mani!ulan e2icien"emen"e los a"os !ara arnos Lin2ormaci5nM . en"re el 2lu3o e los
#G F+1 (eclarano . usano variables
a"os a la Lin2ormaci5nM* e;is"en os en"es 7ue son e"erminan"es !ara la calia e la
in2ormaci5n ob"enia* uno es la com!u"aora* la cual* normalmen"e solo !rovee e LvelociaM .
"u* el !rogramaor* 7ue !one "oa su in"eligencia* unos mas o"ros menos* al servicio el !roceso
e conver"ir los a"os en Lin2ormaci5nM* 7ue como sabes* es la 7ue !ermi"e "omar las ecisiones+
No !ienses 7ue es"o. esvariano* "oo es"e LrolloM lleva un 2in* veamos cual es+ (e
acuero a los os iagramas an"eriores* el inicio e "oa LmacroM (o !rograma)* es ob"ener los
a"os* .a sea "raerlos e alg?n lao o solici"arlos al usuario+ Aecuera 7ue !rimero 0a. 7ue saber
caminar !ara es!u4s correr* as 7ue no eses!eres si ves 7ue vamos algo len"o* !ero es"os
"emas iniciales son e"erminan"es !ara com!rener "oo lo 7ue venga es!u4s+ >n"onces*
re"omano el sencillo e3em!lo con el 7ue em!ezamos es"e ca!i"ulo* vamos a solici"arle al usuario
7ue nos !ro!orcione su nombre* lo cual lograremos con la L2unci5nM InputBox* o3o con la !alabra
L2unci5nM .a 7ue es im!or"an"e* creo 7ue casi cual7uier !ersona 7ue usa com!u"aoras* sabe 7ue
una 2unci5n* Lnormalmen"eM* re"orna un valor* es"o es im!or"an"e* nos regresa un valor* 7ue* en el
caso e nues"ra macro* "enremos 7ue !oner en alg?n lugar !ara !oer "enerla is!onible . !ara
!oer mani!ularla* el !rimer lugar one "enemos 7ue a!rener a guarar a"os* aun7ue sea e
2orma "em!oral* es en memoria* !or su!ues"o* no en nues"ra memoria* sino en la e la
com!u"aora* en la llamaa memoria AAM* !ara ello* "enremos 7ue arle un nombre a una
!orci5n e ic0a memoria* a es"a <rea 7ue es"amos nombrano* le llamaremos L,ariableM* o"ra
vez* recueralo bien L,ariableM* algunos "e;"os "ambi4n la nombran como LmarcaorM* !ero lo m<s
com?n es llamarlo L,ariableM* !recisamen"e !or 7ue su valor o con"enio !uee variar uran"e los
!rocesos 7ue 0aga nues"ra macro* resumieno* los a"os 7ue ob"engamos los guaramos
L"em!oralmen"eM en variables* con lo cual "enemos es"a !rimer sencilla ecuaci5n* 7ue iremos
am!liano seg?n va.amos avanzano en nues"ro curso+
-ariable . Dato
6eamos un e3em!lo e es"o* mos"rano el nombre e una novia 7ue "uve=
"u. Mos&'a'<o(.'%
,!s+gna(os un 8alo' a una 8a'+a.l%
<o(.'% A "<+*ol% I+d(an"
,Mos&'a(os %l 8alo' d% la 8a'+a.l%
MsgBox <o(.'%
End "u.
Observa como en la linea=
Nombre = "Nicole Kidman"
>s"amos asignano el La"oM #/icole 0idman1* a la LvariableM /ombre, el nombre
e las variables* al igual 7ue el nombre e las macros* no !ueen llevar es!acios . no !ueen
em!ezar con un n?mero* aemas e no !oer llevar carac"eres es!eciales* veamos algunos
e3em!los e nombres e variables=
A!renieno OOo Basic #%
(ireccion - /orrec"o
Tele2ono# - /orrec"o
'ec0a(eNacimien"o - /orrec"o
/orreo elec"ronico - :ncorrec"o ("iene un es!acio)
@'a; - :ncorrec"o (inicia con n?mero)
d45? - :ncorrec"o (no se !ermi"en carac"eres es!eciales)
/alle*Numero - :ncorrec"o (no se !ermi"en comas ni !un"os)
/omo no"as"e* sim!lemen"e con usar el nombre correc"o e una variable* OOo Basic
0ace uso e ella* es"a 2orma e usar variables se conoce como* Leclaraci5n im!lci"aM* !or 7ue al
asignarle un valor !or !rimera vez a una variable* el lengua3e reserva el es!acio en memoria !ara
su uso* !ero (icen 7ue siem!re 0a. un !ero)* es"a 2orma e usar las variables* no es naa
recomenable* con2orme "us macros se 0acen m<s granes . com!le3as* el 0acer uso e las
variable e es"a 2orma se vuelve (. no e;agero) una veraera locura* en con"ras"e* es m<s
e2icien"e . muc0o m<s claro si le ices al lengua3e* ese el inicio e "u macro* 7ue variables son
las 7ue usaras !ara 7ue reserve la memoria necesaria* es"a seguna 2orma e usar las variables
se enomina* Leclaraci5n e;!lci"aM* e es"a 2orma* noso"ros somos los 7ue le inicamos al
lengua3e* 7ue variables son las 7ue usaremos* 0a. una !alabra clave !ara ello* se llama im . su
uso es mu. sencillo* a7u el e3em!lo=
"u. @%*la'ando1a'+a.l%s
,@%*la'a(os *ua&'o 8a'+a.l%s
@+( @+'%**+on
@+( H%l%fono2
@+( J%*ha<a*+(+%n&o
@+( Edad
,Mas *Kd+go
End "u.
(e es"a 2orma* con la ins"rucci5n im* le es"amos icieno -o.e mi 0ermano*
a!ar"ame un cac0i"o e memoria 7ue se llame ireccion !ara 7ue .o la use-* . e2ec"ivamen"e*
el lengua3e lo 0ar< !ara noso"ros+ Observa 7ue el nombre e las variables inmeia"amen"e nos a
una iea acerca el a"o 7ue guararemos en ella* en el caso e la variable ireccion*
normalmen"e guarara un "e;"o* en la variable !ec"aNacimien#o una 2ec0a . en la variable
Edad un n?mero* e la 2orma como es"<n eclaraas las variables* se !uee guarar cual7uier
L"i!oM e a"o ("e;"o* numero* 2ec0a* e"c) en ella* !or eso* a es"e "i!o e variables se le conoce
como L$arian#M* veamoslo con un e3em!lo=
"u. 1a'+a.l%sH+7o1a'+an&
@+( Cn@a&o
Cn@a&o A "Es&o %s un &%x&o" ,Dua'da(os un &%x&o
MsgBox Cn@a&o
Cn@a&o A 12345678 ,Dua'da(os un nu(%'o
MsgBox Cn@a&o
Cn@a&o A "15/01/1974" ,Dua'da(os una f%*ha
MsgBox Cn@a&o
End "u.
)a recomenaci5n es 7ue* en vez e usar variables "i!o L6arian"M* le ini7uemos
e;!lici"amen"e al lengua3e 7ue "i!o e a"os guararemos en una variable* !ara ello* se usa la
!alabra clave As* 3un"o con im . el "i!o e variable* !or e3em!lo=
"u. @%*la'a*+onEx7l+*+&a@%1a'+a.l%s
@+( @+'%**+on !s "&'+ng ,1a'+a.l% &+7o &%x&o
@+( Edad !s #n&%g%' ,1a'+a.l% &+7o nu(%'o %n&%'o
@+( J%*ha !s @a&% ,1a'+a.l% &+7o f%*ha
#, F+1 (eclarano . usano variables
@+'%**+on A "0a'Fu% "an !nd'%s <L 14"
Edad A 32
MsgBox @+'%**+on
MsgBox Edad
End "u.
A7u* la lis"a com!le"a el "i!o e variables 7ue !uees usar en OOo Basic=
Tipo Descripcin Valores que puede contener
"&'+ng
Te;"o cas"a G5*5@5 carac"eres
B?&%
>n"ero >n"eros en"re $ . #55
#n&%g%'
>n"ero >n"eros en"re -@#%G, . @#%G%
5ong
>n"ero largo >n"eros en"re -#1F%F,@GF, . #1F%F,@GF%
"+ngl%
Sim!les Precisi5n sim!le . coma 2lo"an"e (@*F$#,#@ ; 1$>@, a 1*F$1#-, ;
1$>-F5)+
@ou.l%
(obles Precisi5n oble . coma 2lo"an"e (1*%-%G-@1@F,G#@# ; 1$>@$, a
F*-F$G5GF5,F1#F% ; 1$>-@#F)
$u''%n*?
Monea M<;imo e 15 n?meros an"es el signo ecimal . cua"ro es!u4s
e el+ Almacena valores en"re --##@@%#$@G,5F%%+5,$, .
R-##@@%#$@G,5F%%+5,$%
Bool%an
)5gica Solo !uee con"ener valores True (veraero) o 'alse (2also)
@a&%
'ec0a
1a'+an&
6arian"e /ual7uier valor* "i!o e eclaraci5n !ree"erminao
>.)%*&
Ob3e"o Para 0acer re2erencias a ob3e"os
6eamos es"e nuevo e3em!lo e una macro* aseg?ra"e e "ranscribirla "al cual o me3or
aun* !uees co!iarla=
"u. @a(%Hu<o(.'%
@+( <o(.'% !s "&'+ng
,>&'a d% (+s no8+as
<o(.'% A "M+'anda >&&o"
MsgBox <o(.'%s
End "u.
Ieue !asa al e3ecu"arlaJ* e2ec"ivamen"e* no nos mues"ra naa en el cuaro e
mensa3e* es"o es !or 7ue* !ara el lengua3e* la variable Nombre* es i2eren"e e la variable
Nombres . a la variable Nombres no le 0emos asignao ning?n valor "oava* a !esar e 7ue en
es"e e3em!lo es bas"an"e evien"e nues"ro error (una !e7ueKa Ls1 e i2erencia)* cuano se
!rograma . 0aces uso e unas cuan"as ecenas e variables eclaraas* es"o no es "an evien"e
a sim!le vis"a* !ara minimizar es"e "i!o e errores* e;is"e una ins"rucci5n 7ue nos a.ua a ello*
%&#ion Ex&lici#* 7ue nos obliga a eclarar con la ins"rucci5n im* cual7uier variable an"es e
usarla* es"a ins"rucci5n* cuano se use* ebe 0acerse como !rimer linea e cual7uier moulo
(solo una vez !or moulo)* e moo 7ue nues"ra an"erior macro 7ueara as=
>7&+on Ex7l+*+&
"u. @a(%Hu<o(.'%
@+( <o(.'% !s "&'+ng
A!renieno OOo Basic #-
,>&'a d% (+s no8+as
<o(.'% A "M+'anda >&&o"
MsgBox <o(.'%s
End "u.
6uelve a e3ecu"ar es"a macro . observa 7ue !asa* as es* nos mues"ra el siguien"e
mensa3e=
/omo ves el mensa3e es mu. claro= -ariable no de2inida* es ecir* no 0emos usao
la ins"rucci5n im !ara eclararla* aem<s* observa en la imagen (el subra.ao ro3o)* 7ue el +-"
nos inica con una 2lec0a la lnea one ocurri5 el error* as 7ue* o"ra recomenaci5n 7ue "ienes
7ue "omar como regla -siem!re usa Option Explicit al !rogramar-* usano es"a ins"rucci5n "e
volver<s un !oco menos loco cuano bus7ues I!or 7ueJ no 2unciona "u macro* mas aelan"e
veremos 7ue o"ras 0erramien"as im!lemen"a el +-" !ara a.uarnos con la localizaci5n e errores
. la e!uraci5n e nues"ras macros+
>l inicio e es"e "ema* mencion<bamos 7ue una macro (o !rograma)* em!ieza con la
solici"u e alg?n a"o al usuario (generalmen"e)* "ambi4n veamos 7ue es"e a"o o a"os se
guaran "em!oralmen"e en variables (generalmen"e)* la ins"rucci5n b<sica !ara ello era=
-ariable . Dato
. como e3em!lo mos"ramos=
"u. Mos&'a'<o(.'%
,!s+gna(os un 8alo' a una 8a'+a.l%
<o(.'% A "<+*ol% I+d(an"
,Mos&'a(os %l 8alo' d% la 8a'+a.l%
MsgBox <o(.'%
End "u.
)o cual 2unciona* !ero no es mu. vers<"il 7ue igamos* es ecir* siem!re nos
mos"rara el mismo nombre* 7ue aun7ue bello* creo 7ue "erminara !or cansarnos+ )a seguna
varian"e 7ue veremos !ara asignarle un valor a una variable . 7ue servir< como !re<mbulo !ara
los siguien"e ca!"ulos es la siguien"e=
-ariable . Funcion
>n one Funcion* es cual7uier ins"rucci5n 7ue nos Lre"orneM una valor* veamos un
e3em!lo e la 2unci5n +nput!o*+
"u. M+<o(.'e
@+( <o(.'% !s "&'+ng
@$ F+1 (eclarano . usano variables
<o(.'% A #n7u&Box2"M$ual %s &u no(.'%N"3
MsgBox <o(.'%
End "u.
Al e3ecu"ar* "e "enr< 7ue mos"rar el siguien"e cuaro e ialogo=
O al escribir "u nombre . ar clic en Ace!"ar* "e mos"rara lo 7ue 0a.as escri"o=
Para cerrar el circulo* . com!robar 7ue si 2unciona el !rimer iagrama e es"e
ca!i"ulo* L"a*amos al*oM con el a"o* veamos cuan"as le"ras "iene* es"o lo logramos con la
2unci5n Len* 7ue nos ice cuan"os carac"eres "iene una caena* en"onces* nues"ra macro
com!le"a 7ueara as=
"u. M+<o(.'%
@+( <o(.'% !s "&'+ng
@+( <u(%'o@%5%&'as !s #n&%g%'
<o(.'% A #n7u&Box2 "M$ual %s &u no(.'%N" 3 ,En&'ada d% da&os
<u(%'o@%5%&'as A 5%n2 <o(.'% 3 ,0'o*%so d% da&os
MsgBox <u(%'o@%5%&'as ,1+sual+:a*+Kn d% '%sul&ado
End "u.
Observa como se cum!le el 2lu3o el iagrama mos"rao al inicio e es"e ca!"ulo* se
7ue es un gran sim!li2icaci5n !ero nos es bas"an"e ?"il !ara nues"ros !ro!5si"os+
Ni moo* no se me olvia e3ar"e "area=
Prac"ica muc0o
:nves"iga mas e la 2unci5n :n!u"Bo;+
Prac"ica muc0o
>nvame "us comen"arios* a!or"es . uas+
Prac"ica muc0o+
A!renieno OOo Basic @1
).2 Instrucciones y 2unciones en %%o &asic
IAecueras 7ue mencionamos 7ue las !alabras claves o reservaas e OOo Basic*
se llaman as !or 7ue solo OOo Basic !uee 0acer uso e ellasJ* Ivera 7ue lo recuerasJ* !or
ello* no !uees crear una macro 7ue se llame MsgBox u %&#ion* "am!oco !uees eclarar
variables con alguna e es"as !alabras+ >s"as !alabras clave* las !oemos iviir en os granes
gru!os9 las ins"rucciones . las 2unciones* 7ue* como !rimer a!ro;imaci5n a una e2inici5n ?"il*
iremos 7ue=
3as instrucciones 4"acen1 al*o
3as 2unciones 4de,uel,en1 al*o
)a i2erencia en"re una . o"ra* es crucial !ara el en"enimien"o . esarrollo 5!"imo e
los siguien"es ca!"ulos+ Usaremos una ins"rucci5n 7ue .a conoces* MsgBo;* !ara mos"rar"e las
i2erencias en"re las ins"rucciones . las 2unciones* !ues es"a !alabra clave "iene la !ar"icularia
e !oer usarse como una u o"ra e!enieno e nues"ras necesiaes+ 6eamos la siguien"e
linea e c5igo+
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"
>s"amos usano MsgBo; como una ins"rucci5n* !or 7ue es"a L0acienoM algo*
I7ueJ* nos mues"ra un mensa3e en !an"alla* I7ue mues"raJ* el "e;"o* e a7u en aelan"e
Lcaena e "e;"oM* 7ue le inicamos en"re comillas* es"a caena e "e;"o* recibe el nombre e
L!ar<me"roM o Largumen"oM* recueralo bien* recibe el nombre e Largumen"oM+ Icas !robao a
in"en"ar e3ecu"ar es"a ins"rucci5n sin ning?n argumen"oJ+
MsgBox
>2ec"ivamen"e* el +-" nos mues"ra el siguien"e error+
O nos seKalara con la 2lec0a 7ue .a conoces* la linea el error* en es"e caso* la linea
con la ins"rucci5n MsgBox* con lo cual se euce 2<cilmen"e 7ue el argumen"o Mensaje* 7ue es
e "i!o Lcaena e "e;"oM (o3o con es"o* los argumen"os* al igual 7ue las variables* son e un Ltipo
de datoM)* es necesario o re7uerio* es ecir* no "raba3ara mien"ras no lo incor!oremos a la linea
e c5igo* Inecesi"a alg?n o"roJ* no* con es"e argumen"o es m<s 7ue su2icien"e !ara 7ue "raba3e*
!ero eso si* !uee llevar m<s argumen"os* !or e3em!lo* !rueba la siguien"e lnea e c5igo .
observa el resul"ao+
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 16
@# F+# :ns"rucciones . 2unciones en OOo Basic
O a0ora es"a=
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 32
>n"onces* si 7uieres 7ue "e mues"re un icono con la seKal e Ls"o!M* ebes e
agregarle un seguno argumen"o 7ue se llama 5ipo* el cual* es un n?mero en"ero* !ara el !rimer
caso un 1G . !ara el icono e in"errogaci5n !onemos un @#* e;is"en o"ro os iconos 7ue !uees
mos"rar* el icono e e;clamaci5n (F,) . el icono e in2ormaci5n (GF)* 7ue "e mues"ro a7u=
)a ins"rucci5n MsgBox* "iene un "ercer argumen"o o!cional 7ue se llama 5itulo* el
cual !ermi"e !ersonalizar el "i"ulo el cuaro e ialogo* 7ue como no"as en las cua"ro im<genes
an"eriores* "oas icen so22ice* com!ru4balo* nunca me creas com!le"amen"e 0as"a no 0aberlo
com!robao !or "i mismo* !ara 0acerlo* !rueba las siguien"es lineas e c5igo+
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 166 "#*ono d% "&o7"
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 326 "#*ono d% 7'%gun&a"
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 486 "#*ono d% %x*la(a*+Kn"
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 646 "#*ono d% +nfo'(a*+Kn"
O observa el resul"ao* en es"a caso* solo e la seguna linea=
/reo 7ue "oava man"engo "u con2ianza* IveraJ* es!ero 7ue si+ Sigamos+ >s"os
son los "res argumen"os 7ue !uee usar la ins"rucci5n MsgBo;* Mensa3e* Ti!o . Ti"ulo* !or lo cual*
la sin"a;is com!le"a . correc"a e es"a ins"rucci5n es=
MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String6
A!renieno OOo Basic @@
)o im!or"an"e a7u es 7ue aprendas a distin,uir la estructura o sinta+is de una
instruccin* observa como los argumentos se se!aran !or comas . los argumentos o!cionales se
encierran en"re corc0e"es* aemas* . mu. im!or"an"e* observa 7ue se es!eci2ica el tipo de dato
7ue se es!era se use en el argumento* es"o* es mu. im!or"an"e* !asarle a un argumento un "i!o
e a"o 7ue /% es el 7ue es!era* !uee !roucir errores o resul"aos im!revisibles+
Aegresemos al argumen"o Ti!o* . veamos 7ue "ambi4n !oemos es"ablecer los
bo"ones e comano 7ue 7ueramos se mues"ren en el cuaro e ialogo* a7u es"a la lis"a
com!le"a e es"as o!ciones=
$ Mos"rar s5lo el bo"5n Ace!"ar+
1 Mos"rar los bo"ones Ace!"ar . /ancelar+
# Mues"re los bo"ones /ancelar* Ae!e"ir . :gnorar+
@ Mos"rar los bo"ones S* No . /ancelar+
F Mos"rar los bo"ones S . No+
5 Mos"rar los bo"ones Ae!e"ir . /ancelar+
O una mues"ra=
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 26 "#ns&'u**+Kn MsgBox"
/uano 7uieras mos"rar una combinaci5n e bo"ones e iconos* sim!lemen"e
es"ablece el argumen"o .ipo* como una suma e los valores 7ue 7uieres mos"rar* las os lineas
siguien"es son e7uivalen"es=
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*6 MFu+%'%s *on&+nua'N"6 4 B 326 ">>o Bas+*"
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*6 MFu+%'%s *on&+nua'N"6 366 ">>o Bas+*"
eue nos mos"rara=
O a!ues"o a 7ue .a "e 0icis"e la !regun"a in"eresan"e* Icomo sabemos 7ue bo"5n es
el 7ue !resiono el usuarioJ* la res!ues"a es sencilla* usaremos MsgBox !ero a0ora* como 2unci5n*
!ara ello "ienes 7ue recorar 7ue= una 2unci5n evuelve un valor* el cual* !ara em!ezar*
guararemos en una variable* seguno9 las 2unciones* al evolver un valor* "ambi4n es e un "i!o
es!eci2ico (S"ring* :n"eger* e"c)* !or lo cual* es mu. im!or"an"e 7ue la variable one guaremos el
valor sea el Lmismo tipoM el valor 7ue es!eramos nos evuelva la 2unci5n+ >n las 2unciones* los
argumentos 7ue lleve la 2unci5n* van siem!re en"re !ar4n"esis .* como van asignaas a una
@F F+# :ns"rucciones . 2unciones en OOo Basic
variable* necesi"amos usar el signo igual* como resul"ao* la es"ruc"ura com!le"a e la 2uncin
MsgBox seria=
Variable As Integer = MsgBox (Mensaje As String, [Tipo As Integer],
[Titulo As String]
Aecorano* .a 7ue es mu. im!or"an"e* 7ue la variable ebe ser eclaraa el
mismo tipo el valor 7ue es!eramos evuelva la 2unci5n* en es"e caso en es!eci2ico* la 2unci5n
MsgBox* evuelve un en"ero (:n"eger)* !or lo 7ue la variable one guares el valor e re"orno
ebes e eclararla como "i!o en"era (:n"eger) . as !ara caa valor e re"orno e caa 2unci5n
7ue uses* !or su!ues"o* en la ocumen"aci5n e OOo Basic* normalmen"e viene es!eci2icao es"e
valor e re"orno !ara caa 2unci5n* o en su e2ec"o* es!ero me alcancen las ganas e mos"rar"e
"oas las 2unciones 7ue usa OOo Basic* es!ero 7ue si+ )o realmen"e im!or"an"e* es 7ue a!renas
a consul"ar es"a ocumen"aci5n* es ecir* vieno es"ruc"uras como las 7ue "e 0e mos"rao* ebes
e ser ca!as e 0acer uso e cual7uier 2unci5n o ins"rucci5n* saber 7ue argumen"os necesi"a . e
7ue "i!o* as* como saber 7ue "i!o e valor e re"orno "enr<s* en el caso e las 2unciones+
6eamos el e3em!lo an"erior* com!le"o* .a con su variable e re"orno=
"u. #ns&'u**+on%sOJun*+on%s
@+( R%s7u%s&a !s #n&%g%'
R%s7u%s&a A MsgBox 2 "Es&o? a7'%nd+%ndo >>o Bas+*6 MFu+%'%s *on&+nua'N"6 366 ">>o Bas+*" 3
MsgBox R%s7u%s&a
End "u.
Por su!ues"o* !or a0ora* no veras muc0a i2erencia* "e mos"rara el mismo cuaro e
ialogo* !ero la gran i2erencia* es 7ue en la variable Res&'es#a* "enremos el valor el bo"5n
7ue el usuario 0a.a !resionao* Icomo saber cualJ . ac"uar en consecuencia* es "ema e o"ro
ca!i"ulo* as 7ue sigue le.eno* !or a0ora* solo "e !aso la lis"a com!le"a e los valores 7ue !uee
re"ornar la 2unci5n MsgBox+
1 Ace!"ar
# /ancelar
@ /ancelar
F Ae!e"ir
5 :gnorar
G S
% No
No creas 7ue es"a mal la lis"a* el bo"5n /ancelar* !uee regresar un valor # o @*
e!enieno e con 7ue o"ros bo"ones se mues"re+
>n"re m<s conozcas . omines las ins"rucciones . 2unciones e OOo Basic* m<s
r<!io . !rouc"ivo ser<s* !ero recuera 7ue no es necesario a!renerse e memoria "oo es"o*
lo veraeramen"e im!or"an"e es 7ue Laprendas a reconocer la sinta'is y estructura de
cualquier instruccin o 2uncin1* con es"o* el res"o es solo consul"ar la ocumen"aci5n el
lengua3e* la a.ua el !rograma o manuales como es"e* 7ue solo son re2erencia* la l5gica* lo
im!or"an"e . relevan"e al !rogramar* eso* solo se logra con la !rac"ica iaria* !ara 0acer real lo
7ue eca (on Aris"o"eles* -somos lo 7ue 0acemos a con a* e moo 7ue la e;celencia no es
un ac"o sino un 0abi"o-
M<s aelan"e a!reneremos a crear nues"ras !ro!ias ins"rucciones 7ue a7u
llamaremos Lsubru"inasM . "ambi4n nues"ras !ro!ias 2unciones* !ero !ara ello* no ebes e "ener
ua alguna e como se usan las 7ue incor!ora OOo Basic+
O un nuevo ca!i"ulo 0a llegao a su 2in* no olvies e=
A!renieno OOo Basic @5
Prac"icar muc0o+
Prueba a combinar los i2eren"es valores el argumen"o 5ipo.
Prac"icar muc0o+
No "e eben e 7uear uas* es"e "ema es mu. im!or"an"e !ara los siguien"es
ca!"ulos+
>nviarme "us uas* comen"arios . a!or"es+
Prac"icar muc0o+
). Constantes 7 Siempre lo mismo
cemos vis"o como guarar un a"o "em!oralmen"e en una variable* !ero 0abr<
ocasiones* 7ue un valor ser< cons"an"e uran"e "oa la e3ecuci5n e una macro* el uso e
cons"an"es es mu. sencillo . nos evi"a "ener 7ue es"ar recorano valores es!ec2icos* o"ro valor
agregao e las cons"an"es* es 7ue* si es"a llega a cambiar* solo "enemos 7ue cambiar su valor
una vez en la secci5n one la eclaramos+
Para eclarar una cons"an"e* usamos la !alabra clave Cons# e la siguien"e manera=
$ons& # A 100
Aun7ue lo m<s recomenable* es "ambi4n es"ablecer el "i!o e cons"an"e=
$ons& 0# !s "+ngl% A 3-1416
>s una !rac"ica com?n en los !rogramaores* eclarar las cons"an"es con
MAOUS/U)AS* aun7ue es"o no es una regla* "e encon"raras mu. seguio con es"a 2orma e
eclarar cons"an"es+ Un buen e3em!lo el uso e cons"an"es* es sus"i"uir el uso e los en"eros en
el argumen"o .ipo e la ins"rucci5n MsgBox* vis"o en el ca!i"ulo an"erior* veamos como=
$ons& #$><>/0REDC<H! !s #n&%g%' A 32
$ons& B>H><E"/"#<> !s #n&%g%' A 4
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 #$><>/0REDC<H! B B>H><E"/"#<>6 ">>o Bas+*"
Para nombrar a las cons"an"es* a!lican las mismas reglas vis"as !ara nombrar a las
macros . a las variables* !or lo 7ue no las re!e"iremos a7u+ (e!enieno el "amaKo e "u
!ro.ec"o* es una buena !rac"ica e !rogramaci5n* usar un moulo ?nico !ara eclarar variables .
cons"an"es* !ero a 2in e cuen"as "u gus"o . cri"erio son los 7ue manan+
).) &i2urcaciones 7 5omando decisiones
ITe 0as !ues"o a !ensar cuan"as ecisiones "omas al aJ* la via es"a 0ec0a e
ecisiones* o eso icen* . en las macros no nos salvamos e ellas* casi siem!re 0a. 7ue es"ar
eciieno algo . en base a es"a ecisi5n* "omamos uno u o"ro camino+ A2or"unaamen"e en OOo
Basic es muc0o m<s sencillo 7ue en la via* veamos como 0acerlo+
@G F+F Bi2urcaciones f Tomano ecisiones
Un !regun"a im!or"an"e= Ieuieres ser mi noviaJ* si ice 7ue LnoM I7ue 0agoJ* !ero
7ue "al 7ue ice 7ue LsiM* !regun"emosle=
>7&+on Ex7l+*+&

"u. <o8+os
@+( R%s7u%s&a !s #n&%g%'
R%s7u%s&a A MsgBox2 "MPu+%'%s s%' (+ no8+aN"6 32 B 46 "<o8+os" 3
MsgBox R%s7u%s&a
End "u.
/o!ia . e3ecu"a la macro an"erior . observa como ?nicamen"e es"amos ob"enieno la
in2ormaci5n el bo"5n 7ue selecciono el usuario= un G !ara el bo"5n LSiM . un % !ara el bo"5n LNoM*
e acuero a los valores mos"raos en la secci5n #+ A0ora* ac"uaremos en consecuencia*
e!enieno e la res!ues"a* !ara ello "e !resen"o una nueva ins"rucci5n 7ue "e acom!aKara
(es"a s) !ara el res"o e "u !rogramaci5n+ SeKoras . seKores* con Us"ees* la ins"rucci5n
I2...5"en...Else+ 6eamos su uso+
"u. <o8+os2
@+( R%s7u%s&a !s #n&%g%'
,5a 7'%gun&a +(7o'&an&%
R%s7u%s&a A MsgBox2 "MPu+%'%s s%' (+ no8+aN"6 32 B 46 "<o8+os" 3
,E8alua(os la '%s7u%s&a6 '%*u%'da6 un 7 %s +gual <o
#f R%s7u%s&a A 7 Hh%n
MsgBox "@% lo Fu% &% 7+%'d%s"
End #f
End "u.
Observa 7ue solo logramos saber cuano se !resiono el bo"5n e LNoM* !ero cuano
se !resiona el bo"5n LSiM* sim!lemen"e no lo sabemos* !ara solven"ar es"o* c0eca la siguien"e
macro=
"u. <o8+os3
@+( R%s7u%s&a !s #n&%g%'
,5a 7'%gun&a +(7o'&an&%
R%s7u%s&a A MsgBox2 "MPu+%'%s s%' (+ no8+aN"6 32 B 46 "<o8+os" 3
,E8alua(os la '%s7u%s&a6 '%*u%'da6 un 7 %s +gual <o
#f R%s7u%s&a A 7 Hh%n
MsgBox "@% lo Fu% &% 7+%'d%s"
Els%
,$ualFu+%' o&'o 8alo' d+f%'%n&% d%l Fu% s% %8al;a %n la *ond+*+Kn
MsgBox "Pu% +n&%l+g%n&% %'%s"
End #f
End "u.
No"aras al e3ecu"ar* 7ue a0ora si sabemos cuano se !resiono caa uno e los
bo"ones e nues"ro cuaro e ialogo+ (ebes e !oner a"enci5n a algo im!or"an"e* la ins"rucci5n
>lse* signi2ica Lcual7uierM o"ro valor o caso o conici5n* es ecir* en nues"ro e3em!lo* si el valor e
la variable Aes!ues"a era %* la e3ecuci5n con"inua en la lnea inmeia"a* si la variable "iene
Lcual7uierM o"ro valor o conici5n* en"onces 0ace lo seguno* veamoslo con un e3em!lo=
"u. @+a@%5a"%(ana
@+( @+a !s #n&%g%'
,"ol+*+&a' un nu(%'o d+ga(os %n&'% 1 ? 10
@+a A #n7u&Box2 "MPu% d+a Fu+%'%s sa.%' 21 a 103N" 3
#f @+a A 1 Hh%n
MsgBox "Es&% d+a %s @o(+ngo"
Els%
MsgBox "Es&% d+a <> %s @o(+ngo"
End #f
A!renieno OOo Basic @%
End "u.
Observa como Lsolamen"eM con el valor e 1* es como se nos in2orma 7ue es
(omingo* cual7uier o"ro valor nos mues"ra el seguno mensa3e+ Si 7uisi4ramos saber 7ue a e
la semana corres!one a o"ro valor* usaremos una varian"e e la ins"rucci5n I2..5"en...Else*
veamos como=
"u. @+a@%5a"%(ana2
@+( @+a !s #n&%g%'
,"ol+*+&a' un nu(%'o d+ga(os %n&'% 1 ? 10
@+a A #n7u&Box2 "MPu% d+a Fu+%'%s sa.%' 21 a 103N" 3
#f @+a A 1 Hh%n
MsgBox "Es&% d+a %s @o(+ngo"
Els%#f @+a A 2 Hh%n
MsgBox "Es&% d+a %s 5un%s"
Els%
MsgBox "<> s% Fu% d+a %s"
End #f
End "u.
(e es"a manera* !oemos 0acer "an"as com!araciones como 7ueramos* gTAA>Ah
com!le"a la macro !ara 7ue nos e "oo los as e la semana . en caso e o"ro valor nos in2orme
7ue no es un a e la semana+ /omo !is"a* !uees usar "an"os ElseI2 como 7uieras+
Aesumieno= la es"ruc"ura general e la ins"rucci5n I2...5"en...Else es=
#f $><@#$#>< Hh%n
,$Kd+go s+ *ond+*+Kn %s 8%'dad%'a
QEls%#f $><@#$#></2 Hh%nR
,$Kd+go s+ *ond+*+Kn 2 %s 8%'dad%'a
QEls%R
,$ualFu+%' o&'o 8alo'
End #f
Aecuera 7ue las o!ciones 7ue es"<n en"re corc0e"es son Lo!cionalesM* no
necesariamen"e "ienes 7ue usarlas* !ero veras 7ue casi siem!re as ser<+ >n /ON(:/:ON* !uee
ir Lcual7uierM ins"rucci5n susce!"ible e ser evaluaa como veraera o 2alsa . !uee ser "an
sencilla como las vis"as 0as"a a0ora o com!le3a como el siguien"e e3em!lo* 7ue !or a0ora* no "e
im!or"e como es"a cons"ruia* sino "an solo 7uiero mos"rar"e un caso Li2eren"eM e conici5n*
!ero veras 7ue m<s aelan"e a!reneremos a 0acer+
Els%#f .olHa?$o(+llas A Jals% !nd 2s&'0ala.'a A "," >' C$as%2s&'0ala.'a3 A "REM"3 Hh%n
Els%#f Es0ala.'a$la8%2s&'0ala.'a3 !nd .olHa?$o(+llas A Jals% Hh%n
6olvieno al e3em!lo e los as e la semana* en ocasiones* sobre "oo cuano se
com!ara la misma variable varias veces* es !osible usar o"ra ins"rucci5n e bi2urcaci5n* a0ora*
a!rener<s a usar Select...Case* veamos un e3em!lo=
"u. @+a@%5a"%(ana3
@+( @+a !s #n&%g%'
@+a A #n7u&Box2 "MPu% dGa Fu+%'%s sa.%' 21 a 103N" 3
"%l%*& $as% @+a
$as% 1
MsgBox "Es&% dGa %s @o(+ngo"
$as% 2
MsgBox "Es&% dGa %s 5un%s"
@, F+F Bi2urcaciones f Tomano ecisiones
$as% 3
MsgBox "Es&% dGa %s Ma'&%s"
$as% 4
MsgBox "Es&% dGa %s M+S'*ol%s"
$as% Els%
MsgBox "<> s% Fu% dGa %s"
End "%l%*&
End "u.
Observa 7ue 2<cil es es"a ins"rucci5n+ Aemas* !uee usar varios valores a evaluar o
rangos e valores* !or e3em!lo=
"u. @+a@%5a"%(ana4
@+( @+a !s #n&%g%'
@+a A #n7u&Box2 "MPu% dGa Fu+%'%s sa.%' 21 a 103N" 3
"%l%*& $as% @+a
,!FuG %8alua(os s+ %s s=.ado o do(+ngo
$as% 16 7
MsgBox "0o' f+n a d%s*ansa'"
,O aFuG s+ %s %n&'% s%(ana6 d% 5un%s a 1+%'n%s
$as% 2 Ho 6
MsgBox "Pu% ho''o'6 dGa d% &'a.a)o"
$as% Els%
MsgBox "<> s% Fu% dGa %s"
End "%l%*&
End "u.
I6era 7ue es 2<cilJ Al igual 7ue con la ins"rucci5n I2...5"en...Else* las conici5n a
evaluar !uee ser mu. sencilla o com!le3a* !ero las os* son el !an nues"ro e caa a en la
!rogramaci5n* as 7ue* "enlas siem!re a la mano+
).! &ucles 7 8epitelo otra ,e9
>n ocasiones (e 0ec0o* mu. seguio) es necesario realizar el mismo !aso una .
o"ra vez* es ecir* necesi"amos re!e"ir blo7ues e c5igo las veces 7ue 7ueramos o cuano (o
0as"a) 7ue se cum!la una conici5n es!eci2ica+ Para ello* vamos a conocer os nuevas
es"ruc"uras !ara 0acer bucles o re!e"iciones* es"<n son= For.../e't . Do...3oop* veamos e3em!los
e caa una* "e acueras cuano "e !or"abas mal . la maes"ra "e e3aba escribir cien veces
-Tengo 7ue !or"arme bien-* si en eso en"onces 0ubiese sabio !rogramar (. cons"e 7ue cuano
iba a la !rimaria .a e;is"an las com!u"aoras) le 0ubiese en"regao a la maes"ra el siguien"e
c5igo=
>7&+on Ex7l+*+&
"u. 0o'&a's%B+%n
@+( $on&ado' !s #n&%g%'
,#n+*+a %l *on&ado' *on los l+(+&%s %s7%*+f+*ados
Jo' $on&ado' A 1 Ho 2
,Es&% %s %l *Kd+go Fu% s% %)%*u&a %l nu(%'o d% 8%*%s
,%s7%*+f+*ado *on los l+(+&%s %n nu%s&'o *aso 2 8%*%s
MsgBox "H%ngo Fu% 7o'&a'(% .+%n"
A!renieno OOo Basic @-
<%x&
End "u.
Se 7ue es"a mu. claro* !ero me3or lo e;!licamos !ara 7ue no 0a.a ninguna ua .
ning?n !re"e;"o e como a!licarlo m<s aelan"e+ Para 0acer uso e la es"ruc"ura For.../e't* es
necesaria una variable e a!o.o* !ara nues"ro caso* escogimos la variable /on"aor* con
2recuencia "e encon"raras 7ue algunos !rogramaores usan la le"ra :* i . subsecuen"es como
con"aores* !ero "u eres libres e elegir . usar la variable 7ue m<s "e !lazca* !or e3em!lo* la le"ra
M es mu. boni"a* la B "ambi4n es mu. lina+ Observa 7ue solo "e mos"rara el mensa3e os veces*
7ue son las inicaas !or el limi"e in2erior . su!erior el con"aor es!eci2icaas con 1 To #* no "e
!use cien !or 7ue "enras 7ue ar cien clics !ara "erminar la macro* !ero !ara es"ablecer valores
m<s granes* a!rovec0aremos !ara ver como LsumarM caenas e "e;"o* en !rogramaci5n a la
LsumaM e caenas e "e;"o se le conoce como Lconca"enarM . no es o"ra cosa 7ue !egar caenas
e "e;"o una con o"ra* !or e3em!lo=
"u. Hu<o(.'%
@+( <o(.'% !s "&'+ng
@+( !7%ll+do1 !s "&'+ng
@+( !7%ll+do2 !s "&'+ng
@+( <o(.'%$o(7l%&o !s "&'+ng
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3
!7%ll+do1 A #n7u&Box2 "M$ual %s &u 7'+(%' !7%ll+doN"3
!7%ll+do2 A #n7u&Box2 "MO %l s%gundoN"3
<o(.'%$o(7l%&o A <o(.'% B !7%ll+do1 B !7%ll+do2

MsgBox "Hu no(.'% *o(7l%&o %s4 " B <o(.'%$o(7l%&o

End "u.
Observa como solici"amos el nombre . a!ellio . al 2inal lo mos"ramos en una sola
lnea e "e;"o* si bien 2unciona con el o!eraor R* es m<s com?n usar el smbolo e am!ersan (j)
como conca"enaor e caenas e "e;"o=
"u. Hu<o(.'%2
@+( <o(.'% !s "&'+ng
@+( !7%ll+do1 !s "&'+ng
@+( !7%ll+do2 !s "&'+ng
@+( <o(.'%$o(7l%&o !s "&'+ng
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3
!7%ll+do1 A #n7u&Box2 "M$ual %s &u 7'+(%' !7%ll+doN"3
!7%ll+do2 A #n7u&Box2 "MO %l s%gundoN"3
<o(.'%$o(7l%&o A <o(.'% 9 !7%ll+do1 9 !7%ll+do2

MsgBox "Hu no(.'% *o(7l%&o %s4 " 9 <o(.'%$o(7l%&o

End "u.
Por su!ues"o 0abr<s no"ao 7ue el nombre com!le"o sale "oo !egao* "e e3o e
"area 7ue "e 7uee mu. !resen"able . boni"o+ A0ora si* !oemos 0acer nues"ro bucle m<s grane*
!robemos !rimero con 1$=
"u. 0o'&a's%B+%n2
@+( $on&ado' !s #n&%g%'
@+( H%x&o !s "&'+ng
Jo' $on&ado' A 1 Ho 10
H%x&o A H%x&o 9 "H%ngo Fu% 7o'&a'(% .+%n"
F$ F+5 Bucles f Ae!i"elo o"ra vez
<%x&
MsgBox H%x&o
End "u.
A<!io !ero no nos gus"a "oo el "e;"o 3un"o* IveraJ+ Para me3orarlo un !oco* le
agregaremos un salo e lnea al 2inal e caa una* as=
"u. 0o'&a's%B+%n3
@+( $on&ado' !s #n&%g%'
@+( H%x&o !s "&'+ng
Jo' $on&ado' A 1 Ho 10
H%x&o A H%x&o 9 "H%ngo Fu% 7o'&a'(% .+%n" 9 $h'2133
<%x&
MsgBox H%x&o
End "u.
IAecueras como eca mi amigoJ -ansina si-+
IO 7ue "e !arecera si lo me3oramos agreg<nole el n?mero a caa lneaJ=
"u. 0o'&a's%B+%n4
@+( $on&ado' !s #n&%g%'
@+( H%x&o !s "&'+ng
Jo' $on&ado' A 1 Ho 10
H%x&o A H%x&o 9 $on&ado' 9 "-T H%ngo Fu% 7o'&a'(% .+%n" 9 $h'2133
<%x&
MsgBox H%x&o
End "u.
A!renieno OOo Basic F1
Muc0o me3or* Ino creesJ+ )os limi"es in2erior . su!erior no necesariamen"e "ienen
7ue ser !osi"ivos=
Jo' $on&ado' A T5 Ho 5
Tam!oco "ienen !or 7ue ir e uno en uno* cuano !oemos ir e os en os* e "res
en "res o en el rango 7ue necesi"emos+
"u. 0o'&a's%B+%n5
@+( $on&ado' !s #n&%g%'
@+( H%x&o !s "&'+ng
Jo' $on&ado' A 1 Ho 20 "&%7 2
H%x&o A H%x&o 9 $on&ado' 9 "-T H%ngo Fu% 7o'&a'(% .+%n" 9 $h'2133
<%x&
MsgBox H%x&o
End "u.
>s"o se es"a !onieno iver"io+ Por su!ues"o observas"e 7ue le agregamos un
argumen"o a la ins"rucci5n* en es"e caso Step* !ara inicarle 7ue sal"o 7ueremos . es"e sal"o no
necesariamen"e "iene 7ue ser ni en"ero* ni !osi"ivo* o3o* muc0o o3o con es"o+
Jo' $on&ado' A 100 Ho 10 "&%7 T10
F# F+5 Bucles f Ae!i"elo o"ra vez
O a7u "e lo e3o !ara 7ue 0agas "oas las !ruebas 7ue 7uieras . nos las cuen"es en
el 2oro o lis"a e correo+ )a siguien"e macro "iene un !e7ueKo error* "u "area es inicarme cual es*
en el ca!i"ulo e variables !uees encon"rar a.ua+
"u. 0o'&a's%B+%n6
@+( $on&ado' !s #n&%g%'
@+( H%x&o !s "&'+ng
Jo' $on&ado' A 0 Ho 1 "&%7 0-1
H%x&o A H%x&o 9 $on&ado' 9 "-T H%ngo Fu% 7o'&a'(% .+%n" 9 $h'2133
<%x&
MsgBox H%x&o
End "u.
/omo ul"imo comen"ario e es"a ins"rucci5n* !uees usar es!u4s e la !alabra
clave /e't* el mismo nombre e la variable 7ue es"e usano como con"aor* !or e3em!lo=
Jo' $on&ado' A 0 Ho 1 "&%7 0-1
(A)'* $a c+digo
<%x& $on&ado'
>s"o es sumamen"e ?"il cuano "ienes varios bucles e re!e"ici5n aniaos* muc0as
veces el uso e la sangra es su2icien"e !ara is"inguir unos e o"ros* !ero en o"ras ocasiones*
sobre "oo cuano 0a. muc0as lneas e c5igo en"re ellos* es un !oco com!le3o saber one
"ermina uno* claro 7ue el :(> e inica si 2al"a alguno* !ero no es"a e m<s como a.ua* a 2in e
cuen"as* e nuevo* "u . solo "u* eciir<s si lo usas o no* 7ue e eso se "ra"a la liber"a+
"u. Bu*l%s!n+dados
@+( *o1 !s #n&%g%'6 *o2 !s #n&%g%'
Jo' *o1 A 1 Ho 5
Jo' *o2 A 1 Ho 10
<%x& *o2
<%x& *o1
End "u.
A0ora si* e La everasM !ara 2inalizar* recuera bien la es"ruc"ura e es"a
ins"rucci5n=
Jo' 1a'+a.l% A #n+*+o Ho J+n Q"&%7 "al&oR
,*od+go
QEx+& Jo'R
<%x& Q1a'+a.l%R
O recuera 7ue lo 7ue es"a en"re corc0e"es es o!cional+ Observa 7ue eba3o e la
linea e comen"ario* 0a. una ins"rucci5n 7ue no 0emos vis"o* se "ra"a e= E'it For* es"a nos sirve
!ara salir an"ici!aamen"e e un ciclo 'or+++Ne;"* es ecir en el momen"o 7ue 7uieras* veamos un
e3em!lo iver"io e su uso=
>7&+on Ex7l+*+&
"u. Csando/Ex+&/Jo'23
@+( *o1 !s #n&%g%'
@+( s5%&'a !s "&'+ng
@+( s1o*al%s !s "&'+ng
@+( s$onsonan&%s !s "&'+ng
Jo' *o1 A 1 Ho 100
s5%&'a A $h'2 Rnd23 25 B 65 3
A!renieno OOo Basic F@
"%l%*& $as% s5%&'a
$as% "!"6 "E"6 "#"6 ">"6 "C"
s1o*al%s A s1o*al%s 9 " " 9 s5%&'a
$as% """
Ex+& Jo'
$as% Els%
s$onsonan&%s A s$onsonan&%s 9 " " 9 s5%&'a
End "%l%*&
<%x&
MsgBox "El *+*lo &%'(+no %n4 " 9 *o1 9 $h'2133 9 $h'2133 9 /
"1o*al%s4 " 9 s1o*al%s 9 $h'2133 9 /
"$onsonan&%s4 " 9 s$onsonan&%s6 06 "E)%(7lo Ex+& Jo'"
End "u.
)a 2unci5n /0r(valor) nos evuelve el car<c"er AS/:: corres!onien"e a ic0o valor*
la le"ra A "iene un valor e G5 . la le"ra k "iene un valor e -$* !or ello es 7ue con la lnea
s5%&'a A $h'2 Rnd23 25 B 65 3
Ob"enemos un valor alea"orio en"re G5 . -$ . /0r nos evuelve ic0a le"ra* es!u4s
evaluamos si es una vocal* si es la le"ra S o si es una consonan"e* solo en el caso e 7ue la le"ra
evuel"a sea una S (e Salia)* el ciclo 'or+++Ne;" se in"errum!e . sale con E'it For* al 2inal*
mos"ramos el valor el con"aor !ara saber si "ermino el ciclo o salio an"es* es mis !ruebas
curiosamen"e salio varias veces en 1 . lo m<;imo 2ue -,* es ecir* nunca "ermino el ciclo* .a me
con"aras como "e va a "i con "us !ruebas+ Al "i!o e ciclo usao en 'or++Ne;"* algunos au"ores le
llama Le"erminaoM !ues sabemos one em!ieza . one "ermina* 0a. o"ro "i!o e ciclos
llamaos Line"erminaosM* !ues e!enen e una o unas coniciones !ara em!ezar o "erminar el
ciclo* veamos cuales son=
)a ins"rucci5n Do...3oop* "ambi4n nos sirve !ara 0acer re!e"iciones* !ero en vez e
usar un con"aor* se usa una conici5n !ara saber cuano "erminar un bucle e incluso cuano
em!ieza o "al vez nunca em!ezar+ /omo creo 7ue es m<s claro con e3em!los* a ellos nos
a"enemos=
"u. @a(%Hu<o(.'%
@+( <o(.'% !s "&'+ng
@o
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3
5oo7 Uh+l% <o(.'% A ""

End "u.
Analicemos lnea !or lnea la macro an"erior=
"u. @a(%Hu<o(.'% ,#n+*+a(os la (a*'o
@+( <o(.'% !s "&'+ng ,@%*la'a(os una 8a'+a.l% d% &%x&o
@o ,#n+*+a(os %l .u*l%
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3 ,"ol+*+&a(os un 8alo'6 %n %s&% *aso un no(.'%
5oo7 Uh+l% <o(.'% A "" ,$on&+nua(os %l .u*l% VmientrasW la *ond+*+Kn s%a 1ER@!@ER!
End "u. ,J+nal+:a(os la (a*'o
cabr<s no"ao 7ue e es"a 2orma* 2orzamos al usuario a escribir un valor en el
cuaro e ialogo* si bien es !osible* recuera 7ue es eseable* !ro!orcionar casi siem!re una
2orma e cancelar o in"errum!ir el bucle* !ara !robar una !rimer al"erna"iva !ara ello* nos
a!o.aremos en una es"ruc"ura .a vis"a=
"u. @a(%Hu<o(.'%2
FF F+5 Bucles f Ae!i"elo o"ra vez
@+( <o(.'% !s "&'+ng
@+( R%s7u%s&a !s #n&%g%'
@o
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N" 3
#f <o(.'% A "" Hh%n
R%s7u%s&a A MsgBox2 "!l 7a'%*%' no %s*'+.+s&% nada6 M'%al(%n&% Fu+%'%s sal+'N"6 32 B 46
""al+'" 3
,R%*u%'da Fu% un 6 s+gn+f+*a Fu% %l usua'+o 7'%s+ono %l .o&Kn "#
#f R%s7u%s&a A 6 Hh%n
,Es&a.l%*%(os la 8a'+a.l% *on *ualFu+%' *osa 7a'a Fu% &%'(+n% %l .u*l%
<o(.'% A "*ualFu+%' *osa"
End #f
End #f
5oo7 Uh+l% <o(.'% A ""

End "u.
Aecuera siem!re e ir !robano el c5igo+ Parece 7ue 2unciona bien la macro
an"erior* !ero 0a. una sim!le 2orma e LengaKarlaM* !rueba a in"roucir !uros es!acios . veras
7ue sale inmeia"amen"e* !ara subsanar es"e inconvenien"e* 0aremos uso e una 2unci5n
in"egraa en OOo Basic 7ue nos sirve !ara eliminar los es!acios vacos al inicio . al 2inal e una
caena* "e !resen"o a la ins"rucci5n 5rim* 7ue se usa e la siguien"e 2orma=
"u. @a(%Hu<o(.'%3
@+( <o(.'% !s "&'+ng
@+( R%s7u%s&a !s #n&%g%'
@o
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N" 3
Nombre = Trim( Nombre )
#f <o(.'% A "" Hh%n
R%s7u%s&a A MsgBox2 "!l 7a'%*%' no %s*'+.+s&% nada6 M'%al(%n&% Fu+%'%s sal+'N"6 32 B 46
""al+'" 3
,R%*u%'da Fu% un 6 s+gn+f+*a Fu% %l usua'+o 7'%s+ono %l .o&Kn "#
#f R%s7u%s&a A 6 Hh%n
,Es&a.l%*%(os la 8a'+a.l% *on *ualFu+%' *osa 7a'a Fu% &%'(+n% %l .u*l%
<o(.'% A "*ualFu+%' *osa"
End #f
End #f
5oo7 Uh+l% <o(.'% A ""

End "u.
A0ora s* 2unciona me3or* Ise "e ocurren m<s al"erna"ivas !or L!reverM o me3orarJ* lo
sien"o* esa es "u "area+ Para con"inuar* veremos una varian"e e es"a es"ruc"ura 7ue nos !ermi"e
inver"ir la l5gica e la conici5n* veamos como=
"u. @a(%Hu<o(.'%4
@+( <o(.'% !s "&'+ng
@o
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3
5oo7 Until <o(.'% XY ""
End "u.
Se mu. a"en"o* observa como a0ora le ecimos L"astaM (con la ins"rucci5n :ntil* en
negri"as) 7ue la variable Nombre* sea Li2eren"eM e vaca* es ecir* con"enga algo+ Tambi4n* no"a
7ue la conici5n "iene 7ue seguir sieno veraera !ara 7ue el bucle "ermine* lo 7ue 0icimos 2ue
cambiar un argumen"o . el o!eraor e la conici5n+ A0ora* la macro com!le"a* con ,alidacin .
"oo* o3o* recuera es"a !alabra mu. bien* ,alidacin* es el !an nues"ro e caa a al !rogramar+
A!renieno OOo Basic F5
"u. @a(%Hu<o(.'%5
@+( <o(.'% !s "&'+ng
@+( R%s7u%s&a !s #n&%g%'
@o
<o(.'% A #n7u&Box2 "M$ual %s &u <o(.'%N"3
<o(.'% A H'+(2 <o(.'% 3
#f <o(.'% A "" Hh%n
R%s7u%s&a A MsgBox2 "!l 7a'%*%' no %s*'+.+s&% nada6 ZM'%al(%n&% Fu+%'%s
sal+'N"6 32 B 46 ""al+'" 3
,R%*u%'da Fu% un 6 s+gn+f+*a Fu% %l usua'+o 7'%s+ono %l .o&on "#
#f R%s7u%s&a A 6 Hh%n
,Es&a.l%*%(os la 8a'+a.l% *on *ualFu+%' *osa 7a'a Fu% &%'(+n% %l .u*l%
<o(.'% A "*ualFu+%' *osa"
End #f
End #f
5oo7 Cn&+l <o(.'% XY ""

End "u.
Tal vez* con 3us"a raz5n* "e !regun"aras* I!or7ue os 2ormas e 0acer lo mismoJ+
Aecuera 7ue no "oos "enemos el mismo moo e LrazonarM* a los 2unamen"alis"as e cual7uier
e;"remo . color se les reconoce 2<cilmen"e !or su L!ensamien"oM uni2orme . negaci5n a ver o"ro o
al o"ro+ >n casi "oo . m<s en la !rogramaci5n* 0a. m<s e una 2orma e 0acer las cosas* es casi
seguro 7ue unas se aa!"aran r<!iamen"e a "u 2orma e razonar* o"ras no* !ero al 0aber varias
maneras e resolver el mismo !roblema* la cues"i5n se enri7uece* as 7ue la !r5;ima vez 7ue
es"4s !ron"o a !re3uzgar* e"en"e un momen"o . "ra"a e en"ener la 2orma Li2eren"eM e razonar
el o"ro* "al vez* sea un buen momen"o !ara am!liar "us 0orizon"es+
O 0ablano e variea* observa como las os varian"es e la es"ruc"ura vis"a*
e3ecu"a el c5igo en"re Do..3oop* al menos una vez+ cabr< ocasiones en 7ue necesi"emos o
7ueramos 7ue no se e3ecu"e ni una sola vez* I!or e3em!loJ* imagina 7ue !ara en"rar en el bucle*
necesi"amos 2orzosamen"e 7ue se cum!la una conici5n+ Para 0acer es"o* sim!lemen"e !asamos
la ins"rucci5n al inicio e la es"ruc"ura* e la siguien"e 2orma=
"u. @a(%Hu<o(.'%6
@+( <o(.'% !s "&'+ng
@+( 5+s&a !s "&'+ng
,"ol+*+&a(os un da&o
<o(.'% A #n7u&Box2 "M@a(% un <o(.'%N"3
,5% Fu+&a(os los %s7a*+os so.'an&%s al +n+*+o ? al f+nal
<o(.'% A H'+(2 <o(.'% 3
,#n+*+a(os %l .u*l%6 s+ la 8a'+a.l% %s d+f%'%n&% d% 8a*Ga
@o Uh+l% <o(.'% XY ""
,Jo'(a(os una l+s&a d% los no(.'%s +n&'odu*+dos
5+s&a A 5+s&a 9 " T " 9 <o(.'%
,"ol+*+&a(os o&'o no(.'%
<o(.'% A H'+(2 #n7u&Box2 "M@a(% o&'o <o(.'%N"3 3
5oo7
,"+ la l+s&a *on&+%n% algo lo (os&'a(os
#f 5+s&a XY "" Hh%n
MsgBox 5+s&a
End #f

End "u.
'<cil* IveraJ+ A7u no"a las os 2ormas en 7ue 0acemos uso e la ins"rucci5n
Input&o'* la !rimera e 2orma irec"a . la seguna e 2orma aniaa+ Aniar 2unciones* "e ebe
e resul"ar mu. 2amiliar si eres un usuario meio1avanzao e cual7uier 0o3a e calculo*
conocimien"o 7ue "e resul"ara mu. ?"il en !rogramaci5n .a 7ue es mu. recurria+ O s* !ues 0a.
FG F+5 Bucles f Ae!i"elo o"ra vez
"area* la cual consis"e en 7ue logres el mismo !ro!5si"o* !ero con la !alabra clave :ntil* en vez e
;"ile+
Para 2inalizar es"e "ema e los bucles* "e mos"rare la ins"rucci5n !ara 2inalizar
an"ici!aamen"e un ciclo (o+++)oo!* es"as !alabras clave son= E'it Do . se usan e la siguien"e
manera=
>7&+on Ex7l+*+&
"u. Csando/Ex+&/@o23
@+( s$la8% !s "&'+ng
@+( sH(7 !s "&'+ng
s$la8% A "(%llon"
@o
sH(7 A H'+(2#n7u&Box2"Ha.la a(+go ? %n&'a"33
#f sH(7 A "(%llon" Hh%n
MsgBox "O s% a.'%n las 7u%'&as d% Mo'+a"
Ex+& @o
End #f
5oo7 Cn&+l sH(7 A "sal+'"

End "u.
Observa como "enemos os 2ormar e "erminar el bucle* una* la 7ue .a conoces en
la conici5n 2inal* . la o"ra* si el usuario escribe correc"amen"e la !alabra clave . salimos con >;i"
(o+ 5en cuidado con los ciclos indeterminados* una conici5n mal !lan"eaa "e !uee e3ar
en"ro e un ciclo in2ini"o+
Me creer<s 7ue con los elemen"os vis"os 0as"a a0ora* .a se !ueen 0acer muc0as*
muc0as cosas+ >m!ieza a !ensar en como au"oma"izaras esos !asos "an re!e"i"ivos . "eiosos
7ue siem!re 0aces+ Para ello* man"4n siem!re en "u men"e el iagrama 7ue vimos en el ca!i"ulo
F+1* LcasiM "oo lo 7ue se 0ace en !rogramaci5n res!one a!ro;imaamen"e bien a el* como ice
el ic0o -la !rac"ica 0ace al maes"ro- . solo la !rac"ica iaria "e ar< el ominio e la 0erramien"a
!ara ob"ener e ella el me3or !rovec0o* no te en*a<es* con solo leer es"as no"as o cual7uiera o"ra
ocumen"aci5n 7ue encuen"res o a7uieras (. "e lo igo !or e;!eriencia) no es su2icien"e !ara 7ue
resuelvas "us !roblemas in2orm<"icos* muc0o menos* 7ue "e 0agas llamar !rogramaor* si crees
7ue es"o. "ra"ano e in2luenciar"e !ara 7ue !rac"i7ues muc0o* es"ar<s en lo cier"o* eso 7uiero
0acer . !ara "erminar es"e ca!i"ulo* recuera lo 7ue eca un 0ombre 7ue !rac"icaba .
e;!erimen"aba muc0o+
"El genio es 1% de inspiracin y 99% de transpiracin"
Thomas Alva Edison
).= Matrices 7 >untos pero no re,ueltos
>n el cual veremos como mani!ular muc0os a"os en una sola variable* las ma"rices
!ueen ser e muc0a u"ilia o conver"irse en un veraero galima"ias si no se mane3an
correc"amen"e* es im!or"an"e 7ue a!renas a u"ilizarlas* !ues muc0as es"ruc"uras e
O!enO22ice+org vienen im!lemen"aas en ma"rices+
)a sin"a;is m<s sencilla !ara una ma"riz es la siguien"e=
(im NombreQMa"riz( TamaKo As :n"eger ) As Ti!o
A!renieno OOo Basic F%
>n one !ara NombreQMa"riz "iene 7ue cum!lir las mismas coniciones 7ue !ara
nombrar las macros . las variables vis"as an"eriormen"e+ TamaKo se re2iere al n?mero e
elemen"os 7ue con"enr< la ma"riz* en es"e caso* el inicar"e 7ue sea un "i!o Inte*er (>n"ero) es
m<s inica"ivo 7ue res"ric"ivo* 0e 0ec0o la !rueba con valores m<s grane 7ue un Inte*er
(>n"ero)* !ero no me imagino una macro 7ue use "an"os elemen"os . si lo 0a.* "al vez 7uiera ecir
7ue es 0ora e !asar a usar bases e a"os+ No 0e encon"rao ocumen"aci5n al res!ec"o el
limi"e e es"e valor* en mis !ruebas es"o. casi seguro 7ue es"a conicionao m<s !or el limi"e e
la memoria Aam el e7ui!o one se e3ecu"e 7ue e o"ra causa+ Te e3o a "u cri"erio* e;!eriencia
. !ruebas el limi"e e elemen"os a usar+
Te resul"ara mu. 2<cil !ensar en las ma"rices con una lis"a e valores en su
!resen"aci5n m<s sencilla* o en una "abla e 2ilas . columnas en las mas com!le3a* !or e3em!lo=
los as e la semana* una sim!le lis"a sera as=
"omingo
3unes
Martes
Mi=rcoles
.ue$es
Hiernes
(7%ado
Para guarar es"o en una ma"riz* sera as=
"u. E)%(7lo/Ma&'+*%s1
@+( (+"%(ana263 !s "&'+ng
(+"%(ana203 A "@o(+ngo"
(+"%(ana213 A "5un%s"
(+"%(ana223 A "Ma'&%s"
(+"%(ana233 A "M+S'*ol%s"
(+"%(ana243 A "[u%8%s"
(+"%(ana253 A "1+%'n%s"
(+"%(ana263 A ""=.ado"
MsgBox (+"%(ana2 3 3
End "u.
O observa 7ue con un sim!le bucle* !oemos acceer a "oa la ma"riz
"u. E)%(7lo/Ma&'+*%s2
@+( (+"%(ana263 !s "&'+ng
@+( *o1 !s #n&%g%'
(+"%(ana203 A "@o(+ngo"
(+"%(ana213 A "5un%s"
(+"%(ana223 A "Ma'&%s"
(+"%(ana233 A "M+S'*ol%s"
(+"%(ana243 A "[u%8%s"
(+"%(ana253 A "1+%'n%s"
(+"%(ana263 A ""=.ado"

Jo' *o1 A 0 Ho 6
MsgBox (+"%(ana2 *o1 36 646 "Hoda la s%(ana"
<%x&
End "u.
No"a 7ue la ma"riz em!ieza en $ (cero)* 7ue es la 2orma !ree"erminaa* !oemos
2orzar a 7ue las ma"rices em!iecen en 1 (uno)* usano la !alabra clave %ption &ase* e la
siguien"e manera=
F, F+G Ma"rices f iun"os !ero no revuel"os
>7&+on Ex7l+*+&
>7&+on Bas% 1
"u. E)%(7lo/Ma&'+*%s3
@+( (+"%(ana273 !s "&'+ng
@+( *o1 !s #n&%g%'
(+"%(ana213 A "@o(+ngo"
(+"%(ana223 A "5un%s"
(+"%(ana233 A "Ma'&%s"
(+"%(ana243 A "M+S'*ol%s"
(+"%(ana253 A "[u%8%s"
(+"%(ana263 A "1+%'n%s"
(+"%(ana273 A ""=.ado"

Jo' *o1 A 1 Ho 7
MsgBox (+"%(ana2 *o1 36 646 "Hoda la s%(ana"
<%x&
End "u.
%ption &ase LnoM !uee ir en"ro e una macro* "iene 7ue ir al inicio e un moulo
en el <rea e eclaraci5n e variables+ )a ma.ora e las es"ruc"uras e O!enO22ice+org inician en
$ (cero)* as 7ue usaremos es"e valor e inicio como !ree"erminao en "oo el libro+ Si "e es
necesario un inicio . un 2in i2eren"es !ues usar la siguien"e varian"e !ara la eclaraci5n e
ma"rices+
(im NombreQMa"riz( :nicio As Ti!o To 'in As Ti!o ) As Ti!o
>n one :nicio !uee ser incluso un valor nega"ivo como en los e3em!los
siguien"es=
"u. E)%(7lo/Ma&'+*%s4
@+( (+s<u(%'os25 Ho 143 !s #n&%g%'
@+( (+s$olo'%s2T5 Ho 43 !s "&'+ng
(+s<u(%'os253 A 123
(+s<u(%'os263 A 345
(+s<u(%'os273 A 567
(+s<u(%'os283 A 890
(+s<u(%'os293 A 135
(+s<u(%'os2103 A 246
(+s<u(%'os2113 A 147
(+s<u(%'os2123 A 258
(+s<u(%'os2133 A 369
(+s<u(%'os2143 A 951

(+s$olo'%s2T53 A "!:ul"
(+s$olo'%s2T43 A "1%'d%"
(+s$olo'%s2T33 A "Mo'ado"
(+s$olo'%s2T23 A "Ro)o"
(+s$olo'%s2T13 A "Blan*o"
(+s$olo'%s203 A "Rosa"
(+s$olo'%s213 A "1+ol%&a"
(+s$olo'%s223 A "D'+s"
(+s$olo'%s233 A "<%g'o"
(+s$olo'%s243 A ">'o"

MsgBox (+s<u(%'os2 9 36 646 "<;(%'os"
MsgBox (+s$olo'%s2 0 36 646 "$olo'%s"

End "u.
A!renieno OOo Basic F-
Observa como en los os casos* las ma"rices "ienen los mismos iez elemen"os* en
una guaramos n?meros . en la o"ra "e;"o* !ero mu. bien !oemos combinar a"os si eclaramos
la ma"riz como -ariant* como en el siguien"e e3em!lo=
"u. E)%(7lo/Ma&'+*%s5
@+( (+s@a&os253 !s 1a'+an&
@+( *o1 !s #n&%g%'
(+s@a&os2 0 3 A "Mau'+*+o Ba%:a"
(+s@a&os2 1 3 A 1974
(+s@a&os2 2 3 A "M+gu%l !ng%l 64"
(+s@a&os2 3 3 A "M%x+*o"
(+s@a&os2 4 3 A "@-J-"
(+s@a&os2 5 3 A 37000
Jo' *o1 A 0 Ho 5
MsgBox (+s@a&os2 *o1 36 646 "M+s da&os"
<%x&
End "u.
No"aras 7ue en los casos vis"os 0as"a a0ora* cuano 7ueremos recorrer una ma"riz
con un bucle* 0emos es"ablecio los valores su!erior e in2erior e la ma"riz eclaraa
!reviamen"e* en muc0os casos* no sera !osible conocer los valores e inicio . 2in e una ma"riz*
en es"os casos* OOo Basic* cuen"a con os 2unciones mu. ?"iles !ara conocer es"os valores=
"u. E)%(7lo/Ma&'+*%s6
@+( (+s@a&os23 !s #n&%g%'
@+( *o1 !s #n&%g%'
(+s@a&os23 A !''a?2 87658626635698651626658612648635616 3
MsgBox "5+(+&% #nf%'+o' A " 9 "&'2 5Bound2 (+sda&os23 33
MsgBox "5+(+&% "u7%'+o' A " 9 "&'2 CBound2 (+sda&os23 33
Jo' *o1 A 5Bound2 (+sda&os23 3 Ho CBound2 (+s@a&os23 3
MsgBox (+s@a&os2 *o1 36 646 "M+s da&os"
<%x&
End "u.
>n es"e e3em!lo a!renemos cua"ro nuevas 2unciones e OOo Basic* (rray* 7ue nos
!ermi"e crear una ma"riz in"roucieno irec"amen"e los valores 7ue con"enr<* caa uno
se!arao !or una coma* 3&ound 7ue nos evuelve el limi"e in2erior e una ma"riz . :&ound 7ue
nos evuelve el limi"e su!erior+ Usano es"as os ul"imas 2unciones* ni si7uiera "enemos 7ue
en"erarnos e los limi"es e una ma"riz* . !or ul"imo la 2unci5n Str 7ue convier"e en caena e
"e;"o el argumen"o !asao+
Puees eclarar una ma"riz e un e"erminao "amaKo . usar (rray !ara llenar la
ma"riz sin 7ue necesariamen"e corres!onan el n?mero e elemen"os* como en los siguien"e
e3em!los=
"u. E)%(7lo/Ma&'+*%s7
@+( (+s@a&os1253 !s 1a'+an&
@+( (+s@a&os2253 !s 1a'+an&
@+( (+s@a&os3233 !s 1a'+an&
@+( *o1 !s #n&%g%'
,5l%na(os la 7'+(%' (a&'+: *on %l nu(%'o %xa*&o d% %l%(%n&os d%*la'ados
(+s@a&os123 A !''a?2 "5+:%&"6 306 "Hola"6 456 "0'u%.a"6 15 3
MsgBox "5+(+&% #nf%'+o' A " 9 "&'2 5Bound2 (+sda&os123 33 9 $h'2 13 3 9 /
"5+(+&% "u7%'+o' A " 9 "&'2 CBound2 (+sda&os123 33
,$on (%nos %l%(%n&os
(+s@a&os223 A !''a?2 "0aola"6 256 "Hola" 3
MsgBox "5+(+&% #nf%'+o' A " 9 "&'2 5Bound2 (+sda&os223 33 9 $h'2 13 3 9 /
"5+(+&% "u7%'+o' A " 9 "&'2 CBound2 (+sda&os223 33
,$on (as %l%(%n&os
5$ F+G Ma"rices f iun"os !ero no revuel"os
(+s@a&os323 A !''a?2 "Ma'+ana"6 276 "Hola"6 186 "0'u%.a" 3
MsgBox "5+(+&% #nf%'+o' A " 9 "&'2 5Bound2 (+sda&os323 33 9 $h'2 13 3 9 /
"5+(+&% "u7%'+o' A " 9 "&'2 CBound2 (+sda&os323 33
End "u.
Al observar los valores in2erior . su!erior 7ue nos evuelve caa ma"riz* claramen"e
no"amos 7ue la ma"riz se LreimencionaM con el n?mero e elemen"os 7ue "enga la 2unci5n Arra.*
no im!or"<nole el valor con el 7ue 0a.amos eclarao la ma"riz+ /ambiar e "amaKo o e
can"ia e elemen"os 7ue !uee con"ener una ma"riz e 2orma in<mica uran"e la e3ecuci5n e
una macro* es una "area 0abi"ual e !rogramaci5n* !or ello e;is"en varias al"erna"ivas !ara lograr
es"e !ro!5si"o+ OOo Basic cuen"a con una ins"rucci5n es!eci2ica !ara lograr es"o* se llama 8eDim
. se usa e la siguien"e manera=
"u. E)%(7lo/Ma&'+*%s8
@+( (+s!(+gos223 !s "&'+ng
@+( *o1 !s #n&%g%'
(+s!(+gos203 A "Edga'"4 (+s!(+gos213 A "Dlo'+a" 4 (+s!(+gos223 A "Ho\+&o"
Jo' *o1 A 5Bound2 (+s!(+gos23 3 Ho CBound2 (+s!(+gos23 3
MsgBox "&'2 *o1 3 9 " T " 9 (+s!(+gos2 *o1 36 646 "M+s a(+gos"
<%x&
R%d+( (+s!(+gos243
(+s!(+gos233 A "5+d+a"4 (+s!(+gos243 A "!n+&a"
Jo' *o1 A 5Bound2 (+s!(+gos23 3 Ho CBound2 (+s!(+gos23 3
MsgBox "&'2 *o1 3 9 " T " 9 (+s!(+gos2 *o1 36 646 "M+s a(+gos"
<%x&

End "u.
Se 7ue eres mu. observaor . .a no"as"e 7ue en el seguno bucle* solo nos mues"ra
los valores e los inices @ . F* es"o es !or 7ue al reimencionar la ma"riz con 8eDim* es"a* borra
los valores 7ue 0a.amos in"roucio !reviamen"e en la ma"riz* !or su!ues"o 7ue en ocasiones
esearemos man"ener los valores 7ue e;is"an* es"o* se logra agregano una sim!le !alabra clave=
"u. E)%(7lo/Ma&'+*%s9
@+( (+s!(+gos223 !s "&'+ng
@+( *o1 !s #n&%g%'
(+s!(+gos203 A "Edga'"4 (+s!(+gos213 A "Dlo'+a" 4 (+s!(+gos223 A "Ho\+&o"
Jo' *o1 A 5Bound2 (+s!(+gos23 3 Ho CBound2 (+s!(+gos23 3
MsgBox "&'2 *o1 3 9 " T " 9 (+s!(+gos2 *o1 36 646 "M+s a(+gos"
<%x&
R%@+( 0'%s%'8% (+s!(+gos243
(+s!(+gos233 A "5+d+a"4 (+s!(+gos243 A "!n+&a"
Jo' *o1 A 5Bound2 (+s!(+gos23 3 Ho CBound2 (+s!(+gos23 3
MsgBox "&'2 *o1 3 9 " T " 9 (+s!(+gos2 *o1 36 646 "M+s a(+gos"
<%x&

End "u.
A0ora si* "oo se man"iene con la !alabra clave +reser,e. Pero 8eDim no solo sirve
!ara aumen"ar elemen"os* "ambi4n sirve !ara isminuirlos* !ero "iene el inconvenien"e e 7ue ni
aun usano +reser,e* "e man"iene los valores !revios* como lo emues"ra el siguien"e e3em!lo=
"u. E)%(7lo/Ma&'+*%s10
@+( (+s<u(%'os293 !s #n&%g%'
@+( *o1 !s #n&%g%'
(+s<u(%'os23 A !''a?2 16263646566676869610 3
Jo' *o1 A 5Bound2 (+s<u(%'os23 3 Ho CBound2 (+s<u(%'os23 3
MsgBox (+s<u(%'os2 *o1 36 646 "M+s n;(%'os"
A!renieno OOo Basic 51
<%x&
R%@+( 0'%s%'8% (+s<u(%'os243
Jo' *o1 A 5Bound2 (+s<u(%'os23 3 Ho CBound2 (+s<u(%'os23 3
MsgBox (+s<u(%'os2 *o1 36 646 "M+s n;(%'os"
<%x&
End "u.
Una !rimera soluci5n es la !ro!ues"a siguien"e=
"u. E)%(7lo/Ma&'+*%s11
@+( (+s<u(%'os293 !s #n&%g%'
@+( (H(723 !s "&'+ng
@+( *o1 !s #n&%g%'
,5l%na(os la (a&'+: *on 10 n;(%'os
(+s<u(%'os23 A !''a?2 16263646566676869610 3
,R%d+(%n*+ona(os la (a&'+: &%(7o'al
R%d+( (H(7243
,0asa(os los 8alo'%s a la (a&'+: &%(7o'al
Jo' *o1 A 5Bound2 (H(723 3 Ho CBound2 (H(723 3
(H(72 *o1 3 A (+s<u(%'os2 *o1 3
<%x&
,R%d+(%n*+ona(os la (a&'+: o'+g+nal
R%d+( (+s<u(%'os243
,$o7+a(os loa 8alo'%s &%(7o'al%s
(+s<u(%'os23 A (H(723
,1%'+f+*a(os Fu% %s&%n los da&os
Jo' *o1 A 5Bound2 (+s<u(%'os23 3 Ho CBound2 (+s<u(%'os23 3
MsgBox (+s<u(%'os2 *o1 36 646 "M+s n;(%'os"
<%x&
,Bo''a(os la (%(o'+a usada 7o' la (a&'+: &%(7o'al
E'as% (H(7
End "u.
ISe "e ocurre alguna o"raJ* seguro 7ue si+ /omo es una "area 0abi"ual (el isminuir
e "amaKo una ma"riz . esear man"ener los valores res"an"es)* es una "area i5nea !ara
conver"irla en una subru"ina o si lo eseas en una 2unci5n como se ve en el "ema F+, 'unciones .
subru"inas - (ivie . vencer<s+ A7u las os 2ormas . "u ecies cual usar+
/omo una subru"ina* en one le !asamos la ma"riz a reimensionar . el nuevo
"amaKo 7ue "enr<* si es ma.or solo reimensiona* si es menor* co!ia los valores a man"ener .
reimenciona* si es igual la e3a "al cual=
"u. R%d+(%n*+ona'Ma&'+:2 Ma&'+:23 !s 1a'+an&6 B?1al Ha(ano !s #n&%g%'3
@+( (H(723 !s 1a'+an&
@+( *o1 !s #n&%g%'
#f Ha(ano Y CBound2 Ma&'+:23 3 Hh%n
R%@+( 0'%s%'8% Ma&'+:2 Ha(ano 3
Els%#f Ha(ano X CBound2 Ma&'+:23 3 Hh%n
R%@+( (H(72 Ha(ano 3
Jo' *o1 A 5Bound2 (H(723 3 Ho CBound2 (H(723 3
(H(72 *o1 3 A Ma&'+:2 *o1 3
<%x&
R%d+( Ma&'+:2 Ha(ano 3
Ma&'+:23 A (H(723
E'as% (H(7
End #f
End "u.
/omo una 2unci5n* 7ue 0ace e;ac"amen"e lo mismo* e;ce!"o 7ue evuelve el valor
en vez e mani!ular el !ar<me"ro !asao+
Jun*&+on Jun*+onR%d+(%n*+ona'Ma&'+:2 Ma&'+:23 !s 1a'+an&6 B?1al Ha(ano !s #n&%g%'3 !s 1a'+an&
5# F+G Ma"rices f iun"os !ero no revuel"os
@+( (H(723 !s 1a'+an&
@+( *o1 !s #n&%g%'
#f Ha(ano Y CBound2 Ma&'+:23 3 Hh%n
R%@+( 0'%s%'8% Ma&'+:2 Ha(ano 3
Els%#f Ha(ano X CBound2 Ma&'+:23 3 Hh%n
R%@+( (H(72 Ha(ano 3
Jo' *o1 A 5Bound2 (H(723 3 Ho CBound2 (H(723 3
(H(72 *o1 3 A Ma&'+:2 *o1 3
<%x&
R%d+( Ma&'+:2 Ha(ano 3
Ma&'+:23 A (H(723
E'as% (H(7
End #f
Jun*+onR%d+(%n*+ona'Ma&'+: A Ma&'+:23

End Jun*&+on
Pero !ara 7ue no 7uee ua* veamos su uso* "an"o como subru"ina . como 2unci5n=
,Cs=ndola *o(o su.'u&+na
"u. E)%(7lo/Ma&'+*%s12
@+( (+s<u(%'os293 !s 1a'+an&
@+( (H(723 !s "&'+ng
@+( *o1 !s #n&%g%'
(+s<u(%'os23 A !''a?2 16263646566676869610 3
$all R%d+(%n*+ona'Ma&'+:2 (+s<u(%'os236 153
(+s<u(%'os2123 A 12
MsgBox (+s<u(%'os2123
$all R%d+(%n*+ona'Ma&'+:2 (+s<u(%'os236 53
,1%'+f+*a(os Fu% %s&Sn los da&os
Jo' *o1 A 5Bound2 (+s<u(%'os23 3 Ho CBound2 (+s<u(%'os23 3
MsgBox (+s<u(%'os2 *o1 36 646 "M+s n;(%'os"
<%x&
End "u.
,Cs=ndola *o(o fun*+Kn
"u. E)%(7lo/Ma&'+*%s13
@+( (+s<u(%'os293 !s 1a'+an&
@+( (H(723 !s "&'+ng
@+( *o1 !s #n&%g%'
,5l%na(os la (a&'+:
(+s<u(%'os23 A !''a?2 16263646566676869610 3
,5la(a(os a la fun*+on6 o.s%'8a %l 7aso d% a'gu(%n&os6 *'%*%(os la (a&'+:
(+s<u(%'os23 A Jun*+onR%d+(%n*+ona'Ma&'+:2 (+s<u(%'os236 15 3
,!s+gna(os un 8alo' al +nd+*% 12
(+s<u(%'os2123 A 12
,1%'+f+*a(os Fu% lo ha?a gua'dado
MsgBox (+s<u(%'os2123
,5la(a(os d% nu%8o a la fun*+on6 %s&a 8%: la d+s(+nu+(os
(+s<u(%'os23 A Jun*+onR%d+(%n*+ona'Ma&'+:2 (+s<u(%'os236 5 3
,1%'+f+*a(os Fu% %s&Sn los da&os
Jo' *o1 A 5Bound2 (+s<u(%'os23 3 Ho CBound2 (+s<u(%'os23 3
MsgBox (+s<u(%'os2 *o1 36 646 "M+s n;(%'os"
<%x&
End "u.
OOo Basic es mu. noble en el mane3o e las ma"rices* observa 7ue sencillo es
co!iar una ma"riz en o"ra
Ma"riz(es"ino() l Ma"rizOrigen()
A!renieno OOo Basic 5@
Tambi4n* observa el uso e la !alabra clave Erase !ara borrar e memoria las
ma"rices in<micas 7ue .a no usemos* si bien a0ora la ma.ora e las ma7uinas is!onen e
muc0os megas e ram* !rocura man"ener el con"rol e la can"ia e memoria 7ue usas en "us
macros+
cas"a a0ora* 0emos vis"o la eclaraci5n . el uso e ma"rices e una sola imensi5n*
es !osible eclarar . usar ma"rices e m<s e una imensi5n veamos como se 0ace+
)a sin"a;is !ara eclarar ma"rices mul"iimensionales es la siguien"e=
(im NombreQMa"riz( TamaKo As :n"eger* TamaKo As :n"eger) As Ti!o
Observa como a0ora* le inicamos os "amaKos se!araos !or una coma* un
e3em!lo es m<s ilus"ra"ivo+
"u. Ma&'+*%s/Mul&+d+(%ns+on1
@+( (@a&os2 26 2 3 !s "&'+ng
,5l%na(os los da&os
(@a&os2 06 0 3 A "0T0"
(@a&os2 06 1 3 A "0T1"
(@a&os2 06 2 3 A "0T2"
(@a&os2 16 0 3 A "1T0"
(@a&os2 16 1 3 A "1T1"
(@a&os2 16 2 3 A "1T2"
(@a&os2 26 0 3 A "2T0"
(@a&os2 26 1 3 A "2T1"
(@a&os2 26 2 3 A "2T2"

,Mos&'a(os los da&os
MsgBox (@a&os2 06 0 3
MsgBox (@a&os2 16 1 3
MsgBox (@a&os2 26 2 3

End "u.
Piensa en las ma"rices e os imensiones como en una 0o3a e calculo
2ormaa !or 2ilas . columnas* la ma"riz an"erior 7ueara as=
$ 1 #
$ $-$ 1-$ #-$
1 $-1 1-1 #-1
# $-# 1-# #-#
Por su!ues"o !uees eclarar . usar ma"rices e m<s e os imensiones I0as"a
cuan"asJ* !arece ser 7ue el limi"e es"a e"erminao una vez m<s !or la can"ia e memoria ram
7ue con"enga la ma7uina one se e3ecu"e la macro* en lo !ersonal ma"rices con m<s e "res
imensiones se me 0acen com!licaas e mani!ular* no obs"an"e* creo 7ue es m<s !or mis
limi"es . 2lo3era 7ue no lo 0e com!robao* as 7ue "e invi"o a 7ue 0agas "us !ruebas con muc0as
imensiones . las com!ar"as conmigo+
O"ro e3em!lo iver"io* llenamos una ma"riz e 1$ ; 1$ elemen"os . la llenamos con
valores alea"orios e en"re 1 . 1$$+
"u. Ma&'+*%s/Mul&+d+(%ns+on2
@+( (<u(%'os2 96 9 3 !s #n&%g%'
@+( *o1 !s #n&%g%'6 *o2 !s #n&%g%'
5F F+G Ma"rices f iun"os !ero no revuel"os
,R%*u%'da Fu% 7o' d%faul& los +nd+*%s d% las (a&'+*%s %(7+%:a %n *%'o
Jo' *o1 A 0 Ho 9
Jo' *o2 A 0 Ho 9
(<u(%'os2 *o16 *o2 3 A Rnd23 100 B 1
<%x&
<%x&
,$o(7'o.a(os un +nd+*% *ualFu+%'a
MsgBox (<u(%'os2 46 4 3

End "u.
Observa el uso e la 2unci5n 8nd?@* 7ue nos evuelve un n?mero alea"orio en"re $ .
1 7ue al ser mul"i!licao !or el valor su!erior 7ue nos in"eresa . sumarle el valor in2erior 7ue nos
in"eresa* nos a ic0o n?mero alea"orio en"re es"os os . sin 7uerer "ienen a0ora el Lalgori"moM
!ara 7ue evuelvas un n?mero alea"orio en"re os valores aos+
/on las ma"rices e os imensiones !oemos simular el uso e una !e7ueKa base
e a"os o el uso e una 0o3a e calculo one guaramos una serie e a"os en columnas 7ue
se enominan Lcam!osM . 2ilas 7ue se enominan Lregis"rosM* veamos un sencillo e3em!lo=
"u. Ma&'+*%s/Mul&+d+(%ns+on3
@+( (H%l%fonos2 26 1 3 !s "&'+ng
(H%l%fonos2 06 0 3 A "Dlo'+a"
(H%l%fonos2 06 1 3 A "12345678"

(H%l%fonos2 16 0 3 A "!n&on+o"
(H%l%fonos2 16 1 3 A "87654321"

(H%l%fonos2 26 0 3 A "5+d+a"
(H%l%fonos2 26 1 3 A "32458924"

MsgBox "El &%l%fono d% " 9 (H%l%fonos2 26 0 3 9 " %s " 9 (H%l%fonos2 26 1 3
End "u.
Pero lo in"eresan"e . iver"io es arle la o!or"unia al usuario e ir ca!"urano
es"os a"os e ir crecieno la ma"riz seg?n las necesiaes e es"e* veamos como=
"u. Ma&'+*%s/Mul&+d+(%ns+on4
@+( (@+'%*&o'+o2 06 1 3 !s "&'+ng
@+( <o(.'% !s "&'+ng
@+( H%l%fono !s "&'+ng
@+( +$on&+nua' !s #n&%g%'
@+( *o1 !s #n&%g%'
@+( sH(7 !s "&'+ng
@o
,"ol+*+&a(os %l no(.'%6 o.s%'8a %l uso d% la fun*+on H'+( 7a'a Fu+&a' %s7a*+os
so.'an&%s
<o(.'% A H'+(2 #n7u&Box2 "Es*'+.% un no(.'%"6 "<o(.'%" 3 3
H%l%fono A H'+(2 #n7u&Box2 "!ho'a su &%l%fono"6 "H%l%fono" 3 3
,R%d+(%n*+ona(os la (a&'+:6 7%'o >[>6 solo la 7'+(%' d+(%ns+on
R%d+( 0'%s%'8% (@+'%*&o'+o2 *o16 1 3
,Dua'da(os los da&os %n %l nu%8o +nd+*%
(@+'%*&o'+o2 *o16 0 3 A <o(.'%
(@+'%*&o'+o2 *o16 1 3 A H%l%fono
,1a(os *ons&'u?%ndo nu%s&'o d+'%*&o'+o
sH(7 A sH(7 9 "El &%l%fono d% " 9 (@+'%*&o'+o2 *o16 0 3 9 " %s " 9 (@+'%*&o'+o2 *o16
1 3 9 $h'2133
,#n*'%(%n&a(os nu%s&'o *on&ado' d% '%g+s&'os
*o1 A *o1 B 1
,0'%gun&a(os s+ d%s%a *on&+nua'
+$on&+nua' A MsgBox2 "M@%s%as *a7&u'a' (as da&osN"6 4 B 326 "$on&+nua'" 3
5oo7 Uh+l% +$on&+nua' A 6

A!renieno OOo Basic 55
,Mos&'a(os nu%s&'o d+'%*&o'+o
MsgBox sH(7
End "u.
Observa a"en"amen"e 7ue 0acemos un !oco e "ram!a al ir guarano los valores
in"roucios !or el usuario en un variable "em!oral (sTm!)* con lo cual* no es"amos mu. seguros
e 7ue e2ec"ivamen"e los a"os es"4n sieno guaraos en"ro e la ma"riz* !ara corroborarlo* e
"area "ienes 7ue moi2icar la macro !ara 7ue=
1+ Te mues"re "u irec"orio com!le"o* llenano la variable sTm! Les!u4sM e
salir el bucle* !ara resolver es"o "ienes 7ue 0acer uso e la 2unci5n UBoun
vis"a m<s arriba* !ero con una !e7ueKa varian"e* le "ienes 7ue inicar e 7ue
imensi5n 7uieres saber su limi"e su!erior* como en el e3em!lo siguien"e=
MsgBo; Uboun( m(irec"orio* 1 )
>n one nos mos"rara el inice su!erior e la !rimer imensi5n . as
sucesivamen"e* si le es"ableces un n?mero su!erior al e imensiones 7ue "iene la ma"riz* "e ar<
un error+
#+ Obliga al usuario a in"roucir un nombre . "el42ono* es ecir* 7ue no es"4n
vacos es"os cam!os
@+ Por ul"imo* ingenia"elas !ara !oer arle la o!or"unia al usuario e borrar
un regis"ro* es ecir* "ienes 7ue encon"rar la manera e !regun"arle al usuario si 7uiere
borrar un regis"ro* . !or su!ues"o* borrarlo e2ec"ivamen"e+
Si* si* reconozco 7ue el !un"o "res no es"a naa 2<cil cuano uno va em!ezano*
!ero es"a en"ro e lo !osible . con2o en "us ca!aciaes* as 7ue* a "raba3ar+
O"ra varian"e el uso e las ma"rices* es "ener ma"rices e ma"rices* es ecir* "ener
en"ro e una ma"riz o"ra ma"riz* algunos au"ores a es"as le llamas ma"rices escalares* veamos su
uso=
"u. Ma&'+*%s/Ma&'+*%s1
@+( (@a&os223 !s 1a'+an&
@+( (H(7 !s 1a'+an&
(@a&os203 A !''a?2"0%''o"6"Da&o"6">so"6"H+.u'on"6"Bu''o"3
(@a&os213 A !''a?2"$%d'o"6"0+no"6"$ao.a"6"J'%sno"3
(@a&os223 A !''a?2"$o.'%"6"0la&a"6"Mangan%so"6"!:uf'%"6"0o&as+o"6"J+%''o"3
(H(7 A (@a&os203
MsgBox (H(7203
(H(7 A (@a&os213
MsgBox (H(7213
(H(7 A (@a&os223
MsgBox (H(7223
End "u.
Observa el uso e una variable "em!oral (mTm!) !ara asignar la ma"riz in"erna . as
!oer acceer a sus valores* algunas 2unciones . es"ruc"uras e O!enO22ice+org 7ue veremos
m<s aelan"e* es"<n im!lemen"aas e es"ar 2orma* es ecir* como una ma"riz en"ro e o"ra* e
a0 la im!or"ancia e 7ue las conozcas* !ero .a lo no"as"e* su uso es mu. sencillo* veamos un
e3em!lo iver"io e los 7ue me gus"an=
"u. Ma&'+*%s/Ma&'+*%s2
@+( (@a&os233 !s 1a'+an&
@+( (H(7 !s 1a'+an&
@+( *o1 !s #n&%g%'
@+( s$a'a*&%' !s "&'+ng
5G F+G Ma"rices f iun"os !ero no revuel"os
@+( s$on&'a !s "&'+ng
,5l%na(os los da&os6 o.s%'8a *o(o &%n%(os *ua&'o g'u7os6 l%&'as (+nus*ulas6 l%&'as (a?us*ulas6
nu(%'os ? *a'a*&%'%s %s7%*+al%s
(@a&os203 A !''a?2 "a"6 "." 6"*" 6"d" 6"%" 6"f" 6"g" 6"h" 6"+" 6")" 6"]" 6"l"
6"("6"n"6"\"6"o"6"7"6"]"6"'"6"s"6"&"6"u"6"8"6"^"6"x"6"?"6":"3
(@a&os213 A !''a?2 "!" 6"B" 6"$" 6"@" 6"E" 6"J" 6"D" 6"H" 6"#" 6"[" 6"I" 6"5"
6"M"6"<"6"_"6">"6"0"6"P"6"R"6"""6"H"6"C"6"1"6"U"6"E"6"O"6"`"3
(@a&os223 A !''a?2"1"6"2"6"3"6"4"6"5"6"6"6"7"6"8"6"9"6"0"3
(@a&os233 A !''a?2 "a" 6"b" 6"!" 6"c" 6"d" 6"e" 6"9" 6"/" 6"2" 6"3" 6"A" 6"N"
6"M"6""6"B"6"T"6"/"6"-"6"4"6"6"6"f"6"X"6"Y"6"g"6"h"6"R"6"Q"3

,<u%s&'a *on&'as%\a s%'a d% 10 *a'a*&%'%s
Jo' *o1 A 1 Ho 10
,"%l%**+ona(os aleatoriamente6 C<> d% los *ua&'o g'u7os
(H(7 A (@a&os2 $#n&2 Rnd23 3 3 3
,"%l%**+ona(os aleatoriamente6 C< %l%(%n&o d%l g'u7o6 o.s%'8a *o(o usa(os la fun*+on
Rnd ? la (ul&+7l+*a(os 7o' %l +nd+*% su7%'+o' d%l g'u7o s%l%**+onado
s$a'a*&%' A (H(72 $#n&2 Rnd23 CBound2(H(73 3 3
,1a(os )un&ando los *a'a*&%'%s d% la *on&'as%\a
s$on&'a A s$on&'a 9 s$a'a*&%'
<%x&
,Mos&'a(os la *on&'as%\a
MsgBox "Hu *on&'as%\a %s4 " 9 s$on&'a

End "u.
Analizala . veras 7ue no es "an com!le3o como !arece . si* lo sien"o* "ienes "area*
moi2ica la macro e moo 7ue le !regun"e al usuario e cuan"os carac"eres 7uiere su
con"raseKa* !onle un rango mnimo . m<;imo 7ue !uea escoger* igamos en"re 5 . 5$
carac"eres
O sin 7uerer "enemos un nuevo ca!i"ulo com!le"o* bueno* casi com!le"o* a es"as
al"uras .a "e 0abr<s ao cuen"a e la can"ia e varian"es 7ue se !ueen "ener con unas
cuan"as ins"rucciones e OOo Basic !or lo cual* ar !or com!le"o un "ema es un !oco aven"urao*
!ero !ara 2ines !r<c"icos* si* es"e ca!i"ulo* lo amos !or concluio* 7uea a "u curiosia e
imaginaci5n buscarle sus a!licaciones !rac"icas . las no "an !rac"icas* 7ue a veces* son las m<s
iver"ias* a7uellas 7ue no sirven !ara naa+ W'eliz !rogramaci5nV
).A Bmbito de ,ariables 7 ("ora me ,e9, a"ora no
/omo "oo en es"a via* las variables "ambi4n se crean . 2enecen* unas uran m<s
o"ras menos* !ero "oas lo 0acen* la buena no"icia es 7ue noso"ros eciimos cuano . cuan"o* lo
cual a!reneremos en es"e ca!i"ulo+ >l lugar one eclares una variable . como lo 0agas*
e"erminara su LvisibiliaM . "iem!o e via* en"enieno !or "iem!o e via* el "iem!o 7ue es"a
is!onible !ara !oer acceer . mani!ular su con"enio* a es"a visibilia . "iem!o e via se le
conoce como <mbi"o e la variable* el nivel m<s ba3o . b<sico .a lo conoces !ues* si 0as seguio
es"os a!un"es* los 0as venio usano ese el inicio e es"as no"as* veamos cual es=
).A.1 Bmbito 3ocal
A!renieno OOo Basic 5%
>s"as variables son las 7ue se eclararan en"ro el cuer!o e una macro o 2unci5n
. se crean al invocar a es"a . se es"ru.en al 2inalizar* como en=
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s1
@+( +Edad !s #n&%g%'
,Mos&'a(os %l 8alo' d% la 8a'+a.l%
MsgBox +Edad
,$a(.+a(os su 8alo'
+Edad A 34
,Mos&'a(os d% nu%8o %l 8alo' d% la 8a'+a.l%
MsgBox +Edad

End "u.
>3ecu"a varias veces la macro an"erior !ara 7ue observes como Lsiem!reM el valor
inicial e la variable es cero* !ara com!robar 7ue e2ec"ivamen"e* solo es"a macro !uee LverM a la
variable i>a* crea una seguna macro ese one in"en"emos usar es"a variable=
"u. 1a'+a.l%s/5o*al%s2
,#n&%n&a(os (os&'a' %l 8alo' d% la 8a'+a.l% +Edad
MsgBox +Edad
End "u.
Por su!ues"o* el :(> e solo "e mos"rara un error* si "ienes la !recauci5n e usar la
!alabra clave %ption E'plicit* lo cual* "e recomieno 7ue nunca olvies e usar* "e evi"ara
muc0os olores e cabeza+ >n"onces* si e3ecu"as la seguna macro* "e "iene 7ue ar un error
como el e la siguien"e imagen=
Observa la 2lec0a en el margen iz7uiero 7ue nos inica la lnea one se !rou3o el
error . observa "ambi4n el mensa3e 7ue es mu. claro* no 0emos e2inio la variable !ara Lesa
macroM dentro e esa macro* en resumen* todas la variables declaradas dentro de macros
tienen -mbito local+ 6eamos un e3em!lo m<s* o3o* "ienes 7ue e3ecu"ar la macro 7ue se llama
6ariablesQ)ocales@=
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s3
@+( sH(7 !s "&'+ng
sH(7 A "!FuG no so? nad+%"
$all "o?/J+losofo
$all "o?/@+8%'&+do
MsgBox sH(7
End "u.
5, F+% dmbi"o e variables f A0ora me vez* a0ora no
"u. "o?/J+losofo
@+( sH(7 !s "&'+ng
sH(7 A "!ho'a so? un f+losofo"
MsgBox sH(7
End "u.
"u. "o?/@+8%'&+do
@+( sH(7 !s "&'+ng
sH(7 A "!ho'a so? d+8%'&+do"
MsgBox sH(7
End "u.
Tienes 7ue ser mu. observaor !ara 7ue no"es como la variable "oma el valor
asignao en caa macro* caa una es i2eren"e . se inicializa . "ermina con la macro one se
eclara+ /o!ia las os macros siguien"es . e3ecu"a la 7ue se llama 6ariablesQ)ocalesF varias
veces=
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s4
$all $on&a'23
End "u.
"u. $on&a'
@+( +$on&ado' !s #n&%g%'
+$on&ado' A +$on&ado' B 1
MsgBox +$on&ado'

End "u.
Siem!re lo mismo* IveraJ* es ecir* siem!re "e mues"ra el valor 1* I7ue !asar<
si llamamos a la macro varias veces como en el e3em!lo siguien"eJ=
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s4
$all $on&a'23
$all $on&a'23
$all $on&a'23
End "u.
Sigue igual* IveraJ* vamos a 0acer un !e7ueKo cambio a la macro /on"ar*
es!ec2icamen"e en la eclaraci5n e la variable . volvemos a e3ecu"ar la macro
6ariablesQ)ocalesF* !ero es"a seguna versi5n one llamamos varias veces a la macro /on"ar=
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s4
$all $on&a'23
$all $on&a'23
$all $on&a'23
End "u.
"u. $on&a'
"&a&+* +$on&ado' !s #n&%g%'
+$on&ado' A +$on&ado' B 1
MsgBox +$on&ado'
End "u.
A!renieno OOo Basic 5-
I)o no"as"eJ* observa como eclaramos la variable iContador en la macro /on"ar*
!ero a0ora* en vez e usar la !alabra clave Dim* usamos la !alabra clave Static* con lo 7ue le
es"amos inicano 7ue conserve el valor en"re las llamaas a la macro* es"e valor lo conservara
mien"ras se e3ecu"e la macro 7ue llamo a la macro one es"a eclaraa la variable S"a"ic* como
!or<s emos"rarlo* e3ecu"ano varias veces la macro /ariables'0ocales1* el valor m<;imo
siem!re es "res* en nues"ro caso* !or 7ue llamamos a la macro /on"ar "res veces . es"a*
incremen"a el valor e la variable una unia caa vez+ OiO* aun7ue es"emos eclarano la
variable i/on"aor como S"a"ic* en"ro e la macro /on"ar* no !or ello e3a e ser una variable e
<mbi"o local* como !uees com!robarlo 2<cilmen"e "ra"ano e mos"rar su valor ese la macro
6ariablesQ)ocalesF* el siguien"e cambio en la macro "e ebera ar un error e -variable no
e2inia-+
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s4
$all $on&a'23
$all $on&a'23
$all $on&a'23
,5a s+gu+%n&% l+n%a Vd%.%'+aW da'&% un %''o'
MsgBox +$on&ado'
End "u.
I6era 7ue es mu. iver"ioJ* a0ora* le 0aremos un !e7ueKo cambio a la macro
6ariablesQ)ocalesF* !ara 7ue cuen"e 0as"a 7ue le igamos 7ue LNoM* si lo !re2ieres* !uees crear
o"ra macro !ara 7ue la an"erior 7uee "al cual+ >s!ero 7ue lo 0a.as no"ao* !ero con"inuamen"e "e
invi"o a e;!erimen"ar . a 7ue "omes "us !ro!ias ecisiones . "e 2or3es "us !ro!ios cri"erios !ara "u
!rogramaci5n* a7u como en la via* ice el maes"ro Sava"er* -nos vienen bien las enseKanzas e
los maes"ros* !ero al 2inal* es"amos solos !ara eciir-* !ues eso* "u ecies+
>7&+on Ex7l+*+&
"u. 1a'+a.l%s/5o*al%s5
@+( +R%s7u%s&a !s #n&%g%'
@o
$all $on&a'23
+R%s7u%s&a A MsgBox2 "M$on&+nua' *on&andoN"6 4B326 "$on&+nua'"3
,R%*u%'da Fu% s+ %l usua'+o 7'%s+ona "+6 %l 8alo' Fu% d%8u%l8% MsgBox %s 6
5oo7 Uh+l% +R%s7u%s&a A 6

End "u.
).A.2 Bmbito +ri,ado
>s"e seguno nivel* corres!one a las variables eclaraas en la cabecera e un
moulo usano la !alabra clave +ri,ate* recuera 7ue la cabecera es el inicio e un moulo*
one Lsiem!reM "ienes 7ue agregar la o"ra im!or"an"e !alabra clave %ption E'plicit* !ara 7ue
nos avise siem!re si no 0emos eclarao una variable* es"o* "e recuero* no es obliga"orio* !ero "e
aseguro 7ue lo agraecer<s m<s e una vez+ Observa el e3em!lo siguien"e=
>7&+on Ex7l+*+&
,>.s%'8a Fu% %n 8%: d% @+( %s&a(os usando 0'+8a&%
0'+8a&% +n&$on&ado' !s #n&%g%'
"u. "u(a'/?/R%s&a'
,5la(a(os a la (a*'o "u(a'
G$ F+% dmbi"o e variables f A0ora me vez* a0ora no
$all "u(a'23
,Mos&'a(os %l 8alo' d% la 8a'+a.l%
MsgBox +n&$on&ado'
,5la(a(os a la (a*'o R%s&a'
$all R%s&a'23
,Mos&'a(os d% nu%8o %l 8alo' d% la 8a'+a.l%
MsgBox +n&$on&ado'
End "u.
"u. "u(a'
,!FuG au(%n&a(os la 8a'+a.l% %n dos un+dad%s
+n&$on&ado' A +n&$on&ado' B 2
End "u.
"u. R%s&a'
,? aFuG '%s&a(os a la 8a'+a.l% una un+dad
+n&$on&ado' A +n&$on&ado' T 1
End "u.
No"a como a0ora* la variable intContador* es LvisibleM . mani!ulable !or cual7uier
macro o 2unci5n eclaraa en el moulo* ojo, la teorCa dice que estas ,ariables, solo son
,isibles para el modulo donde se declaran, pero en mis pruebas 5(M&IE/ son ,isibles en
otros mdulos* an"es e emos"rar"e es"o* veamos una varian"e e la macro an"erior !ara seguir
sumano . res"ano=
>7&+on Ex7l+*+&
0'+8a&% +n&$on&ado' !s #n&%g%'
"u. "u(a'/?/R%s&a'2
@+( +R%s !s #n&%g%'
@o
+R%s A MsgBox2 "0a'a su(a' 7'%s+ona "#" 9 $h'2133 9 "0a'a '%s&a' 7'%s+ona <>" 9 /
$h'2133 9 "0a'a sal+' 7'%s+ona $!<$E5!R"6 36 ""u(a' ? R%s&a'"3
"%l%*& $as% +R%s
$as% 6
$all "u(a'23
$as% 7
$all R%s&a'23
End "%l%*&
MsgBox +n&$on&ado'
5oo7 Cn&+l +R%s A 2
End "u.
A0ora si* vamos a aelan"arnos un !o7ui"o en los "emas . veremos como agregar un
seguno moulo a nues"ra biblio"eca !ara agregar m<s macros . emos"rar como las variables
eclaraas a nivel moulo con Priva"e son visibles !or cual7uier o"ro moulo* !ara ello* a un clic
con el bo"5n secunario e "u ra"5n (normalmen"e el erec0o) sobre la e"i7ue"a el moulo ac"ual
one es"4s "raba3ano* es"a acci5n "e "iene 7ue mos"rar un men? con"e;"ual* e es"e*
seleccionas +nsertar . es!u4s Modulo !AS+C como "e mues"ro en la siguien"e imagen+
A!renieno OOo Basic G1
Tienes 7ue ver el nuevo moulo al lao el an"erior* como se 7ue eres observaor*
no"aras en el men? con"e;"ual an"erior* "ienes la o!ci5n e cambiar el nombre el moulo* "e e3o
a "u cri"erio 7ue lo 0agas* !or a0ora* nos bas"a "ener os m5ulos !ara !ruebas como en=
No"a 7ue al inser"ar un moulo* e 2orma !ree"erminaa* es"e agrega la eclaraci5n
e una nueva macro* vamos a renombrarla . "ra"aremos e acceer a la variable in"/on"aor
eclaraa . usaa en el moulo uno* veamos 7ue !asa=
>7&+on Ex7l+*+&
"u. Mos&'a'1alo'23
MsgBox +n&$on&ado'
End "u.
No"a 7ue la macro an"erior es"a en el moulo # . al e3ecu"arla nos mues"ra el valor
e la variable* 7ue es cero* !ues recuera 7ue el valor inicial e "oa variable num4rica es cero*
!ero observa como LnoM nos a error* como ice la "eora* !ues "oma la eclaraci5n e la variable
el moulo 1+ 6olvamos al moulo 1* co!ia . e3ecu"a la siguien"e macro=
>7&+on Ex7l+*+&
0'+8a&% +n&$on&ado' !s #n&%g%'
"u. 1alo'1a'+a.l%
+n&$on&ado' A 100
,5la(a(os a la (a*'o d%l (odulo 2
$all Mos&'a'1alo'23
End "u.
/reo 7ue es bas"an"e claro 7ue la variable se !uee mani!ular . acceer ese
cual7uier o"ro moulo* aun . cuano se eclare con Priva"e* lo cual es!ero se arregle en 2u"uras
versiones* !ues e es"e moo* usar Priva"e . (im es inis"in"o . el siguien"e "ema no "iene raz5n
e ser* incluso* en mis !ruebas* la variable es acceia ese o"ras biblio"ecas el arc0ivo+ Te
G# F+% dmbi"o e variables f A0ora me vez* a0ora no
agraecer4 si 0aces "us !ruebas . si no"as algo i2eren"e o "e 2unciona como LeberaM me lo
0agas saber+
).A. Bmbito de Dominio +ublico
>n es"e <mbi"o* se su!one* 7ue las variables eclaraas a nivel cabecera e moulo
usano la !alabra clave (im* son visibles !ara cual7uier moulo e la biblio"eca* !ero en mis
!ruebas es visible 0as"a !or los m5ulos e o"ras biblio"ecas el arc0ivo . se com!or"a
e;ac"amen"e el mismo moo 7ue las variables e <mbi"o !rivao vis"as en el "ema an"erior* !or
lo 7ue no lo re!e"ir4 a7u* solo es!eremos 7ue !ron"o se arregle . 2uncione como icen 7ue ebe
0acerlo+
>7&+on Ex7l+*+&
@+( +n&$on&ado' !s #n&%g%'
).A.) Bmbito Dlobal
>s"e <mbi"o es igual al e ominio !ublico en cuan"o a su visibilia* !ero i2iere en
cuan"o a su 2unci5n* !ues es"a guara su ul"imo valor* aun . cuano se "ermina la macro+ Para
7ue una variable sea e <mbi"o global* ebe ser eclaraa en la cabecera e un m5ulo con la
!alabra clave &lobal e la siguien"e manera=
>7&+on Ex7l+*+&
Dlo.al +n&g$on&ado' !s #n&%g%'
"u. 1a'+a.l%/Dlo.al23
+n&g$on&ado' A +n&g$on&ado' B 100
MsgBox +n&g$on&ado'
End "u.
Al e3ecu"ar varias veces la macro an"erior* no"aras como guara el valor* aun .
cuano .a "ermino la e3ecuci5n e la macro+ Su uso !ora com!ararse en 2unci5n a las variables
e <mbi"o local* eclaraas con la !alabra clave S"a"ic* !ero a nivel global e "oas las macros el
arc0ivo+
O con es"o "erminamos un "ema m<s* la recomenaci5n !ara es"e "ema es !rocurar
usar lo m<s !osible variables e <mbi"o local . es!u4s e <mbi"o !ublico* es"o es !or 7ue
con2orme .a no uses una variable* al ser e <mbi"o local* es"a se es"ru.e . se libera la memoria
usaba !or ella al concluir la macro one se use* !or su!ues"o es"o no es res"ric"ivo solo "u
!rac"ica . e;!eriencia "e ir<n cual es la me3or o!ci5n+ >l eciir 7ue variables usar . con 7ue
<mbi"o no es un "ema menor . cuano uno va em!ezano se convier"e casi en un !roblema
e;is"encial* !ero no "e !reocu!es* es!eremos 7ue con los muc0os e3em!los 7ue mos"ramos* "e
sea m<s 2<cil a!rener a eciir lo me3or en caa caso+
).E Funciones y subrutinas 7 Di,ide y ,encerFs
Todo lo complejo puede diidirse en partes simples
A!renieno OOo Basic G@
8ene Descartes
>n ocasiones* las 2unciones e ins"rucciones incor!oraas el lengua3e* no nos son
su2icien"es !ara resolver alg?n !roblema !lan"eao o su com!le3ia nos obliga a !ensar en o"ra
al"erna"iva* en o"ras ocasiones* el c5igo se vuelve "an largo 7ue se vuelve i2cil e leer* analizar
o me3orar+ >n es"os casos* como en o"ros m<s 7ue "al vez se "e !resen"en* recurrimos a crear
nues"ras !ro!ias 2unciones . subru"inas+ >n es"e ca!i"ulo veremos como eclararlas . usarlas.
>n el "ema F+# :ns"rucciones . 2unciones en OOo Basic * vimos algunos conce!"os
7ue nos ser<n mu. ?"iles en es"e* comencemos con los e3em!los . es!u4s las e;!licaciones*
co!ia . e3ecu"a la siguien"e macro=
>7&+on Ex7l+*+&
"u. Mos&'a'M%nsa)%123
MsgBox "Es&o? a7'%nd+%ndo >>o Bas+*"6 486 "!7'%nd+%ndo >>o Bas+*"
MsgBox "Es f=*+l ? d+8%'&+do"6 486 "!7'%nd+%ndo >>o Bas+*"
MsgBox "Oa 8o? a (%d+o *a(+no"6 486 "!7'%nd+%ndo >>o Bas+*"
End "u.
Si* no "iene naa e e;"raorinario* !ero nos resul"ara mu. ?"il !ara nues"ros
!ro!5si"os+ 6amos a su!oner una seguna macro similar a la an"erior=
"u. Mos&'a'M%nsa)%223
MsgBox "Es un 7o*o &a'd%"6 486 "!7'%nd+%ndo >>o Bas+*"
MsgBox "Oa &%ngo su%\o"6 486 "!7'%nd+%ndo >>o Bas+*"
MsgBox ""olo a*a.a(os %s&% &%(a"6 486 "!7'%nd+%ndo >>o Bas+*"
End "u.
A0ora "enemos os macros 7ue 0acen cosas mu. similares* . sigamos con nues"ras
su!osiciones* su!ongamos 7ue e nues"ros mensa3es* el icono mos"rao . el "i"ulo el cuaro e
ialogo* siem!re son los mismos* !or lo 7ue lo ?nico 7ue cambia es la caena mos"raa* es"e
caso es i5neo !ara 7ue 0agamos una subru"ina* 7ue no es m<s 7ue una macro creaa !or
noso"ros a la 7ue com?nmen"e (no es obliga"orio) se le !asa un1unos !ar<me"ro(s) o argumen"o(s)
. realice una "area+ >s ecir L0agaM algo+ /o!ia la siguien"e macro . moi2ica las os !rimeras
macros !ara 7ue 7ueen e la siguien"e manera=
>7&+on Ex7l+*+&
"u. Mos&'a'M%nsa)%323
$all Mu%s&'aM%nsa)%2 "Es&o? a7'%nd+%ndo >>o Bas+*" 3
$all Mu%s&'aM%nsa)%2 "Es fa*+l ? d+8%'&+do" 3
$all Mu%s&'aM%nsa)%2 "Oa 8o? a (%d+o *a(+no" 3
$all Mu%s&'aM%nsa)%2 "Es un 7o*o &a'd%" 3
$all Mu%s&'aM%nsa)%2 "Oa &%ngo su%\o" 3
$all Mu%s&'aM%nsa)%2 ""olo a*a.a(os %s&% &%(a" 3
End "u.
"u. Mu%s&'aM%nsa)%2M%nsa)% !s "&'+ng3
MsgBox $ad%na6 486 "!7'%nd+%ndo >>o Bas+*"
End "u.
)o im!or"an"e es 7ue a!renas como llamamos a una macro con argumen"os . 7ue
es mu. im!or"an"e 7ue* los argumen"os !asaos sean el mismo "i!o e los es!eraos* observa
como la macro Mues"raMensa3e Lnecesi"aM un argumen"o llamao Mensa3e 7ue es e "i!o S"ring*
en"onces* al llamarla* Lnecesi"amosM !asarle una variable* no im!or"a el nombre* sino 7ue sea e
"i!o S"ring+ Tambi4n observa 7ue usamos la !alabra clave /all !ara llamar a la macro* es"o no es
re7uisi"o* las siguien"e lneas son e7uivalen"es=
GF F+, 'unciones . subru"inas f (ivie . vencer<s
"u. Mos&'a'M%nsa)%323
$all Mu%s&'aM%nsa)%2 "Es&o? a7'%nd+%ndo >>o Bas+*" 3
Mu%s&'aM%nsa)%2 "Es&o? a7'%nd+%ndo >>o Bas+*" 3
Mu%s&'aM%nsa)% "Es&o? a7'%nd+%ndo >>o Bas+*"
End "u.
Observa como en la !rimera usamos /all . !ar4n"esis* en la seguna omi"imos /all
. en la "ercera 7ui"amos /all . los !ar4n"esis+ >n lo !ersonal el uso e /all solo lo uso !ara saber
7ue es una subru"ina !ersonalizaa* 7uea a "u cri"erio su uso u omisi5n+ >l uso e !ar4n"esis
como abras no"ao "ambi4n es o!cional* como muc0as ins"rucciones 7ue usa O!enO22ice+org
0acen uso e los !ar4n"esis* "ambi4n* en lo !ersonal* 0ago uso e ellos* !ero .a sabes* "ienes la
ul"ima !alabra+
A0ora* veremos un "ema im!or"an"e* a una subru"ina* se le !ueen !asar los
argumen"os o !ar<me"ros e os maneras* una es !or valor . o"ra !or re2erencia* la i2erencia es
mu. sencilla !ero es e suma im!or"ancia es"a i2erencia+ /uano !asamos los argumen"os !or
valor* en realia lo 7ue se 0ace es !asarle una Lco!iaM el valor e la variable* !or lo cual* el
valor e es"e argumen"o solo se !uee usar Len"roM e la subru"ina 7ue la usa* en cambio*
cuano los argumen"os se !asan !or re2erencia* lo 7ue es"amos 0acieno es !asarle la
Lubicaci5nM e la variable en la memoria* !or lo cual* !oemos moi2icar su valor Len"roM e la
subru"ina* com!robemoslo con un e3em!lo=
>7&+on Ex7l+*+&
"u. 0aso0o'R%f%'%n*+a23
@+( sM%nsa)% !s "&'+ng
,!s+gna(os una *ad%na a la 8a'+a.l%
sM%nsa)% A "5a &'a8%s+a d% (+l ]+lo(%&'os *o(+%n:a *on un 7aso"
,5la(a(os a la su.'u&+na ? l% 7asa(os %l a'gu(%n&o
$all $a(.+a1alo'2 sM%nsa)% 3
,Mos&'a(os la 8a'+a.l% *on %l nu%8o 8alo'6 *a(.+ado %n la su.'u&+na
MsgBox sM%nsa)%
End "u.
"u. $a(.+a1alo'2$ad%na !s "&'+ng3
,Mos&'a(os %l (%nsa)% *on la *ad%na 7asada
MsgBox $ad%na6 486 "$ad%na >'+g+nal"
,Mod+f+*a(os %l a'gu(%n&o 7asado
$ad%na A "Eso lo d+)o 5ao Hs%"
End "u.
Observa como en es"e caso* moi2icamos el argumen"o !asao . el cambio se ve
re2le3ao en la variable origen* no as* en el siguien"e e3em!lo=
>7&+on Ex7l+*+&
"u. 0aso0o'1alo'23
@+( sM%nsa)% !s "&'+ng
,!s+gna(os una *ad%na a la 8a'+a.l%
sM%nsa)% A "El &'a.a)o %s %l '%fug+o d% los Fu% no &+%n%n nada Fu% ha*%'"
,5la(a(os a la su.'u&+na ? l% 7asa(os %l a'gu(%n&o
$all <o$a(.+a1alo'2 sM%nsa)% 3
,Mos&'a(os la 8a'+a.l% Fu% nos (u%s&'a lo (+s(o6 %s d%*+'
,no h%(os 7od+do *a(.+a' su 8alo' %n la su.'u&+na
MsgBox sM%nsa)%
End "u.
,>.s%'8a %l *a(.+o %n la d%*la'a*+on d%l a'gu(%n&o usando B?1al
A!renieno OOo Basic G5
"u. <o$a(.+a1alo'2 B?1al $ad%na !s "&'+ng 3
,Mos&'a(os %l (%nsa)% *on la *ad%na 7asada
MsgBox $ad%na6 486 "$ad%na >'+g+nal"
,#n&%n&a(os (od+f+*a' %l a'gu(%n&o 7asado
$ad%na A "Eso lo d+)o >s*a' U+ld%"
End "u.
A0ora* la variable origen 7ueo in"ac"a* !ero observa la i2erencia en la eclaraci5n
e la subru"ina* !ara !asar un argumen"o !or valor* "ienes 7ue usar la !alabra clave &y-al Lan"esM
el nombre el argumen"o+ Por e2aul"* salvo 7ue se ini7ue lo con"rario* los argumen"os se !asan
!or re2erencia+ Una !regun"a 7ue nos a.ua a saber si eclaramos una variable !or valor o
re2erencia es= Inecesi"o mani!ular su valor en la subru"inaJ* si la res!ues"a es si se !asa !or
re2erencia* si es no* se !asa !or valor+ ce observao 7ue 0a. os cri"erios encon"raos en el uso
e los argumen"os !or valor o re2erencia* algunos !rogramaores o!inan 7ue "oos los
argumen"os eberan !asarse !or re2erencia* !ues al !asar la irecci5n e la variable en memoria*
no es"amos usano m<s memoria a es"e cri"erio !ora argumen"arse 7ue los e7ui!os ac"uales
"ienen muc0a m<s memoria* o"ros icen 7ue "oos los argumen"os eberan !asarse !or valor*
!ues una subru"ina "iene 7ue ser como una unia com!le"a !or si misma* . la memoria usaa se
libera al 2inalizar la subru"ina+ )as !reocu!aciones el uso e la memoria* !or el momen"o* se las
vamos a e3ar a granes !ro.ec"os* como O!enO22ice+org !or e3em!lo* one es"<n involucraas
millones e lneas e c5igo* !ara nues"ros 2ines !r<c"icos* "u ecies* si !asas los argumen"os en
subru"inas . 2unciones !or valor o re2erencia+
Toas las subru"inas 7ue "engan argumen"os "ienen 7ue ser invocaas (llamaas)
ese o"ra macro* si in"en"as e3ecu"ar irec"amen"e una subru"ina con argumen"os ese el :(>*
"e ar< el siguien"e error=
E si la intentas ejecutar desde la inter&a+ del usuario2 es decir2 desde el menO
Herramientas | Macros | Ejecutar macro...2 te dar7 el siguiente errorP
)as subru"inas nos a.uan a iviir nues"ro c5igo en blo7ues l5gicos o m<s
mane3ables* cier"a ocasi5n* no recuero one* le 7ue una macro* !roceimien"o o subru"ina* no
LeberaM "ener m<s e una !<gina e lneas* es"o !or su!ues"o es sumamen"e sub3e"ivo* escribir
GG F+, 'unciones . subru"inas f (ivie . vencer<s
Lc5igo com!ac"oM no es sin5nimo e Lc5igo e2icien"eM* una vez m<s* la !rac"ica iaria "e ic"ara
los me3ores argumen"os !ara !rogramar+
cabr< ocasiones* en 7ue 7uieras salir an"ici!aamen"e e una subru"ina* !ara ello*
e;is"e una ins"rucci5n 7ue se llama E'it Sub* veamos su uso=
>7&+on Ex7l+*+&
"u. E)%(7lo/Ex+&"u.23
@+( sJ'as% !s "&'+ng

sJ'as% A H'+(2#n7u&Box2"Es*'+.% una f'as%"33
$all $on&a'5%&'as2 sJ'as% 3

End "u.
"u. $on&a'5%&'as2 $ad%na !s "&'+ng3
#f $ad%na A "" &h%n
Ex+& "u.
Els%
MsgBox "Ha?" 9 "&'25%n2$ad%na33 9 " l%&'as %n la *ad%na" 9 $h'2133 9 $h'2133 9 $ad%na
End #f
End "u.
Observa como en la subru"ina /on"ar)e"ras si el argumen"o !asao es"a vaco* sale
inmeia"amen"e e la macro con la ins"rucci5n E'it Sub* algunos au"ores no recomienan el uso
e la ins"rucci5n >;i" Sub* en L"eoraM una subru"ina LeberaM ser com!le"a* es ecir* no LeberaM
necesi"ar salias L2orzaasM* !or su!ues"o 7uea a "u cri"erio . e;!eriencia su uso* !or e3em!lo* la
subru"ina an"erior !ora 7uear as=
"u. $on&a'5%&'as12 $ad%na !s "&'+ng3
#f $ad%na XY "" &h%n
MsgBox "Ha?" 9 "&'2 5%n2$ad%na3 3 9 " l%&'as %n la *ad%na" 9 $h'2133 9 $h'2133 9
$ad%na
End #f
End "u.
Observa como solo e3ecu"amos el c5igo si el argumen"o /aena LnoM es"a vaco*
incluso* algunos au"ores m<s e;igen"es* argumen"an 7ue la 4,alidacin de datos1 (no se "e
olvie es"a 2rase)* se "iene 7ue 0acer Lan"esM e llamar a una subru"ina* es ecir* 7ue es"as
LeberanM 0acer solo su "raba3o . !asarle los a"os correc"os* !ara e3em!li2icar es"o* observa las
moi2icaciones a las macros an"eriores=
"u. E)%(7lo/Ex+&"u.223
@+( sJ'as% !s "&'+ng

sJ'as% A H'+(2#n7u&Box2"Es*'+.% una f'as%"33
#f sJ'as% XY "" Hh%n
$all $on&a'5%&'as22 sJ'as% 3
End #f
End "u.
"u. $on&a'5%&'as22 $ad%na !s "&'+ng3
MsgBox "Ha?" 9 "&'25%n2$ad%na33 9 " l%&'as %n la *ad%na" 9 $h'2133 9 $h'2133 9 $ad%na
End "u.
No"a 7ue la valiaci5n la 0acemos con la linea=
#f sJ'as% XY "" Hh%n
A!renieno OOo Basic G%
Por lo 7ue al llamar a la macro /on"ar)e"ras#* .a le es"amos !asano un a"o
valiao* es ecir* correc"o* !or 7ue en"ro e la subru"ina no es necesario 0acer ninguna
valiaci5n* !or su!ues"o es"o "iene sus !ros . sus con"ras* sus e2ensores . sus e"rac"ores+ Solo
"e igo* a!lica "u cri"erio 7ue la e;!eriencia . la !rac"ica ser<n "us me3ores aliaas+ )o 7ue si
nunca* o"ra vez lo re!i"o* nunca ebes e e3ar e 0acer* es 4,alidar tus datos1* garan"izar 7ue
sean correc"os* no im!or"a one lo 0agas !ero valialos* un gran !orcen"a3e e errores en
muc0os !rogramas es !or una e2icien"e valiaci5n e a"os . "ambi4n* .a "e ar<s cuen"a* 7ue
un gran !orcen"a3e e c5igo* se nos va* valiano a"os+
6eamos o"ro e3em!lo e una subru"ina+ Su!ongamos 7ue nos !ien 0acer una
macro 7ue solici"e el raio e un circulo . se calcule su <rea=
>7&+on Ex7l+*+&
"u. $al*ula'!'%a$+'*ulo123
@+( d!'%a !s @ou.l%
@+( sRad+o !s "+ngl%
$ons& 0# !s "+ngl% A 3-1416
,"ol+*+&a(os %l 'ad+o d%l *+'*ulo a *al*ula'6 o.s%'8a Fu% 7'+(%'o l+(7+a(os los %s7a*+os
,*on H'+(6 d%s7u%s *on8%'&+(os %l 8alo' a &+7o "+ngl%6 Fu% %s %l &+7o d% 8a'+a.l% %s7%'ado
sRad+o A $"ng2 H'+(2 #n7u&Box2 "M$ual %s %l 'ad+oN"6 "!'%a d% un *+'*ulo"6 "1" 3 3 3
,"olo s+ &%n%(os 8alo'%s (a?o'%s a *%'o
#f sRad+o Y 0 Hh%n
d!'%a A 0# 2 sRad+o i 2 3
MsgBox "El a'%a d% un *+'*ulo d% 'ad+o A " 9 "&'2sRad+o3 9 " %s A4 " 9 "&'2d!'%a3
End #f
End "u.
(i creamos una su%rutina2 podrMa ser algo asMP
>7&+on Ex7l+*+&
"u. $al*ula'!'%a$+'*ulo223
@+( d!'%a !s @ou.l%
@+( sRad+o !s "+ngl%
sRad+o A $"ng2 H'+(2 #n7u&Box2 "M$ual %s %l 'ad+oN"6 "!'%a d% un *+'*ulo"6 "1" 3 3 3
#f sRad+o Y 0 Hh%n
$all @%8u%l8%!'%a$+'*ulo2 sRad+o6 d!'%a 3
MsgBox "El a'%a d% un *+'*ulo d% 'ad+o " 9 "&'2sRad+o3 9 " %s A4 " 9 "&'2d!'%a3
End #f
End "u.
"u. @%8u%l8%!'%a$+'*ulo2 Rad+o !s "+ngl%6 !'%a !s @ou.l% 3
$ons& 0# !s "+ngl% A 3-1416
!'%a A 0# 2 Rad+o i 2 3
End "u.
Si bien lo an"erior 2unciona* no es com?n usar subru"inas !ara mani!ular variables .
argumen"os* lo m<s usual* si se 7uiere LevolverM un valor* es usar una 2unci5n en vez e una
subru"ina* la macro an"erior* usano una 2unci5n* 7ueara e la siguien"e manera=
>7&+on Ex7l+*+&
"u. $al*ula'!'%a$+'*ulo323
@+( d!'%a !s @ou.l%
@+( sRad+o !s "+ngl%
sRad+o A $"ng2 H'+(2 #n7u&Box2 "M$ual %s %l 'ad+oN"6 "!'%a d% un *+'*ulo"6 "1" 3 3 3
G, F+, 'unciones . subru"inas f (ivie . vencer<s
#f sRad+o Y 0 Hh%n
,>.s%'8a *o(o usa(os la fun*+on ? as+gna(os %l '%sul&ado a una 8a'+a.l%
d!'%a A !'%a$+'*ulo2 sRad+o 3
MsgBox "El a'%a d% un *+'*ulo d% 'ad+o A " 9 "&'2sRad+o3 9 " %s A4 " 9 "&'2d!'%a3
End #f
End "u.
Jun*&+on !'%a$+'*ulo2 Rad+o !s "+ngl% 3 !s @ou.l%
$ons& 0# !s "+ngl% A 3-1416
,>.s%'8a *o(o usa(os %l no(.'% d% la fun*+Kn 7a'a d%8ol8%' al 8alo'
!'%a$+'*ulo A 0# 2 Rad+o i 2 3
End Jun*&+on
Observa el moo e eclarar una 2unci5n* a0ora* en vez e usar la !alabra clave
Sub* usamos una nueva !alabra clave Function* la eclaraci5n e los argumen"os "iene las
mismas carac"ers"icas usaas en las subru"inas* como el !aso !or valor o re2erencia* !ero un
cambio im!or"an"e* es el "i!o e valor Levuel"oM !or una 2unci5n* es ecir* las 2unciones "ambi4n
evuelven un L"i!oM es!eci2ico e valor* !or su!ues"o* "ambi4n !ueen evolver el "i!o !or e2aul"
e las variables 7ue es 6arian" !ero la recomenaci5n es es!eci2icar siem!re 7ue "e sea !osible el
"i!o e valor 7ue es!eras evuelva la 2unci5n+ O"ro cambio im!or"an"e es 7ue !ara evolver el
valor en"ro e la 2unci5n* en vez e usar o"ro argumen"o o variable* usamos el mismo nombre e
la 2unci5n como es"ino . !ara 2inalizar* en vez e usar >n Sub como 0as"a a0ora* en L"oasM las
eclaraciones e Function* ebemos cerrarlas con End Function, sino* "e ar< un error+
>l !aso e argumen"os en subru"inas . 2unciones* "iene o"ra !osibilia mu.
in"eresan"e* el !aso e argumen"os o!cionales* con"inuemos con nues"ro e3em!lo el circulo*
su!ongamos 7ue a0ora se nos !ie 0acer una macro 7ue calcule .a sea el <rea o el !erme"ro e
un circulo* !ara usar la misma 2unci5n* le agregaremos un argumen"o o!cional !ara saber si lo
7ue 7ueremos calcular es el !erme"ro=
>7&+on Ex7l+*+&
"u. $al*ula'$+'*ulo
@+( d!'%a !s @ou.l%
@+( d0%'+ !s @ou.l%
@+( sRad+o !s "+ngl%
sRad+o A $"ng2 H'+(2 #n7u&Box2 "M$ual %s %l 'ad+oN"6 "$+'*ulo"6 "1" 3 3 3
#f sRad+o Y 0 Hh%n
,!Fu+ usa(os la fun*+on "#< %l a'gu(%n&o o7*+onal
d!'%a A $+'*ulo2 sRad+o 3
,O aFu+ usa(os la fun*+on $>< %l a'gu(%n&o o7*+onal
d0%'+ A $+'*ulo2 sRad+o6 H'u% 3
MsgBox "!'%a A " 9 "&'2d!'%a3 9 *h'2133 9 /
"0%'+(%&'o A " 9 "&'2d0%'+36 646 "$+'*ulo"
End #f
End "u.
Jun*&+on $+'*ulo2 Rad+o !s "+ngl%6 >7&+onal 0%'+(%&'o !s Bool%an 3 !s @ou.l%
$ons& 0# !s "+ngl% A 3-1416
,$o(7'o.a(os s+ %l 7a'a(%&'o s% 7aso o no
#f #sM+ss+ng2 0%'+(%&'o 3 Hh%n
,"+ no s% 7aso l% as+gna(os %l 8alo' 7o' d%faul&
0%'+(%&'o A Jals%
End #f

#f 0%'+(%&'o Hh%n
$+'*ulo A 0# 2 Rad+o 2 3
Els%
$+'*ulo A 0# 2 Rad+o i 2 3
A!renieno OOo Basic G-
End #f
End Jun*&+on
No"a el uso e la !alabra clave %ptional* !ara 2ines e lo 7ue se nos !ie usamos
una variable "i!o boleana* veraera o 2alsa (Boolean)* !ero en "us 2unciones !uee eclarar al
igual 7ue los o"ros argumen"os* el "i!o 7ue necesi"es* !uees eclarar "an"os argumen"os
o!cionales como necesi"es* el !un"o im!or"an"e es 7ue Lcom!ruebesM si se !aso o no el
argumen"o !ara 7ue en su e2ec"o* le asignes un valor !or e2aul" a ic0o argumen"o* !ara
veri2icar si se !aso o no un argumen"o usas la 2unci5n e OOo Basic IsMissin*? (r*umento @*
como se ve en el e3em!lo an"erior+
(e "area* moi2ica la macro !ara 7ue le !regun"es al usuario* I7ue es lo 7ue esea
calcularJ O !or su!ues"o* solo mues"ra el valor el calculo solici"ao+
Por su!ues"o* a las 2unciones "ambi4n es !osible !asarle como argumen"os*
ma"rices* lo ?nico 7ue "ienes 7ue consierar es 7ue los argumen"os es!eraos como ma"rices*
"ienes siem!re 7ue eclararlos como 6arian" si !ara llenar ic0a ma"riz usas la 2unci5n Arra.* en
o"ros casos* !uees usar el mismo "i!o con 7ue eclares "u ma"riz* veamos un e3em!lo e uno .
o"ro=
>7&+on Ex7l+*+&
"u. "u(ando
@+( (@a&os293 !s #n&%g%'
@+( *o1 !s #n&%g%'
,5l%na(os la (a&'+: *on da&os al%a&o'+os %n&'% 1 ? 100
Jo' *o1 A 5Bound2 (@a&os23 3 Ho CBound2 (@a&os23 3
(@a&os2 *o1 3 A Rnd23 100 B 1
<%x&

MsgBox "5a su(a d% la (a&'+: %s A " 9 "&'2 "u(aMa&'+:2 (@a&os23 3 3
End "u.
Jun*&+on "u(aMa&'+: 2 @a&os23 !s #n&%g%' 3 !s #n&%g%'
@+( *o1 !s #n&%g%'
Jo' *o1 A 5Bound2 @a&os23 3 Ho CBound2 @a&os23 3
"u(aMa&'+: A "u(aMa&'+: B @a&os2 *o1 3
<%x&
End Jun*&+on
Observa como se eclaro la ma"riz "i!o :n"eger* "an"o la variable en la macro como el
argumen"o en la eclaraci5n e la 2unci5n* a0ora* in"en"emos usar una ma"riz* 0acieno uso e la
2unci5n Arra. . veamos 7ue !asa=
>7&+on Ex7l+*+&
"u. "u(ando223
@+( (@a&os23 !s #n&%g%'
@+( +"u(a !s #n&%g%'
,5l%na(os la (a&'+: *on la fun*+on !''a?
(@a&os23 A !''a?2106206306406506606706806903
,#n&%n&a(os su(a' la (a&'+:
+"u(a A "u(aMa&'+:2 (@a&os23 3

MsgBox "&'2 +"u(a 3
End "u.
Jun*&+on "u(aMa&'+: 2 @a&os23 !s #n&%g%' 3 !s #n&%g%'
@+( *o1 !s #n&%g%'
%$ F+, 'unciones . subru"inas f (ivie . vencer<s
Jo' *o1 A 5Bound2 @a&os23 3 Ho CBound2 @a&os23 3
"u(aMa&'+: A "u(aMa&'+: B @a&os2 *o1 3
<%x&
End Jun*&+on
Nos a un error* IveraJ* la raz5n es 7ue la 2unci5n es!era una ma"riz e "i!o
:n"eger . se le es"a !asano una ma"riz e "i!o 6arian"* es"o es !or 7ue la 2unci5n Arra.* siempre*
no im!or"a como 0a.as eclarao la ma"riz* siem!re evuelve una ma"riz "i!o 6arian"+ /orrige la
eclaraci5n e la 2unci5n . a0ora si* ebe e 2uncionar+
Jun*&+on "u(aMa&'+: 2 @a&os23 !s 1a'+an& 3 !s #n&%g%'
@+( *o1 !s #n&%g%'
Jo' *o1 A 5Bound2 @a&os23 3 Ho CBound2 @a&os23 3
"u(aMa&'+: A "u(aMa&'+: B @a&os2 *o1 3
<%x&
End Jun*&+on
Observa como cambiamos a "i!o 6arian" el "i!o e ma"riz 7ue es!era con lo cual* .a
no nos a error+
>n las 2unciones* "ambi4n es !osible 0acer uso e la ins"rucci5n >;i"* claro* a7u
usaremos E'it Function* "iene las mismas consieraciones 7ue "e comen"e !ara la ins"rucci5n
>;i" Sub* as 7ue no a0onare en ello* "an solo "e mues"ro un sencillo e3em!lo e su uso=
>7&+on Ex7l+*+&
"u. $o''%o23
@+( s$o''%o !s "&'+ng
s$o''%o A H'+(2#n7u&Box2"@a(% &u *o''%o"33
#f 1al+da'$o''%o2 s$o''%o 3 Hh%n
MsgBox "$o''%o 1al+do"
Els%
MsgBox "$o''%o <> 8al+do"
End #f
End "u.
,0a'a f+n%s d+d=*&+*os6 solo 8al+da'%(os Fu% %l *o''%o &%nga
,%l o.l+gado sG(.olo d% a''o.a 2j3 ? Fu% no s%a n+ %l 7'+(%'
,n+ %l ul&+(o *a'=*&%'
Jun*&+on 1al+da'$o''%o2 $o''%o !s "&'+ng 3 !s Bool%an
@+( 7os !s #n&%g%'
,"+ %l a'gu(%n&o $o''%o %s&a 8a*Go6 sal+(os d% la fun*+Kn
#f $o''%o A "" Hh%n
,"+ lo d%s%as %s&a l+n%a la 7u%d%s o(+&+'6 7u%s al sal+' *on Ex+& Jun*&+on
,la fun*+Kn d%8u%l8% Jalso6 7%'o &al 8%: %n o&'os *asos Fu% no s%a .ool%ana
,la '%s7u%s&a6 n%*%s+&%s as+gna'l% un 8alo' 7'%d%&%'(+nado d+f%'%n&%
1al+da'$o''%o A Jals%
Ex+& Jun*&+on
Els%
,Bus*a(os la 7os+*+on d% la a''o.a *on la fun*+Kn #n"&'
7os A #n"&'2 16 $o''%o6 "j" 3
,<o d%.% s%' n+ %l 7'+(%'o n+ %l ul&+(o *a'=*&%'
,%n %l s+gu+%n&% &%(a a7'%nd%'%(os (=s d% los o7%'ado'%s lKg+*os
#f 7os Y 1 !nd 7os X 5%n2$o''%o3 Hh%n
1al+da'$o''%o A H'u%
Els%
1al+da'$o''%o A Jals%
End #f
End #f
End Jun*&+on
A!renieno OOo Basic %1
Para "erminar es"e "ema* veamos el e3em!lo e una 2unci5n 7ue 0ace uso e una
2unci5n incor!oraa el lengua3e 7ue es mu. boni"a+ Su!ongamos 7ue "enemos 7ue mos"rar
muc0os mensa3es al usuario* !or e3em!lo* el siguien"e=
>7&+on Ex7l+*+&
"u. Mos&'a'M%nsa)%s123
@+( sM%nsa)% !s "&'+ng
sM%nsa)% A "0o' fa8o' %s*og% una o7*+on4 $!<$E5!R A "al%s d%l 7'og'a(a " 9 /
"RE0EH#R A #n&%n&a d% nu%8o #D<>R!R A <o ha*% nada"
MsgBox sM%nsa)%6 26 ">7*+on"
End "u.
/omo !or<s no"ar* la es"4"ica no es mu. boni"a 7ue igamos=
Me3oremos un !oco la vis"a e nues"ro cuaro e mensa3e* inser"ano unos sal"os
e linea* 7ue* como sabes* se 0ace usano la 2unci5n /0r !asanole el argumen"o 1@* 7ue es el
valor AS/:: !ara el sal"o e linea* e la siguien"e manera=
"u. Mos&'a'M%nsa)%s223
@+( sM%nsa)% !s "&'+ng
sM%nsa)% A "0o' fa8o' %s*og% una o7*+on4" 9 $h'2133 9 $h'2133 9 /
"$!<$E5!R A "al%s d%l 7'og'a(a" 9 $h'2133 9 /
"RE0EH#R A #n&%n&a d% nu%8o" 9 $h'2133 9 /
"#D<>R!R A <o ha*% nada"
MsgBox sM%nsa)%6 26 ">7*+on"
End "u.
A0ora si* nues"ro cuaro e mensa3e "iene muc0a me3or !resen"aci5n
Pero imagina"e 7ue "ienes 7ue mos"rar m?l"i!les mensa3es con i2eren"es caenas .
es"ar conca"enano los sal"os e linea en caa una* no es una ac"ivia 7ue igamos mu.
!lacen"era* !ara ello* 0agamos una 2unci5n 7ue lo 0aga !or noso"ros
Jun*&+on #ns%'&a'"al&os2 @a&os23 3 !s "&'+ng
#ns%'&a'"al&os A [o+n2 @a&os236 $h'2133 3
End Jun*&+on
%# F+, 'unciones . subru"inas f (ivie . vencer<s
Observa 7ue 2unci5n m<s sencilla . 7ue ?"il . lina es* la 2unci5n >oin e OOo Basic*
es una 2unci5n 7ue me gus"a muc0o* es!era como argumen"os* una ma"riz . un car<c"er
se!araor* lo 7ue 0ace es 3un"ar caa elemen"o e la ma"riz se!araos !or el car<c"er se!araor*
en el e3em!lo siguien"e* 3un"amos en una caena unos n?meros se!araos !or un guion=
"u. [un&a'@a&os23
@+( (@a&os23 !s 1a'+an&
@+( s$ad%na !s "&'+ng
(@a&os23 A !''a?210062006300640065003
s$ad%na A [o+n2 (@a&os236 "T"3
MsgBox s$ad%na

End "u.
)a 2unci5n +nsertarSaltos la usamos e la siguien"e manera=
"u. Mos&'a'M%nsa)%s323
@+( (M%nsa)%s23 !s 1a'+an&
@+( sM%nsa)% !s "&'+ng
,R%*u%'da Fu% la fun*+on !''a? "#EM0RE d%8u%l8% una (a&'+: 1a'+an&
(M%nsa)%s23 A !''a?2"0o' fa8o' %s*og% una o7*+on4"6""6"$!<$E5!R A "al%s d%l
7'og'a(a"6"RE0EH#R A #n&%n&a d% nu%8o"6"#D<>R!R A <o ha*% nada"3
,5la(a(os a la fun*+on Fu% +ns%'&a los sal&os d% l+n%a
sM%nsa)% A #ns%'&a'"al&os2 (M%nsa)%s23 3
,Mos&'a(os %l (%nsa)%
MsgBox sM%nsa)%6 26 ">7*+on"
End "u.
(iviir nues"ro c5igo en subru"inas . 2unciones* es el !an nues"ro e caa a* no
ebes e "ener ua !ues m<s aelan"e las usaremos 2recuen"emen"e* !or a0ora* o"ro "ema a
llegao a su 2in+
VV'eliz !rogramaci5nWW
A!renieno OOo Basic %@
).G %peradores
OOo Basic so!or"a los siguien"e o!eraores ari"m4"icos* e relaci5n . l5gicos+
).G.1 4 H 1 E'ponenciacin ?aritm$tico@
Se usa !ara elevar un n?mero llamao base a o"ro llamao e;!onen"e+ >l n?mero
resul"an"e el siguien"e e3em!lo* "al vez "e resul"e 2amiliar=
>7&+on Ex7l+*+&
"u. 0o&%n*+as123
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s #n&%g%'
+<u(1 A 2 ,Bas%
+<u(2 A 10 ,Ex7on%n&%

+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3

End "u.
>n general con "oos los o!eraores* ebes e "ener la !recauci5n e !roveer lo
me3or !osible 7ue el resul"ao e la o!eraci5n no e;cea el L"amaKoM e la variable es"ino* !or
e3em!lo* la siguien"e o!eraci5n "e "iene 7ue ar un error e esboramien"o* es ecir* el resul"ao
no cabe en la variable iAesul eclaraa como :n"eger+
"u. 0o&%n*+as223
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s #n&%g%'
+<u(1 A 3 ,Bas%
+<u(2 A 10 ,Ex7on%n&%

+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3

End "u.
a
n
%F F+- O!eraores
)a soluci5n es cambiar la variable iAesul !or una m<s grane* en es"e caso )ong*
!ero seg?n "us necesiaes !ora ser incluso m<s grane+
@+( +R%sul !s 5ong
)a base . el e;!onen"e no "ienen !or 7ue ser en"eros* observa el cambio e
eclaraci5n e las variables=
"u. 0o&%n*+as323
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s @ou.l%
+<u(1 A 2-53 ,Bas%
+<u(2 A 5-54 ,Ex7on%n&%

+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3

End "u.
Tam!oco "ienen !or 7ue ser !osi"ivos* cuano la base es nega"iva* el signo e la
!o"encia lo e"erminar< el e;!onen"e* si es"e es !ar ser< !osi"iva* si es im!ar ser< nega"iva* e
acuero a las le.es e los signos 7ue .a conoces ese la escuela elemen"al* como se
com!rueba en los siguien"e e3em!los=
"u. 0o&%n*+as423
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s @ou.l%
+<u(1 A T2 ,Bas%
+<u(2 A 4 ,Ex7on%n&%
+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3 ,R%sul&ado 7os+&+8o

+<u(1 A T2 ,Bas%
+<u(2 A 5 ,Ex7on%n&%
+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3 ,R%sul&ado n%ga&+8o

End "u.
>n el caso e 7ue el e;!onen"e sea nega"ivo* lo 7ue 0ace el lengua3e* como lo ic"an
las ma"em<"icas* invier"e la base !ara 7ue el e;!onen"e sea !osi"ivo+
A!renieno OOo Basic %5
"u. 0o&%n*+as523
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s @ou.l%

+<u(1 A 2 ,Bas%
+<u(2 A T3 ,Ex7on%n&%
+R%sul A +<u(1 i +<u(2
MsgBox "&'2+R%sul3

End "u.
4.9.2 * Multiplicacin (aritmtico)
)a mul"i!licaci5n es la o!eraci5n ari"m4"ica 7ue nos !ermi"e 0acer una suma
abreviaa* al resul"ao se le llama !rouc"o . los n?meros mul"i!licaos 2ac"ores=
>7&+on Ex7l+*+&
"u. Mul&+7l+*a*+on123
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s #n&%g%'
,Ja*&o'%s
+<u(1 A 365
+<u(2 A 34

+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3
End "u.
Aecuera 7ue la variable one asignes el resul"ao* ebe ser lo su2icien"emen"e
grane !ara con"enerlo* 7ue !uees mul"i!licar valores en"eros . no en"eros* !osi"ivos .
nega"ivos* en es"e caso* las le.es e los signos a!lican correc"amen"e+
>7&+on Ex7l+*+&
"u. Mul&+7l+*a*+on223
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s #n&%g%'
+<u(1 A 11
+<u(2 A 56
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3

+<u(1 A T11
+<u(2 A 56
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3

+<u(1 A 11
+<u(2 A T56
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3
+<u(1 A T11
!
"
=
1
!
"
=
1
#
=$%1!&
%G F+- O!eraores
+<u(2 A T56
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3

End "u.
Aecuera 7ue en las mul"i!licaciones el oren e los 2ac"ores no al"era el !rouc"o
(!ro!iea conmu"a"iva)=
"u. Mul&+7l+*a*+on323
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s 5ong
+<u(1 A 12345
+<u(2 A 18
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3

+<u(1 A 18
+<u(2 A 12345
+R%sul A +<u(1 +<u(2
MsgBox "&'2+R%sul3
End "u.
4.9.3 !i"i#in (aritmtico)
O!eraci5n ari"m4"ica !ara saber cuan"as veces cabe un n?mero en o"ro* es* !ora
ecirse* una res"a abreviaa+ >l n?mero a iviir se llama LivienoM* al o"ro LivisorM* al resul"ao
en"ero se le llama Lcocien"eM . si no es e;ac"a la ivisi5n a lo 7ue res"a se le llama LresiuoM+ >s la
o!eraci5n inversa a la mul"i!licaci5n+
Puees iviir numero en"eros . no en"eros* nega"ivos . !osi"ivos* las le.es e los
signos a!lican e la misma 2orma 7ue en la mul"i!licaci5n+
>7&+on Ex7l+*+&
"u. @+8+s+on123
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s @ou.l%
+<u(1 A 123456790 ,@+8+d%ndo
+<u(2 A 123 ,@+8+so'
+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3

End "u.
"u. @+8+s+on223
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
@+( +R%sul !s #n&%g%'
+<u(1 A 589 ,@+8+d%ndo
+<u(2 A T25 ,@+8+so'
+R%sul A +<u(1 / +<u(2

MsgBox "&'2+R%sul3
A!renieno OOo Basic %%
End "u.
>n el caso e la ivisi5n* el oren e los o!eranos si im!or"a* es mu. i2eren"e 7ue
un n?mero sea ivieno 7ue ivisor como !oemos verlo en el siguien"e e3em!lo=
"u. @+8+s+on323
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s @ou.l%
+<u(1 A 98765
+<u(2 A 321
+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3

+<u(1 A 321
+<u(2 A 98765
+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3

End "u.
4.9.4 $ !i"i#in entera (aritmtico)
Con este operador o%tenemos solo la parte entera de una di$isinP
>7&+on Ex7l+*+&
"u. @+8+s+on/En&%'a123
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 100
+<u(2 A 15

+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3
,@%8u%l8% solo la 7a'&% %n&%'a
+R%sul A +<u(1 a +<u(2
MsgBox "&'2+R%sul3
End "u.
En algunos casos2 cuando el $alor decimales es mu# cercano al siguiente entero2
este operador te de$uel$e el siguiente entero2 como enP
"u. @+8+s+on/En&%'a223
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 100
+<u(2 A 25-1

+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3
%, F+- O!eraores
+R%sul A +<u(1 a +<u(2
MsgBox "&'2+R%sul3
End "u.
(i Guieres asegurarte Gue 8siempre: te regrese 8solo: la parte entera2 mejor usa
la &uncin %nt<$alor> Gue te de$uel$e solo la parte entera del $alor pasado2 como te muestro
aGuMP
"u. @+8+s+on/En&%'a323
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 100
+<u(2 A 25-1

+R%sul A +<u(1 / +<u(2
MsgBox "&'2+R%sul3
+R%sul A +<u(1 a +<u(2
MsgBox "&'2+R%sul3

+R%sul A Int2 +<u(1 / +<u(2 3
MsgBox "&'2+R%sul3
End "u.
4.9.& Mod 'e#to de una di"i#in entera (aritmtico)
>s"e o!eraor nos evuelve el resiuo en"ero e una ivisi5n en"era=
>7&+on Ex7l+*+&
"u. R%s&o/@+8+s+on123
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 100
+<u(2 A 15

+R%sul A +<u(1 Mod +<u(2
MsgBox "&'2+R%sul3

End "u.
>l siguien"e e3em!lo 0ace uso e los o!eraores LMoM . MmM (ivisi5n en"era) !ara
conver"ir un n?mero ecimal en binario=
"u. @%*+(al/B+na'+o23
@+( +@%* !s #n&%g%'
@+( sB+n !s "&'+ng
@+( +Bas% !s #n&%g%'
,<;(%'o %n&%'o a *on8%'&+'
+@%* A 100
,El s+s&%(a .+na'+o %s .as% 2
+Bas% A 2
15 1$$
G
1I
A!renieno OOo Basic %-
,Has&a Fu% %l n;(%'o s%a (%no' Fu% la .as%
@o Cn&+l +@%* X +Bas%
,>.&%n%(os %l '%s+duo ? lo 8a(os *on*a&%nando
sB+n A 2+@%* Mo +Bas%3 9 sB+n
,>.&%n%(os la d+8+s+Kn %n&%'a ? '%as+gna(os %l nu(%'o
,s+ no ha*%s %s&o6 &% Fu%da'as %n un *+*lo +nf+n+&o
+@%* A +@%* ! +Bas%
5oo7
,0o' ul&+(o *on*a&%na(os %l ul&+(o *o*+%n&%
sB+n A +@%* 9 sB+n
,Mos&'a(os %l 8alo' %n .+na'+o
MsgBox sB+n
End "u.
).G.= 4 J 1 Suma ?aritm$tico@
)a aici5n* es la o!eraci5n ari"m4"ica 7ue nos !ermi"e combinar os can"iaes !ara
ob"ener una sola+ A ic0as can"iaes se les llama sumanos . al resul"ao suma=
>7&+on Ex7l+*+&
"u. "u(as123
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 159-25
+<u(2 A 489-55
+R%sul A +<u(1 B +<u(2
MsgBox "&'2 +R%sul 3
End "u.
Por su !ro!iea conmu"a"iva* el oren e los sumanos no al"era la suma=
"u. "u(as223
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 1974
+<u(2 A 34
+R%sul A +<u(1 B +<u(2
MsgBox "&'2 +R%sul 3
+<u(1 A 34
+<u(2 A 1974
+R%sul A +<u(1 B +<u(2
MsgBox "&'2 +R%sul 3
End "u.
,$ F+- O!eraores
Por le.es e los signos* la suma "enr< el signo el ma.or sumano=
"u. "u(as323
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 4268
+<u(2 A T258
+R%sul A +<u(1 B +<u(2
MsgBox "&'2 +R%sul 3
+<u(1 A T5689
+<u(2 A 197
+R%sul A +<u(1 B +<u(2
MsgBox "&'2 +R%sul 3
End "u.
).G.A 4 K 1 8esta ?aritm$tico@
)a sus"racci5n o res"a es la o!eraci5n ari"m4"ica 7ue nos !ermi"e conocer la
i2erencia en"re os n?meros* al !rimero se le llama minueno . al seguno sus"raeno+ >s la
o!eraci5n inversa e la suma+
>7&+on Ex7l+*+&
"u. R%s&as123
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 5000 ,M+nu%ndo
+<u(2 A 2125 ,"us&'a%ndo
+R%sul A +<u(1 T +<u(2
MsgBox "&'2 +R%sul 3
End "u.
)a res"a no "iene !ro!iea conmu"a"iva* es ecir* si in"ercambias el minueno . el
sus"raeno* no "e ar< el mismo resul"ao* !ero 2i3a"e 7ue curioso resul"ao=
"u. R%s&as223
@+( +<u(1 !s "+ngl%
@+( +<u(2 !s "+ngl%
@+( +R%sul !s "+ngl%
+<u(1 A 562
+<u(2 A 956
+R%sul A +<u(1 T +<u(2
MsgBox "&'2 +R%sul 3
+<u(1 A 956
A!renieno OOo Basic ,1
+<u(2 A 562
+R%sul A +<u(1 T +<u(2
MsgBox "&'2 +R%sul 3
End "u.
4.9.( Operadore# de relacin
>s"os o!eraores nos !ermi"en com!arar el valor e os e;!resiones o "4rminos*
siem!re evuelven un valor veraero (True) o 2also ('alse)* es ecir* un valor booleano+
>7&+on Ex7l+*+&
"u. >7%'ado'%s/R%la*+on23
@+( .R%sul !s Bool%an
@+( +<u(1 !s #n&%g%'
@+( +<u(2 !s #n&%g%'
+<u(1 A 99
+<u(2 A 19
.R%sul A +<u(1 = +<u(2
MsgBox ""on +gual%sN " 9 .R%sul
.R%sul A +<u(1 "# +<u(2
MsgBox ""on d+s&+n&osN " 9 .R%sul
.R%sul A +<u(1 " +<u(2
MsgBox "M%no' Fu%N " 9 .R%sul
.R%sul A +<u(1 # +<u(2
MsgBox "Ma?o' Fu%N " 9 .R%sul
.R%sul A +<u(1 "= +<u(2
MsgBox "M%no' o +gualN " 9 .R%sul
.R%sul A +<u(1 #= +<u(2
MsgBox "Ma?o' o +gualN " 9 .R%sul
End "u.
Ten cuiao e no con2unir los signos e igual (l)* el !rimero e iz7uiera a
erec0a es el signo igual usao como asignaci5n* el resul"ao e la e;!resi5n a la erec0a el
signo se asigna a la variable a la iz7uiera el signo* el seguno signo igual (en negri"as . ro3o) es
usao como o!eraor e relaci5n en"re os "4rminos* es"e e3em!lo es m<s claro !ues es"a en"re
!ar4n"esis=
.R%sul A 2 +<u(1 = +<u(2 3
4.9.9 )ot * )e+acin (l+ico)
/ambia el valor e la e;!resi5n e 2also a veraero . viceversa+ Se a!lica a solo un
o!eraor+
,# F+- O!eraores
>7&+on Ex7l+*+&
"u. <%ga*+on23
@+( .1alo' !s Bool%an
,1alo' o'+g+nal 1%'dad%'o
.1alo' A H'u%
Msg.ox .1alo'
,5% a7l+*a(os %l o7%'ado'
.1alo' A <o& .1alo'
Msg.ox .1alo'
,1alo' o'+g+nal Jalso
.1alo' A Jals%
Msg.ox .1alo'
,5% a7l+*a(os %l o7%'ado'
.1alo' A <o& .1alo'
Msg.ox .1alo'
End "u.
Su "abla e vera es mu. sencilla* sieno es"a una 0erramien"a !ara conocer los
!osibles valores e una e;!resi5n cuano se le a!lican o!eraores l5gicos+
, )ot ,
6 '
' 6
4.9.-. ,nd * / (l+ico)
Se a!lica a os o!eraores* evuelve veraero (True) solo en el caso e 7ue los
os o!eraores sean veraeros (True)* cual7uier o"ro valor* evuelve 2also ('alse)+ A0ora*
!rimero "e mues"ro su "abla e vera . es!u4s los e3em!los=
, 0 , ,nd 0
6 6 6
6 ' '
' 6 '
' ' '
>7&+on Ex7l+*+&
"u. $on)un*+on23
@+( .1alo'1 !s Bool%an
@+( .1alo'2 !s Bool%an
@+( .R%sul !s Bool%an
,"olo %n *aso d% Fu% los dos s%an 8%'dad%'os
,%l '%sul&ado s%'a 8%'dad%'o
A!renieno OOo Basic ,@
.1alo'1 A H'u%
.1alo'2 A H'u%
.R%sul A .1alo'1 !nd .1alo'2
Msg.ox .R%sul
.1alo'1 A H'u%
.1alo'2 A Jals%
.R%sul A .1alo'1 !nd .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A H'u%
.R%sul A .1alo'1 !nd .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A Jals%
.R%sul A .1alo'1 !nd .1alo'2
Msg.ox .R%sul
End "u.
4.9.-- Or * O (l+ico)
Se a!lica a os o!eraores+ Si los os o!eraores son 2alsos ('alse)* evuelve 2also
('alse)* cual7uier o"ro valor evuelve veraero (True)+ Su "abla e vera es=
, 0 , Or 0
6 6 6
6 ' 6
' 6 6
' ' '
>7&+on Ex7l+*+&
"u. @+s?un*+on23
@+( .1alo'1 !s Bool%an
@+( .1alo'2 !s Bool%an
@+( .R%sul !s Bool%an
.1alo'1 A H'u%
.1alo'2 A H'u%
.R%sul A .1alo'1 >' .1alo'2
Msg.ox .R%sul
.1alo'1 A H'u%
.1alo'2 A Jals%
.R%sul A .1alo'1 >' .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A H'u%
.R%sul A .1alo'1 >' .1alo'2
Msg.ox .R%sul
,F F+- O!eraores
.1alo'1 A Jals%
.1alo'2 A Jals%
.R%sul A .1alo'1 >' .1alo'2
Msg.ox .R%sul
End "u.
4.9.-2 1or * O exclu#i"a (l+ico)
(e aplica a dos operadores. (i los dos operadores son iguales de$uel$e &also
<6alse>2 si son di&erentes de$uel$e $erdadero <)rue>. (u ta%la de $erdad esP
, 0 , 1or 0
6 6 '
6 ' 6
' 6 6
' ' '
>7&+on Ex7l+*+&
"u. >7%'ado'/Eo'23
@+( .1alo'1 !s Bool%an
@+( .1alo'2 !s Bool%an
@+( .R%sul !s Bool%an
.1alo'1 A H'u%
.1alo'2 A H'u%
.R%sul A .1alo'1 Eo' .1alo'2
Msg.ox .R%sul
.1alo'1 A H'u%
.1alo'2 A Jals%
.R%sul A .1alo'1 Eo' .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A H'u%
.R%sul A .1alo'1 Eo' .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A Jals%
.R%sul A .1alo'1 Eo' .1alo'2
Msg.ox .R%sul
End "u.
A!renieno OOo Basic ,5
4.9.-3 E2" * E2ui"alencia (opue#to a 1or) (l+ico)
(e aplica a dos operadores. (i los dos operadores son iguales de$uel$e $erdadero
<)rue>2 si son di&erentes de$uel$e 6also <6alse>. (u ta%la de $erdad esP
, 0 , E2" 0
6 6 6
6 ' '
' 6 '
' ' 6
>7&+on Ex7l+*+&
"u. >7%'ado'/EF823
@+( .1alo'1 !s Bool%an
@+( .1alo'2 !s Bool%an
@+( .R%sul !s Bool%an
.1alo'1 A H'u%
.1alo'2 A H'u%
.R%sul A .1alo'1 EF8 .1alo'2
Msg.ox .R%sul
.1alo'1 A H'u%
.1alo'2 A Jals%
.R%sul A .1alo'1 EF8 .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A H'u%
.R%sul A .1alo'1 EF8 .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A Jals%
.R%sul A .1alo'1 EF8 .1alo'2
Msg.ox .R%sul
End "u.
4.9.-4 %mp * %mplicacin (l+ico)
Se a!lica a os o!eraores+ Si el !rimer o!eraor es veraero (True) . el seguno
es 'also ('alse) evuelve 2also ('alse)* cual7uier o"ro valor* evuelve veraero
(True)+ Su "abla e vera es=
, 0 , %mp 0
6 6 6
6 ' '
' 6 6
' ' 6
,G F+- O!eraores
>7&+on Ex7l+*+&
"u. >7%'ado'/#(723
@+( .1alo'1 !s Bool%an
@+( .1alo'2 !s Bool%an
@+( .R%sul !s Bool%an
.1alo'1 A H'u%
.1alo'2 A H'u%
.R%sul A .1alo'1 #(7 .1alo'2
Msg.ox .R%sul
.1alo'1 A H'u%
.1alo'2 A Jals%
.R%sul A .1alo'1 #(7 .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A H'u%
.R%sul A .1alo'1 #(7 .1alo'2
Msg.ox .R%sul
.1alo'1 A Jals%
.1alo'2 A Jals%
.R%sul A .1alo'1 #(7 .1alo'2
Msg.ox .R%sul
End "u.
4.9.-& 3recedencia de operadore#
>n resumen* los o!eraores 7ue !uees usar en OOo Basic* son los siguien"es*
es"<n orenaos e ma.or a menor !receencia* es ecir* la !rioria 7ue les asigna el lengua3e
cuano en una sen"encia es"<n im!licaos os o mas o!eraores+ )os o!eraores 7ue es"<n en la
misma linea* "iene el mismo nivel e !receencia
%perador %peracin 5ipo
n >;!onenciaci5n Ari"m4"ico
o * 1 Mul"i!licaci5n . ivisi5n Ari"m4"ico
m (ivisi5n en"era Ari"m4"ico
Mo Aes"o e una ivisi5n en"era Ari"m4"ico
R * - Suma . res"a Ari"m4"ico
l * DE * D * E
Dl * El
:gual* is"in"o* menor 7ue* ma.or 7ue*
menor o igual 7ue* ma.or o igual 7ue
Aelacionales
No" Negaci5n )5gico
An O )5gico
Or O )5gico
por O e;clusiva )5gico
>7v >7uivalencia (o!ues"o a por) )5gico
:m! :m!licaci5n )5gico
A!renieno OOo Basic ,%
)a !rioria e e3ecuci5n es mu. im!or"an"e* !ues si no la u"ilizas correc"amen"e* "e
!uee ar resul"aos i2eren"es a los es!eraos* "oma en cuen"a las siguien"e reglas=
)a !receencia va e ma.or a menor* es ecir* se e3ecu"an !rimero los
o!eraores e ma.or 3erar7ua
Si los o!eraores "ienen la misma !receencia* se e3ecu"an e iz7uiera a
erec0a
)a !receencia se !uee Lrom!erM (cambiar) usano !ar4n"esis* "ienen
!rioria los m<s in"ernos . 0acia a2uera
>7&+on Ex7l+*+&
"u. 0'%*%d%n*+a/>7%'ado'%s123
@+( nu( !s @ou.l%
,>.s%'8a *o(o la 7'+o'+dad 8a d% +:Fu+%'da a d%'%*ha
,4 16 1 3
nu( A 2 i 2 4 Mod 3 B 2
MsgBox nu(

,O aho'a 8a d% d%'%*ha a +:Fu+%'da
,16 32 34
nu( A 2 B 2 4 i 2
MsgBox nu(

End "u.
)o m<s sencillo* es 7ue "u e"ermines el oren e las o!eraciones* .a sea en
sucesivas lneas como en el !rimer e3em!lo o usano !ar4n"esis como en el seguno e3em!lo=
"u. 0'%*%d%n*+a/>7%'ado'%s223
@+( nu( !s @ou.l%
nu( A 45 56
nu( A nu( / 10
nu( A nu( i 3
nu( A nu( B 125
MsgBox nu(

nu( A 22245 563 / 103 i 33 B 125
MsgBox nu(
,>.s%'8a *o(o6 s+n los 7a'Sn&%s+s da un '%sul&ado
,&o&al(%n&% d+f%'%n&%
nu( A 45 56 / 10 i 3 B 125
MsgBox nu(


End "u.
)os !ar4n"esis nos a.uan a e"erminar el oren en 7ue 7ueramos 0acer una
o!eraci5n cuano la !receencia e o!eraciones no es mu. clara+ Mi recomenaci5n como casi
siem!re lo no"aras* es 7ue man"engas el con"rol e "u c5igo+
,, F+1$ /on"rol e errores
).1I Control de errores
>n "eora* un !rograma no ebera "ener errores o no necesi"ara e un con"rol e
errores* en la !rac"ica* sabemos 7ue es"o no es as+ >n general !oramos 0ablar e "res "i!os e
errores e!enieno e cuano se !roucen o en 7ue con"e;"o+
1) Errores en tiempo de dise<oL son a7uellos 7ue se come"en cuano se
es"a coi2icano* !rogramano* escribieno nues"ro c5igo* generalmen"e son
e"ec"aos !or el :(> en cuan"o "ra"amos e e3ecu"ar el c5igo . normalmen"e nos
mues"ra un mensa3e inic<nonos el "i!o e error come"io* mu. com?nmen"e son
errores e sin"a;is* recorano 7ue sin"a;is es= -Conjunto de reglas ,ue definen las
secuencias correctas de los elementos de un lenguaje de programacin- !or e3em!lo* el
siguien"e c5igo* "e eber< mos"rar el siguien"e mensa3e e error 7ue es mu. claro=
>7&+on Ex7l+*+&
"u. E''o'%s123
>n el a!4nice A !un"o %+#* "e mues"ro una lis"a e los errores en "iem!o e
iseKo m<s 2recuen"es
#) Errores l*icos= es"os errores* son los m<s i2ciles e e"ec"ar . corregir
!ues 2recuen"emen"e no "e an un mensa3e o no se e"iene el c5igo* sino sim!lemen"e
el c5igo Lno 0aceM las "areas !ara las 7ue se su!one es"a esarrollao o Lno evuelveM
los valores es!eraos* en"re m<s grane . com!le3o sea "u c5igo* la !robabilia e
7ue "enga errores l5gicos aumen"a consierablemen"e+ ca. una 2rase 7ue se le
a"ribu.e (no 0e !oio com!robarlo) a )inus Torvals 7ue ice -an"e los o3os e
muc0os* los errores son evien"es-* !or su!ues"o* es"o solo !uee suceer con el
so2"8are libre* como el 7ue "u . .o usamos* IveraJ* !ues solo en el "enemos a
nues"ra is!osici5n el c5igo 2uen"e 7ue es la ?nica 2orma e veri2icar 7ue un so2"8are
0aga lo 7ue ice 7ue 0ace+ qnicamen"e la e;!eriencia . la !rac"ica "e a.uaran a
minimizar es"e "i!o e errores+
@) Errores en tiempo de ejecucin= es"os errores se !roucen uran"e el
"iem!o 7ue se es"a e3ecu"ano "u !rograma o c5igo+ OOo Basic cuen"a con
ins"rucciones . !alabras claves !ara con"rolar es"e "i!o e errores . son los 7ue
a!reneremos en es"e ca!i"ulo+
/o!ia . e3ecu"a la siguien"e macro=
>7&+on Ex7l+*+&
"u. Man%)o/E''o'%s123
@+( sRu&a!'*h+8o !s "&'+ng

A!renieno OOo Basic ,-
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
End "u.
Si escribes la ru"a e un arc0ivo 7ue no e;is"e* "e LebeM ar el mensa3e e error .
no"a 7ue el ul"imo mensa3e con MsgBo; .a LnoM se mues"ra=
/laro* es"ar<s !ensano 7ue es m<s 2<cil . m<s e2icien"e el valiar an"es 7ue e;is"a
el arc0ivo . es"ar<s en lo correc"o=
"u. Man%)o/E''o'%s223
@+( sRu&a!'*h+8o !s "&'+ng

sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33

#f sRu&a!'*h+8oXY"" !nd @+'2sRu&a!'*h+8o3XY"" Hh%n
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Els%
MsgBox "Ru&a +n8al+da o a'*h+8o no %x+s&%"6 06 "Bo''a' a'*h+8o"
End #f
End "u.
>n la valiaci5n an"erior es"amos usano una 2unci5n e OOo Basic 7ue "al vez no
conozcas* me re2iero a la 2unci5n Dir(valor)* one valor !uee ser una ru"a e arc0ivo* si LnoM
encuen"ra el arc0ivo* evuelve una caena vaca+
/onsiera 7ue cuano accees a recursos e;"ernos* no "ienes la seguria 7ue esos
recursos es"ar<n Lsiem!reM is!onibles* en el caso e los arc0ivos* o"ros !rocesos !ueen
acceer . mani!ularlos* !or ello* en es"e . o"ros casos* consiera la u"ilizaci5n e un con"rolar e
errores como en el e3em!lo siguien"e=
>7&+on Ex7l+*+&
"u. Man%)o/E''o'%s323
@+( sRu&a!'*h+8o !s "&'+ng

>n E''o' Do&o $><HR>5!ERR>RE"
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Ex+& "u.
$><HR>5!ERR>RE"4
-$ F+1$ /on"rol e errores
"%l%*& $as% E''
$as% 0
$as% 53
MsgBox "<o s% %n*on&'K la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9 sRu&a!'*h+8o6 48
$as% Els%
MsgBox ">*u''+K %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 /
$h'2133 9 "En la l+n%a " 9 E'l
End "%l%*&
>n E''o' Do&o 0
End "u.
6eamos "oas las !ar"es el c5igo an"erior+ (es!u4s e eclarar la macro . las
variables a usar* "enemos una nueva ins"rucci5n=
>n E''o' Do&o $><HR>5!ERR>RE"
)a sin"a;is general e es"a ins"rucci5n es=
On >rror &o"o 2ombre"ti,ueta
>n one !ombre$ti%ueta es cual7uier !alabra 7ue cum!la las carac"ers"icas
vis"as !ara nombrar a las variables . li"eralmen"e signi2ica ->n caso e error sal"a (o va) a
2ombre"ti,ueta+ (es!u4s e iniciar el con"rolaor e errores* "enemos !ro!iamen"e el c5igo e
nues"ra macro+ >nseguia* observa 7ue usamos la ins"rucci5n >;i" Sub* es"o es !ara 7ue si*
nues"ro c5igo se e3ecu"a sin !roblemas* salga e la macro LsinM e3ecu"ar el con"rolaor e
errores+ A0ora si* observa como eclaramos la e"i7ue"a usaa en la eclaraci5n el con"rolaor e
errores* no"a 7ue es"a e"i7ue"a* e;ce!"o !or 7ue es inis"in"o las ma.?sculas . min?sculas* es
e;ac"amen"e igual a la usaa en la eclaraci5n el con"rolaor e errores* "ambi4n no"a* mu.
im!or"an"e* 7ue es"a "ermina en os !un"os (=) * es"os* son inis!ensables !ara 7ue no "e mues"re
el siguien"e mensa3e e error en "iem!o e iseKo=
:nmeia"amen"e es!u4s e la eclaraci5n e la e"i7ue"a* observa 7ue iniciamos un
Selec" /ase con la variable Err* es"a* es una variable "i!o )ong e OOo Basic 7ue con"iene el
n?mero e error 7ue se 0a.a !rovocao* es"a variable "enr< valor $ si no ocurri5 ning?n error+
>n nues"ro e3em!lo* sabemos 7ue si no se encuen"ra un arc0ivo* ocurre el error 5@*
el cual mani!ulamos con la linea=
$as% 53
MsgBox "<o s% %n*on&'K la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9 sRu&a!'*h+8o6 48
>n caso e 7ue ocurra un error no es!eci2icao o esconocio* mos"ramos el
n?mero e error (variable Err)* la escri!ci5n el error (variable Error) . la lnea one es"e
ocurri5 (variable Erl)* cu.a valiosa in2ormaci5n nos a.uara a corregirlo+
$as% Els%
MsgBox ">*u''+K %l %''o' nu(%'o4 " 9 $rr 9 $h'2133 9 $rror 9 /
$h'2133 9 "En la l+n%a " 9 $rl
A!renieno OOo Basic -1
(es!u4s e cerrar la es"ruc"ura Selec" /ase con >n Selec"* "enemos la linea=
>n E''o' Do&o 0
eue no 0ace o"ra cosa 7ue reinicializar las variables e error* es ecir Err* Error .
Erl+ )a es"ruc"ura e con"rol o aminis"raci5n e errores 7ue acabamos e ver* a2or"unaamen"e*
no es la ?nica !ero es la 7ue generalmen"e se usa* 0a. algunas varian"es 7ue a cri"erio !uees
usar* veamos algunas+ >n caso e 7ue 7uieras es"ablecer un con"rol e errores gen4rico* !oras
usar=
"u. Man%)o/E''o'%s423
>n E''o' Do&o $><HR>5!ERR>RE"
,!Fu+ 8a &odo &u *od+go

Ex+& "u.
$><HR>5!ERR>RE"4
#f E'' XY 0 Hh%n
MsgBox ">*u''+o %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 $h'2133 9 "En la l+n%a " 9 E'l
End #f
>n E''o' Do&o 0
End "u.
Puees simular el error 7ue 7uieras sim!lemen"e asignano el n?mero e error a la
variable >rror e la siguien"e manera=
,!Fu+ 8a &odo &u *od+go
E''o'2123
>s"a es la lis"a e valores e errores 7ue !uees usar en la variable >rror o 7ue en
alg?n momen"o "e !ueen a!arecer* "oma en cuen"a 7ue algunos e es"os errores LsoloM ocurren
en "iem!o e iseKo . varios e ellos LnoM !uees in"erce!"arlos* "an solo corregirlos en "u c5igo+
Cdi,os de error
!. *escripcin !. *escripcin
# >rror e sin"a;is no es!eci2icao %$ Permiso enegao
@ Ae"urn sin &osub %1 (isco no !re!arao
F Aes"aurar ese el !rinci!io %@ Pres"aci5n no im!lemen"aa
5 )lamaa a !roceimien"o no v<lia %F :m!osible cambiar nombre con unia
is"in"a
G (esboramien"o %5 >rror e acceso a ru"a1arc0ivo
% Memoria ago"aa %G Au"a no encon"raa
, Ma"riz .a imensionaa -1 6ariable e ob3e"o no e2inia
- Sunbnice 2uera e rango -@ /aena e secuencia no v<lia
1$ (e2inici5n u!licaa -F Uso e Null no v<lio
11 (ivisi5n !or cero @#@ :m!osible cargar m5ulo
1# 6ariable no e2inia @F1 Bnice e ob3e"o no v<lio
1@ (iscorancia e "i!o @GG No 0a. ocumen"o o vis"a ac"ivos
1F Par<me"ro no v<lio @,$ 6alor e !ro!iea incorrec"o
-# F+1$ /on"rol e errores
Cdi,os de error
!. *escripcin !. *escripcin
1, :n"erru!ci5n e usuario @,# Pro!iea e s5lo lec"ura
#$ /on"inuar sin error @-F Pro!iea e s5lo escri"ura
#, >s!acio e !ila ago"ao F#$ Ae2erencia e ob3e"o no v<lia
@5 Sub o 'unc"ion no e2inios F#@ Pro!iea o m4"oo no encon"raos
F, >rror al cargar ()) F#F Ob3e"o necesario
F- /onvenci5n e llamaa a ()) incorrec"a F#5 Uso e ob3e"o no v<lio
51 >rror in"erno F@$ )a clase no ami"e O)>
5# Nombre e arc0ivo o n?mero incorrec"os F@, >l ob3e"o no ami"e es"e m4"oo
5@ Arc0ivo no encon"rao FF$ >rror e au"oma"izaci5n O)>
5F Moo e arc0ivo incorrec"o FF5 >l ob3e"o no ami"e es"a acci5n
55 Arc0ivo .a abier"o FFG >l ob3e"o no ami"e argumen"os con
nombre
5% >rror e >1S e is!osi"ivo FF% >l ob3e"o no ami"e la con2iguraci5n e
en"orno local ac"ual
5, Arc0ivo .a e;is"en"e FF, Argumen"o mencionao no encon"rao
5- )ongi"u e regis"ro incorrec"a FF- Argumen"o no o!cional
G1 (isco lleno F5$ N?mero e argumen"os incorrec"o
G# >n"raa m<s all< el 2inal el arc0ivo F51 Ob3e"o no es una colecci5n
G@ N?mero e regis"ro incorrec"o F5# Orinal no v<lio
G% (emasiaos arc0ivos F5@ 'unci5n ()) es!eci2icaa no encon"raa
G, (is!osi"ivo no is!onible FG$ 'orma"o e !or"a!a!eles no v<lio
OOo Basic cuen"a con una ins"rucci5n 7ue com!lemen"a el uso e un con"rolaor e
errores* es"a ins"rucci5n es 8esume* b<sicamen"e "iene "res !osibles usos* e la !rimer 2orma*
nos !ermi"e regresar* es ecir* volver a in"en"ar e3ecu"ar la lnea 7ue !rovoco el error* !or
su!ues"o* es"o es recomenable .a 7ue se 0a.an corregio o a"enio las causas el error* !or
e3em!lo=
>7&+on Ex7l+*+&
"u. Man%)o/E''o'%s523
@+( sRu&a!'*h+8o !s "&'+ng
@+( +R%s !s #n&%g%'
>n E''o' Do&o $><HR>5!ERR>RE"
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Ex+& "u.
$><HR>5!ERR>RE"4
"%l%*& $as% E''
A!renieno OOo Basic -@
$as% 0
$as% 53
+R%s A MsgBox 2"<o s% %n*on&'o la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9
sRu&a!'*h+8o 9 $h'2133 9 $h'2133 9 "M@%s%as +n&%n&a'lo d% nu%8oN"6 32 B 4 3
#f +R%s A 6 Hh%n
%esume
End #f
$as% Els%
MsgBox ">*u''+o %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 /
$h'2133 9 "En la l+n%a " 9 E'l
End "%l%*&
>n E''o' Do&o 0
End "u.
Observa como en"ro el blo7ue one con"rolamos el error* !regun"amos al usuario
si esea volver a in"en"arlo=
$as% 53
+R%s A MsgBox 2"<o s% %n*on&'o la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9 sRu&a!'*h+8o 9 $h'2133
9 $h'2133 9 "ZM@%s%as +n&%n&a'lo d% nu%8oN"6 32 B 4 3
#f +R%s A 6 Hh%n
%esume
End #f
Si no 0aces lo an"erior* !uees 7uear en un bucle in2ini"o en"re la linea 7ue !rovoco
el error . el con"rolaor e errores+
)a seguna 2orma* usano 8esume /e't* "e !ermi"e con"inuar la e3ecuci5n e "u
c5igo en la lnea siguien"e a la 7ue !rovoco el error* !or e3em!lo=
"u. Man%)o/E''o'%s623
@+( sRu&a!'*h+8o !s "&'+ng
@+( +R%s !s #n&%g%'
>n E''o' Do&o $><HR>5!ERR>RE"
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Ex+& "u.
$><HR>5!ERR>RE"4
"%l%*& $as% E''
$as% 0
$as% 53
+R%s A MsgBox 2"<o s% %n*on&'o la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9
sRu&a!'*h+8o 9 $h'2133 9 $h'2133 9 "M@%s%as *on&+nua'N"6 32 B 4 3
#f +R%s A 6 Hh%n
%esume Next
End #f
$as% Els%
MsgBox ">*u''+o %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 /
$h'2133 9 "En la l+n%a " 9 E'l
End "%l%*&
>n E''o' Do&o 0
End "u.
A7u lo im!or"an"e es 7ue no"es como nos mues"ra el mensa3e e con2irmaci5n e
borrao* aun . cuano es"e no se 0izo e2ec"ivamen"e* "u "area es corregir eso+
)a ul"ima 2orma es usar la ins"rucci5n 8esumen !ombre$ti%ueta* en one
!ombre$ti%ueta "iene las mismas consieraciones vis"as al inicio e es"e "ema* e3em!lo=
"u. Man%)o/E''o'%s723
-F F+1$ /on"rol e errores
@+( sRu&a!'*h+8o !s "&'+ng
@+( +R%s !s #n&%g%'
>n E''o' Do&o $><HR>5!ERR>RE"
RE#<HE<H!R5>4
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Ex+& "u.
$><HR>5!ERR>RE"4
"%l%*& $as% E''
$as% 0
$as% 53
+R%s A MsgBox 2"<o s% %n*on&'o la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9
sRu&a!'*h+8o 9 $h'2133 9 $h'2133 9 "M@%s%as +n&%n&a'lo d% nu%8oN"6 32 B 4 3
#f +R%s A 6 Hh%n
%esume %$INT$NTA%&'
End #f
$as% Els%
MsgBox ">*u''+o %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 /
$h'2133 9 "En la l+n%a " 9 E'l
End "%l%*&
>n E''o' Do&o 0
End "u.
No e3es e observar la eclaraci5n e la e"i7ue"a corres!onien"e a one va a
sal"ar la ins"rucci5n Aesume* aun7ue el uso m<s com?n es reirigir a un seguno blo7ue one se
sale e la macro e 2orma con"rolaa* !or e3em!lo=
"u. Man%)o/E''o'%s823
@+( sRu&a!'*h+8o !s "&'+ng
>n E''o' Do&o $><HR>5!ERR>RE"
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
Do&o "!5#@!$><HR>5!@!
$><HR>5!ERR>RE"4
"%l%*& $as% E''
$as% 0
$as% 53
MsgBox "<o s% %n*on&'o la 'u&a %s7%*+f+*ada" 9 $h'2133 9 $h'2133 9
sRu&a!'*h+8o 9 $h'2133 9 $h'2133 9 "El 7'og'a(a &%'(+na'a"6 48
R%su(% "!5#@!$><HR>5!@!
$as% Els%
MsgBox ">*u''+o %l %''o' nu(%'o4 " 9 E'' 9 $h'2133 9 E''o' 9 /
$h'2133 9 "En la l+n%a " 9 E'l
End "%l%*&
>n E''o' Do&o 0

"!5#@!$><HR>5!@!4
,!Fu+ 8a &odo %l *od+go Fu% Fu+%'as6 7o' %)%(7lo
,*+%''% d% a'*h+8os ? .as%s d% da&os6 la +d%a
,%s sal+' d% fo'(a *on&'olada d% &u (a*'o
MsgBox ""% sald'a *o''%*&a(%n&%"
End "u.
No"a "ambi4n 7ue en vez e usar >;i" Sub* Lan"esM e la e"i7ue"a . c5igo e
con"rolaor e errores* usamos la ins"rucci5n Doto !ombre$ti%ueta* !ara sal"ar irec"amen"e a
A!renieno OOo Basic -5
la e"i7ue"a e salia+ >s"as o!ciones son solo varian"es* una vez m<s "u eciir<s 7ue es lo 7ue
me3or se acomoa a "u 2orma e "raba3ar . e razonar* la recomenaci5n es 7ue no abuses e los
sal"os con Aesume o &o"o* !or claria* limi"a"e en su uso lo m<s !osible+
Para "erminar es"e "ema* "e mues"ro o"ra ins"rucci5n !ara Lomi"irM errores* me re2iero
a la ins"rucci5n %n Error 8esume /e't* 7ue signi2ica ->n caso e error* con"inua el la siguien"e
lnea-* . se usa e la siguien"e manera=
"u. Man%)o/E''o'%s923
@+( sRu&a!'*h+8o !s "&'+ng
>n E''o' R%su(% <%x&
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"

End "u.
:n"en"emos con"rolar el error
"u. Man%)o/E''o'%s1023
@+( sRu&a!'*h+8o !s "&'+ng
>n E''o' R%su(% <%x&
sRu&a!'*h+8o A H'+(2#n7u&Box2"Es*'+.% la 'u&a d%l a'*h+8o a .o''a'"33
I+ll sRu&a!'*h+8o
#f E'' A 0 Hh%n
MsgBox "El a'*h+8o " 9 sRu&a!'*h+8o 9 " s% .o''o *o''%*&a(%n&%"
End #f
End "u.
No"aras 7ue no es !osible* no im!or"a el n?mero e errores 7ue sucean
"u. Man%)o/E''o'%s1123
@+( sRu&a!'*h+8o !s "&'+ng
>n E''o' R%su(% <%x&
E''o'223
E''o'233
E''o'243
E''o'253
E''o'263
#f E'' A 0 Hh%n
MsgBox "<o o*u''+o n+ngun %''o'"
End #f

End "u.
Puees "ener 3un"as una es!u4s e o"ra las os ins"rucciones !ara con"rolar
errores=
>n E''o' R%su(% <%x&
>n E''o' Do&o $><HR>5!ERR>RE"
Pero "enr< !rioria On >rror Aesume Ne;"* !or lo 7ue no es aconse3able* e
0ec0o* no "e recomieno el uso e On >rror Aesume Ne;" a menos 7ue es"4s seguro e lo 7ue
0aces+
-G F+11 6aliaci5n e a"os
).11 -alidacin de datos
/on la e;!eriencia "e ar<s cuen"a 7ue 0acer una macro o !rograma libre e errores
no es "ema menor . 7ue en"re m<s grane sea "u c5igo* la !robabilia e 7ue "enga errores
aumen"a consierablemen"e+ Una 2uen"e 2recuen"e e errores* son los a"os 7ue un usuario
alimen"a a un !rograma* !or su!ues"o* es nues"ra res!onsabilia como !rogramaores el
minimizar es"e "i!o e errores* es"o lo logramos 2il"rano los a"os 7ue el usuario alimen"a* es
ecir LvalianoM los a"os* no se "e olvie* -(3ID(/D% 3%S D(5%S* veras 7ue la valiaci5n e
a"os* consume bas"an"e lneas e c5igo* a veces* muc0as m<s 7ue el !roceso en si e es"os*
!or ello es un "ema mu. im!or"an"e en !rogramaci5n+ OOo Basic cuen"a con algunas 2unciones
7ue nos a.uan a valiar a"os* o"ras* "ienes 7ue !rogramar"elas (e ingenier"ales) "u mismo*
veamos algunas e ellas* !ero recuera 7ue son solo guas* !ues las o!ciones son "an"as . "an
variaas como !rogramaores las im!lemen"en+ Para el me3or a!rovec0amien"o e es"e "ema*
"ienes 7ue saber 7ue los lengua3es Basic son mu. nobles en al conversi5n e a"os e un "i!o a
o"ro* muc0as e es"as conversiones las !uee 0acer el lengua3e e 2orma irec"a* a es"a
conversi5n se se llama implCcita* !ero lo recomenable es 7ue noso"ros con"rolemos* siem!re
7ue sea !osible* es"as conversiones* a es"a 2orma se le llama e'plicita . nos a!o.amos en varias
2unciones e OOo Basic !ara 0acer es"as conversiones+
/omo sabes* la ins"rucci5n MsgBo;* es!era como !ar<me"ro Lre7uerioM un
argumen"o llamao Mensa3e e "i!o S"ring* es ecir* una caena e "e;"o+
MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String]
6eamos los siguien"es e3em!los=
>7&+on Ex7l+*+&
"u. M%nsa)%s123
@+( dJ%*ha !s @a&%
@+( +<u(%'o !s #n&%g%'
d+( .>7*+on !s Bool%an
dJ%*ha A @a&%"%'+al274616153
+<u(%'o A 2008
.>7*+on A H'u%
MsgBox dJ%*ha
MsgBox +<u(%'o
MsgBox .>7*+on
End "u.
Observa como* aun7ue le !asemos un n?mero o una 2ec0a o incluso un valor
booleano* la ins"rucci5n MsgBo; sigue "raba3ano* es"o es !or 7ue el lengua3e* 0ace in"ernamen"e
(e 2orma implCcita) una conversi5n e "i!os* mien"ras le sea !osible* convier"e el "i!o 7ue
reciba* a una caena e "e;"o (s"ring)* lo ieal* es 7ue noso"ros 0agamos es"a conversi5n e
2orma e;!lici"a* como en el siguien"e e3em!lo=
"u. M%nsa)%s223
@+( dJ%*ha !s @a&%
@+( +<u(%'o !s #n&%g%'
d+( .>7*+on !s Bool%an
dJ%*ha A @a&%"%'+al274616153
+<u(%'o A 2008
.>7*+on A H'u%
MsgBox (Str2 dJ%*ha 3
A!renieno OOo Basic -%
MsgBox (Str2 +<u(%'o 3
MsgBox (Str2 .>7*+on 3
End "u.
Observa como 0acemos uso e la 2unci5n CStr(valor) 7ue convier"e el "i!o e LvalorM
a una caena e "e;"o (S"ring)+ (e es"a 2orma* LcasiM !oemos es"ar seguros e 7ue no nos ar<
un error ines!erao+ OOo Basic cuen"a con 2unciones !ara conver"ir a la ma.ora e los "i!os e
variables !osibles=
Funcin *escripcin
/S"r(valor) /onvier"e a caena e "e;"o (S"ring)
/B."e(valor) /onvier"e a "i!o B."e
/:n"(valor) /onvier"e a "i!o en"ero (:n"eger)
/)ng(valor) /onvier"e a "i!o en"ero largo ()ong)
/Sng(valor) /onvier"e a "i!o sim!le (Single)
/(bl(valor) /onvier"e a "i!o oble ((ouble)
/Bool(valor) /onvier"e a "i!o booleano (Boolean)
/(a"e(valor) /onvier"e a "i!o 2ec0a ((a"e)
OOo Basic cuen"a con o"ras 2unciones 7ue nos a.uan a saber 7ue "i!o e a"o
"iene una variable* veamos las siguien"es=
/uano necesi"es saber si una variable con"iene un n?mero usamos Is/umeric=
>7&+on Ex7l+*+&
"u. Es<u(%'o23
@+( s@a&o !s "&'+ng
s@a&o A H'+(2 #n7u&Box2 "#n&'odu*% un nu(%'o" 3 3
#f IsNumeri)2 s@a&o 3 Hh%n
MsgBox "Es un nu(%'o"
Els%
MsgBox "<o %s un nu(%'o"
End #f
End "u.
/uano necesi"es saber si una variable con"iene una 2ec0a usamos IsDate=
"u. EsJ%*ha23
@+( s@a&o !s "&'+ng
s@a&o A H'+(2 #n7u&Box2 "#n&'odu*% una f%*ha" 3 3
#f Is*ate2 s@a&o 3 Hh%n
MsgBox "Es una f%*ha"
Els%
MsgBox "<o %s una f%*ha"
End #f
End "u.
O cuano necesi"es saber si una variable es una ma"riz usamos Is(rray=
-, F+11 6aliaci5n e a"os
"u. EsMa&'+:23
@+( (@a&o !s 1a'+an&
#f IsArra+2 (@a&o23 3 Hh%n
MsgBox "Es una (a&'+:"
Els%
MsgBox "<o %s una (a&'+:"
End #f

(@a&o A !''a?21626364653

#f IsArra+2 (@a&o23 3 Hh%n
MsgBox "Es una (a&'+:"
Els%
MsgBox "<o %s una (a&'+:"
End #f
End "u.
6eamos algunos e3em!los e valiaciones comunes* como icen en mi !ueblo -ni
son "oas las 7ue es"<n* ni es"<n "oas las 7ue son-* solo !re"eno 7ue "e sea e re2erencia . las
aa!"es . com!lemen"es a "us necesiaes+
Obligamos al usuario a in"roucir un a"o* el 7ue sea* la ?nica conici5n es 7ue no
sea una caena vaca=
"u. 1al+da'123
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% los da&os"3 3
#f s@a&o XY "" Hh%n
."al+' A H'u%
End #f
5oo7 Cn&+l ."al+'
End "u.
cabr<s observao en el e3em!lo an"erior* 7ue aun cuano el usuario !resione
/ancelar* e "oos moos no le 0acemos caso . lo obligamos a in"roucir un a"o* si bien lo
!oemos 0acer* no es com?n* lo 0abi"ual es !ro!orcionar siem!re al usuario una 2orma e
cancelar un !roceso=
"u. 1al+da'223
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% los da&os"3 3
#f s@a&o XY "" Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
."al+' A H'u%
Els%
+R%s A MsgBox2 "0a'%*% Fu% no %s*'+.+s&% nada6 M@%s%as sal+'N"6 32 B 46 ""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
A!renieno OOo Basic --
A0ora* obligamos al usuario a in"roucir una caena e "e;"o* 7ue LnoM sea n?mero ni
2ec0a=
"u. 1al+da'323
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% los da&os"3 3
#f s@a&o XY "" Hh%n
#f <o&2#s@a&%2s@a&o33 !nd <o&2#s<u(%'+*2s@a&o33 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
MsgBox "Es una *ad%na" 9 $h'2133 9 $h'2133 9 s@a&o
."al+' A H'u%
Els%
MsgBox "1alo' <> 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no %s*'+.+s&% nada6 M@%s%as sal+'N"6 32 B 46 ""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
eue solo in"rouzca n?meros=
"u. 1al+da'423
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% un nu(%'o"3 3
#f s@a&o XY "" Hh%n
#f #s<u(%'+*2s@a&o3 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
MsgBox "Es un nu(%'o" 9 $h'2133 9 $h'2133 9 s@a&o
."al+' A H'u%
Els%
MsgBox "1alo' <> 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no %s*'+.+s&% nada6 M@%s%as sal+'N"6 32 B 46 ""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
eue in"rouzca una 2ec0a=
"u. 1al+da'523
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% una f%*ha"3 3
#f s@a&o XY "" Hh%n
#f #s@a&%2s@a&o3 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
MsgBox "Es una f%*ha" 9 $h'2133 9 $h'2133 9 s@a&o
1$$ F+11 6aliaci5n e a"os
."al+' A H'u%
Els%
MsgBox "1alo' <> 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no *a7&u'as&% nada6 M@%s%as sal+'N"6 32 B 46
""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
Un n?mero* con un rango e2inio* igamos* en"re 5$ . 1$$=
"u. 1al+da'623
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% un nu(%'o"3 3
#f s@a&o XY "" Hh%n
#f #s<u(%'+*2s@a&o3 !nd 1al2s@a&o3YA50 !nd 1al2s@a&o3XA100 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
MsgBox "Es un nu(%'o6 %n %l 'ango 50T100" 9 $h'2133 9 $h'2133 9 s@a&o
."al+' A H'u%
Els%
MsgBox "1alo' <> 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no *a7&u'as&% nada6 M@%s%as sal+'N"6 32 B 46
""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
Una 2ec0a 7ue no sea 2ec0a 2u"ura=
"u. 1al+da'723
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% una f%*ha"3 3
#f s@a&o XY "" Hh%n
#f #s@a&%2s@a&o3 Hh%n
#f $@a&%2s@a&o3 XA @a&%23 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
MsgBox "Es una f%*ha 8al+da" 9 $h'2133 9 $h'2133 9 s@a&o
."al+' A H'u%
Els%
MsgBox "Es una f%*ha fu&u'a"
End #f
Els%
MsgBox "1alo' <> 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no *a7&u'as&% nada6 M@%s%as sal+'N"6 32 B 46
""al+'" 3
A!renieno OOo Basic 1$1
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
>l siguien"e e3em!lo es mu. iver"io* le !eimos al usuario 7ue in"rouzca solo
vocales* !ero .a sabes como son los usuarios* seguro ca!"uran lo 7ue se les a la gana* as 7ue
2il"raremos su "e;"o* e3ano solo las vocales=
"u. 1al+da'823
@+( s@a&o !s "&'+ng
@+( ."al+' !s Bool%an
@+( +R%s !s #n&%g%'
@+( *o1 !s #n&%g%'
@+( s5%&'a !s "&'+ng
@+( sH(7 !s "&'+ng
@+( 7os !s #n&%g%'
@o
s@a&o A H'+(2 #n7u&Box2"#n&'odu*% solo 8o*al%s"3 3
#f s@a&o XY "" Hh%n
#f <o&2#s@a&%2s@a&o33 !nd <o&2#s<u(%'+*2s@a&o33 Hh%n
,!Fu+ 8a &u *od+go 7a'a (an+7ula' los da&os
Jo' *o1 A 1 Ho 5%n2s@a&o3
,Ho(a(os una 7o' una *ada l%&'a *a7&u'ada
s5%&'a A M+d2s@a&o6*o1613
,!8%'+gua(os s+ %s una 8o*al (a?us*ula o (+nus*ula
7os A #n"&'216"a%+ou!E#>C"6s5%&'a3
,"+ %n*u%n&'a la l%&'a %n la l+s&a d% 8o*al%s #n"&' &%
,d%8u%l8% la 7os+*+on6 *on Fu% s%a (a?o' a *%'o sa.%(os
,Fu% ha s+do %n*on&'ada
#f 7os Y 0 Hh%n
sH(7 A sH(7 9 s5%&'a
End #f
<%x&
MsgBox sH(7
."al+' A H'u%
Els%
MsgBox "1alo' no 8al+do"
End #f
Els%
+R%s A MsgBox2 "0a'%*% Fu% no *a7&u'as&% nada6 M@%s%as sal+'N"6 32 B 46
""al+'" 3
#f +R%s A 6 Hh%n
."al+' A H'u%
End #f
End #f
5oo7 Cn&+l ."al+'
End "u.
No 7uiero 7ue se "e olvie* la -(3ID(CI%/ e los a"os 7ue in"rouce el usuario es
Lmu. im!or"an"eM . si con3ugas es"o con el con"rol e errores* "e aseguro 7ue !or<s minimizar el
riesgo e 2allos en "us a!licaciones* sino un 1$$U* si en un !orcen"a3e bas"an"e al"o+
Si "ienes una valiaci5n in"eresan"e . 7ue es"e al nivel b<sico 7ue venimos
mane3ano* !uees envi<rmela !ara incluirla a7u o en su e2ec"o* si "ienes !roblemas con alguna
valiaci5n* !lan"eala en las lis"as e correo . si es lo su2icien"emen"e ilus"ra"iva* "ambi4n la
incluiremos a7u+
VV'eliz !rogramaci5nWW
1$# F+11 6aliaci5n e a"os
).12 El IDE 7 Muc"o mFs que un editor
A es"as al"uras .a 0abr<s no"ao la gran u"ilia el :(>* "e colorea las !alabras
e!enieno e su con"e;"o . "e mues"ra mensa3es !reven"ivos o e error siem!re 7ue sea
!osible* en es"e ca!i"ulo* veremos algunas o"ras carac"ers"icas el :(> 7ue nos !ueen a.uar a
e!urar nues"ras macros* en"enieno !or e!urar* las "4cnicas 7ue nos a.uan a encon"rar m<s
2<cilmen"e un error* sobre "oo* l5gico* 7ue son* a veces* los m<s com!licaos e encon"rar+
Para em!ezar emos un re!aso a nues"ro cen"ro e "raba3o* es ecir* al :(> . sus
i2eren"es !ar"es=
1+ Barra e "i"ulo
#+ Barra e men?s
@+ Barras e 0erramien"as
F+ 6en"ana e eici5n
5+ 6en"ana e observaor
G+ 6en"ana e llamaas
%+ Barra e es!lazamien"o e m5ulos . i<logos
,+ Barra e es"ao
A!renieno OOo Basic 1$@
Algunas e es"as .a "e ser<n mu. 2amiliares* o"ras son nuevas !ero las veremos en
es"e ca!i"ulo+ /omo .a mencionamos* el :(>* es solo o"ra a!licaci5n e O!enO22ice+org* 7ue nos
!ermi"e crear . ei"ar nues"ras macros* la barra e "i"ulo . la e men?s es consis"en"e con las
em<s a!licaciones 7ue in"egran la a!licaci5n* !or lo 7ue no las veremos a7u* )as barras e
0erramien"as las veremos a con"inuaci5n=
)a !rimer barra e 0erramien"as se llama MacroBar* !or lo 7ue su!ongo 7ue en
cas"ellano ser<* Barra e macros* .a 7ue el nombre no a!arece en su barra e "i"ulo* como si lo
0ace en la ma.ora e las barras e 0erramien"as=
>l !rimer con"rol 7ue es un cuaro e lis"a es!legable (con"rol /omboBo;) "e
!ermi"e seleccionar el arc0ivo 7ue es"e abier"o . la biblio"eca 7ue 7uieras ei"ar=
1$F F+1# >l :(> f Muc0o m<s 7ue un ei"or
Observa como la !rimer o!ci5n es Toos* si seleccionas es"a o!ci5n* en la barra e
es!lazamien"o e m5ulos* "e mos"rara L"oosM los m5ulos . i<logos e "oos los arc0ivos
abier"os* as como el arc0ivo es!ecial Mis macros . los in"egraos en O!enO22ice+org* !or lo 7ue
es"a o!ci5n "e !ora llegar a mos"rar varias ecenas e m5ulos e!enieno e cuan"os
arc0ivos "engas abier"os . e cuan"os m5ulos "engas con c5igo+
>l res"o e los bo"ones son los siguien"es=
1+ :cono e com!ilar= Me gus"ara muc0o 7ue el c5igo e nues"ras macros se
!uiese com!ilar* 7ue es lo 7ue se su!one 0ace es"e icono* !ero en mis !ruebas no veo
ninguna i2erencia* si "u la vez o la sabes* com!<r"ela conmigo+
#+ :cono e e3ecu"ar= >s"e icono e3ecu"a LsoloM la !rimer macro el m5ulo ac"ivo*
!ero .a vimos las "4cnicas !ara e3ecu"ar las em<s macros* e7uivale a !resionar la "ecla
'5+
@+ :cono e e"ener macro= Solo es"a ac"ivo cuano e3ecu"amos una macro*
normalmen"e se usa en con3unci5n con los iconos F . 5+
F+ :cono !asar al siguien"e= Permi"e e3ecu"ar lnea a lnea el c5igo e nues"ra
macro* mu. ?"il !ara e!urar . encon"rar errores* normalmen"e se usa 3un"o con el
LObservaorM !ara encon"rar errores* e7uivale a !resionar la "ecla ',
5+ :cono en"rar en el !roceso= Aealiza la misma acci5n el icono F* los iconos F .
5* solo se e3ecu"an en la !rimer macro el moulo ac"ivo* !or lo 7ue !ara e!urar macros*
es me3or usar L!un"os e ru!"uraM* "e as cuen"a 7ue lnea es la siguien"e a e3ecu"ar !or una
2lec0a amarilla en el margen iz7uiero el ei"or+
A!renieno OOo Basic 1$5
G+ :cono salir e !roceso= /uano e3ecu"amos una macro lnea !or lnea* es"e
icono nos !ermi"e con"inuar la e3ecuci5n e la macro normalmen"e* e7uivale a !resionar la
"ecla '5+
%+ :cono e ac"ivar1esac"ivar !un"os e ru!"ura= Un !un"o e ru!"ura es una
LseKalM 7ue le inica al :(> 7ue e"enga la e3ecuci5n en la linea inicaa !or un !un"o ro3o
en el margen iz7uiero e nues"ro ei"or* con es"e icono ac"ivamos (mos"ramos) .
esac"ivamos (ocul"amos) los !un"os ro3os 7ue son !un"os e ru!"ura en la lnea ac"ual
one es"e el cursor e escri"ura* recuera 7ue el cursor e escri"ura es la ra.a ver"ical
negra e "oo ei"or e "e;"o* "ambi4n !uees ac"ivar . esac"ivar !un"os e ru!"ura con la
"ecla '- o ano un oble clic en la lnea 7ue 7uieras* !ero mu. im!or"an"e* en"ro el
margen iz7uiero el ei"or+ Observa en la siguien"e imagen los !un"os ro3os+
,+ :cono ges"ionar !un"os e ru!"ura= Nos !ermi"e aminis"rar los !un"os e
ru!"ura e;is"en"es en nues"ro moulo ac"ual* es ecir* nos !ermi"e agregar* eliminar o
esac"ivar !un"os e ru!"ura en un cuaro e ialogo+ /aa !un"o e ru!"ura es"ar<
inicao !or la lnea en one se encuen"re . !or<s seleccionar . esac"ivar el !un"o 7ue
7uieras* con lo cual el !un"o ro3o !asar< a ser un !un"o gris* "ambi4n !uee eliminar el
!un"o e in"erru!ci5n 7ue 7uieras "an solo seleccion<nolo . !resionano el bo"5n >liminar*
as mismo* !uees agregar el 7ue 7uieras* "an solo inicano el numero e lnea one
eseas es"ablecerlos . !resionar el bo"5n nuevo* !ero lo me3or es agregar los !un"os ese
el ei"or* e;ac"amen"e en la lnea 7ue 7uieras+
1$G F+1# >l :(> f Muc0o m<s 7ue un ei"or
-+ :cono e 0abili"ar ins!ecci5n= Permi"e agregar la variable seleccionaa a la
ven"ana e observaor !ara visualizar el valor e ic0a variable uran"e la e3ecuci5n e
una macro* es"a ven"ana normalmen"e se usa e3ecu"ano la macro lnea a lnea (',) o 3un"o
con !un"os e ru!"ura !ara !oer observar el valor e las variables* m<s aelan"e veremos
a e"alle es"a 0erramien"a
1$+ :cono e buscar !ar4n"esis= /on el cursor e escri"ura !osicionao Lan"esM e
un !ar4n"esis e a!er"ura o cierre* nos !ermi"e seleccionar "oo el "e;"o en"ro e ic0os
!ar4n"esis e inclu.eno los !ar4n"esis* mu. ?"il sobre "oo en 2unciones aniaas one se
!ieren los !ar4n"esis+
11+ :cono e inser"ar c5igo Basic= Permi"e* a !ar"ir e un arc0ivo e "e;"o
(normalmen"e con e;"ensi5n BAS) inser"ar el c5igo Basic 7ue con"engo en el moulo
ac"ual en la !osici5n el cursor e escri"ura ac"ual+
1#+ :cono e guarar c5igo Basic= Nos !ermi"e e;!or"ar a un arc0ivo e "e;"o con
e;"ensi5n BAS el c5igo seleccionao o "oo el moulo si no 0a. naa seleccionao+
)a siguien"e barra e 0erramien"as se llama >s"<nar* . es mu. similar a la ma.ora
e las barras es"<nar e las em<s a!licaciones* "e !ermi"e abrir* guarar* im!rimir* co!iar*
!egar* e"c* !or lo 7ue no veremos a7u es"as o!ciones* salvo !or los "res iconos siguien"es solo
is!onibles en el :(>+
1+ :cono ca"alogo e ob3e"os= Nos mues"ra un cuaro e ialogo 7ue nos !ermi"e
navegar en 2orma e <rbol en"re los arc0ivos abier"os . en"ro e sus biblio"ecas* m5ulos
. macros is!onibles* con un oble clic sobre la macro seleccionaa nos lleva a ella o
usano el bo"5n Mos"rar (circulo ro3o en la imagen)=
A!renieno OOo Basic 1$%
#+ :cono e seleccionar macro= Nos mues"ra un cuaro e ialogo !ara
aminis"rar nues"ras macros* nos !ermi"e "ambi4n navegar en"re los arc0ivos abier"os* sus
biblio"ecas . sus m5ulos* !or a0ora* !rinci!almen"e la 0emos usaos !ara e3ecu"ar la
macro 7ue 7ueramos* !ero "ambi4n !oemos ei"ar . eliminarlas* una o!ci5n mu.
in"eresan"e . !oerosa es LAsignarM una macro* 7ue se ver< m<s aelan"e+
1$, F+1# >l :(> f Muc0o m<s 7ue un ei"or
@+ :cono seleccionar moulo= Nos mues"ra un cuaro e ialogo 7ue nos !ermi"e
aminis"rar m5ulos* i<logos . biblio"ecas* agregarlos . eliminarlos en"re o"ras o!ciones
como agregar una con"raseKa a una biblio"eca+

Observa la llave al lao iz7uiero e mi&iblioteca 7ue nos inica 7ue es"a biblio"eca
"iene es"ablecia una con"raseKa !ara su visualizaci5n* la cual "e solici"ara si in"en"as ei"arla+
6eamos a0ora como nos !ueen a.uar los !un"os e ru!"ura* la e3ecuci5n lnea a
lnea* la ven"ana e observaor . la ven"ana e llamaas a e!urar nues"ras macros+ Puees usar
cual7uier macro e las 7ue 0a.amos esarrollao en es"os a!un"es o cual7uiera 7ue "engas* lo
im!or"an"e es seguir la secuencia correc"a e los !asos siguien"es* !or e3em!lo* el siguien"e
A!renieno OOo Basic 1$-
c5igo* co!ialo en la !ar"e su!erior e cual7uier m5ulo* es ecir* asegura"e e 7ue sea la
L!rimerM macro e ic0o m5ulo e c5igo=
>7&+on Ex7l+*+&
,$ons&'u+(os un s%udoTRJ$6 %l RJ$ %s un da&o 7%'sonal ? un+*o %n M%x+*o ? d+go s%udo
,7o' Fu% no %s &an s+(7l% *o(o lo 7ongo aFu+6 7%'o nos s+'8% (u? .+%n d% %)%(7lo
,0'+(%'as dos l%&'as d%l a7%ll+do 7a&%'no
,0'+(%'a l%&'a d%l a7%ll+do (a&%'no
,0'+(%'a l%&'a d%l no(.'%
,!\o d% na*+(+%n&o d% dos d+g+&os
,M%s d% na*+(+%n&o d% dos d+g+&os
,@+a d% na*+(+%n&o d% dos d+g+&os
"u. >.&%n%'RJ$123
@+( s<o(.'% !s "&'+ng
@+( d<a*+(+%n&o !s @a&%
@+( 7os1 !s B?&%6 7os2 !s B?&%
@+( RJ$ !s "&'+ng
,1a(os a su7on%' Fu% *a7&u'a(os un no(.'% %s&anda' <o(.'% 0a&%'no Ma&%'no
,7o' %)%(7lo 1an%ssa Bau*h% $ha8+'a
s<o(.'% A H'+(2 #n7u&Box2 "Es*'+.% &u no(.'% *o(7l%&o"6 "<o(.'%" 33
,1a(os a su7on%' una f%*ha *o''%*&a6 7o' aho'a no ha'%(os 8%'+f+*a*+on
,>[> solo 7o' aho'a6 as+ Fu% 7'u%.a f%*has *o''%*&as
d<a*+(+%n&o A $@a&%2 #n7u&Box2 "!ho'a &u f%*ha d% na*+(+%n&o"6 "J%*ha" 33
,En*on&'a(os la 7os+*+on d%l 7'+(%' %s7a*+o
7os1 A #n"&'216s<o(.'%6" "3
,En*on&'a(os la 7os+*+on d%l s%gundo %s7a*+o
7os2 A #n"&'27os1B16s<o(.'%6" "3
RJ$ A C$as%2 M+d2s<o(.'%67os1B1623 9 M+d2s<o(.'%67os2B1613 9 M+d2s<o(.'%61613 3 9 /
R+gh&2$"&'2O%a'2d<a*+(+%n&o33623 9 Jo'(a&2Mon&h2d<a*+(+%n&o36"00" 3 9 /
Jo'(a&2@a?2d<a*+(+%n&o36"00" 3
,Mos&'a(os %l RJ$ *ons&'u+do
MsgBox RJ$
End "u.
Tienes 7ue ser mu. observaor* !resiona la "ecla '5* !or su!ues"o nues"ra macro se
e3ecu"ara e 2orma normal* ca!"ura los a"os solici"aos correc"amen"e . veri2ica 7ue el resul"ao
sea el es!erao+ A0ora* !resiona ',* no"a como a!arece una 2lec0a amarilla en el margen
iz7uiero e nues"ro ei"or* em!ezano !or la !rimer lnea e nues"ra macro* con"inua
!resionano ', . no"a como la 2lec0a amarilla va avanzano lnea !or lnea en nues"ro c5igo*
con"inua as 0as"a "erminar e e3ecu"ar la macro+
11$ F+1# >l :(> f Muc0o m<s 7ue un ei"or
6uelve a em!ezar !resionano ',* !ero a0ora* e"en"e e;ac"amen"e en la lnea
siguien"e* 7ue si co!ias"e el c5igo an"erior* "iene 7ue ser la lnea #, a!ro;imaamen"e+
RJ$ A C$as%2 M+d2s<o(.'%67os1B1623 9 M+d2s<o(.'%67os2B1613 9 M+d2s<o(.'%61613 3 9 /
R+gh&2$"&'2O%a'2d<a*+(+%n&o33623 9 Jo'(a&2Mon&h2d<a*+(+%n&o36"00" 3 9 /
Jo'(a&2@a?2d<a*+(+%n&o36"00" 3
Posiciona el cursor sobre caa una e las variables sNombre* Nacimien"o* !os1*
!os# . A'/* I7ue no"asJ* mu. bien* mu. bien* observa como el :(> nos mues"ra el valor
almacenaos en caa una e las variables en un !e7ueKo cuaro e "e;"o amarillo 7ue
esa!arece en cuan"o movemos el cursor+ No es"a e m<s aclarar"e 7ue la imagen siguien"e es"a
ei"aa !ara mos"rar"e el valor e "oas la variables+
Tambi4n observa 7ue* mien"ras es"as e3ecu"ano el c5igo lnea !or lnea* en
cual7uier momen"o !uees con"inuarla e 2orma normal !resionano '5 o e !lano e"ener la
macro con el bo"5n (e"ener Macro o !resionano /"rlRS0i2"Re+
/on 3us"a raz5n "e !regun"aras* Ies"o no es mu. !rac"ico cuano "enemos ecenas
e variablesJ O si* "enr<s raz5n* a0ora !ara ello* !ara ver el valor e las variables* usaremos la
ven"ana el observaor e la siguien"e manera+ Selecciona una variable . !resiona el icono
Lcabili"ar ins!ecci5nM o !resiona la "ecla '% 7ue "iene el mismo e2ec"o* re!i"e es"e !roceso con
"oas las res"an"es variables . ve observano como en la ven"ana el observaor se van lis"ano
las variables+
A!renieno OOo Basic 111
A0ora* vuelve a e3ecu"ar la macro !aso a !aso* es ecir* lnea a lnea . ve
observano la ven"ana e ins!ecci5n* al llegar a la lnea one cons"ruimos el A'/* "ienes 7ue
ver algo mu. similar a=
Mira 7ue lino* "enemos el valor e "oas nues"ras variables* aem<s* "e mues"ra el
"i!o e variable 7ue es* !or su!ues"o si es"as variables cambian su valor en el "ranscurso e
e3ecuci5n e nues"ra macro* es"os cambios los !or<s ir analizano en la ven"ana el observaor*
0e a0 su im!or"ancia* una 2recuen"e 2uen"e e errores* es !recisamen"e 7ue en ocasiones al
!rocesar los a"os "an r<!io* !uee ser 7ue una variable no "enga o no ob"enga los a"os 7ue
necesi"amos+
O surge una nueva !regun"a* I"enemos 7ue e3ecu"ar nues"ro c5igo lnea a lnea
!ara !oer ver los valores e las variablesJ* I. si "enemos ecenas o cen"enas e lneas e
c5igoJ* mu. buena !regun"a* veo 7ue eres un alumno a"en"o* !ara es"os casos* en vez e
e3ecu"ar nues"ro c5igo lnea a lnea* usaremos !un"os e in"erru!ci5n* 7ue* como vimos m<s
a"r<s* son seKales 7ue le e3amos al :(> !ara 7ue se e"enga en la lnea inicaa+ Para
agregarlos usamos el icono Lac"ivar1esac"ivar !un"os e ru!"uraM o !resionamos la "ecla '-* !ero*
Lmu. im!or"an"eM* !rimero !osicionamos el cursor sobre la lnea one nos in"erese es"ablecer el
!un"o e in"erru!ci5n+ Agrega un !un"o e in"erru!ci5n en la linea one cons"ruimos el A'/ e
moo 7ue "e 7uee e la siguien"e manera=
11# F+1# >l :(> f Muc0o m<s 7ue un ei"or
Observa como aun "enemos las variables en la ven"ana el observaor* a0ora*
e3ecu"a la macro con '5 . observa como es!u4s e alimen"ar los a"os* el c5igo se e"iene
e;ac"amen"e en la lnea 7ue es"ablecimos+
A0ora* !uees con"inuar e3ecu"ano lnea a lnea (',) o con"inuar normalmen"e ('5)*
!uees es"ablecer "an"os !un"os e in"erru!ci5n como 7uieras o necesi"es+ )as variables 7ue
agregues a la ven"ana el observaor . los !un"os e in"erru!ci5n 7ue es"ablezcas* solo es"ar<n
is!onibles en "u sesi5n ac"ual* si cierras "u arc0ivo los !erer<s+ >n cual7uier momen"o !uees
7ui"ar los !un"os e in"erru!ci5n con '- sobre la lnea one es"a el !un"o e in"erru!ci5n o las
variables e la ven"ana el observaor* solo selecciona la variable 7ue 7uieras 7ui"ar en la
ven"ana el observaor . la eliminas e es"a con el icono 7ue es"a inmeia"amen"e encima e
es"as+
Para "erminar es"e "ema "an iver"io* veamos !ara 7ue sirve la ven"ana e llamaas
. veamos como la ven"ana e observaor "ambi4n nos !uee mos"rar el valor e una ma"riz e
a"os* !ara es"o* moi2ica el c5igo an"erior !ara iviirlo en una subru"ina . en una 2unci5n* e
moo 7ue 7uee e la siguien"e manera=
>7&+on Ex7l+*+&
"u. >.&%n%'RJ$223
@+( s<o(.'% !s "&'+ng
@+( d<a*+(+%n&o !s @a&%
@+( RJ$ !s "&'+ng
@+( (@a&os223 !s "&'+ng

,>.&%n%(os los da&os
s<o(.'% A H'+(2 #n7u&Box2 "Es*'+.% &u no(.'% *o(7l%&o"6 "<o(.'%"6"1an%ssa Bau*h% $ha8+'a" 33
d<a*+(+%n&o A $@a&%2 #n7u&Box2 "!ho'a &u f%*ha d% na*+(+%n&o"6 "J%*ha"6 "15/01/74" 33
,5os 7'o*%sa(os
$all >.&%n%'#n+*+al%s2 s<o(.'%6 (@a&os23 3
RJ$ A [o+n2(@a&os236""3
RJ$ A RJ$ 9 J%*haRJ$2 d<a*+(+%n&o 3
,Mos&'a(os %l '%sul&ado
MsgBox RJ$
End "u.
"u. >.&%n%'#n+*+al%s2B?1al <o(.'% !s "&'+ng6 (@a&os3
@+( 7os1 !s B?&%6 7os2 !s B?&%
A!renieno OOo Basic 11@
7os1 A #n"&'216<o(.'%6" "3
7os2 A #n"&'27os1B16<o(.'%6" "3
(@a&os203AC$as%2M+d2<o(.'%67os1B16233
(@a&os213AC$as%2M+d2<o(.'%67os2B16133
(@a&os223AC$as%2M+d2<o(.'%616133
End "u.
Jun*&+on J%*haRJ$2B?1al <a*+(+%n&o !s @a&%3 !s "&'+ng

J%*haRJ$A R+gh&2$"&'2O%a'2<a*+(+%n&o33623 9 /
Jo'(a&2Mon&h2<a*+(+%n&o36"00" 3 9 /
Jo'(a&2@a?2<a*+(+%n&o36"00" 3
End Jun*&+on
>3ecu"a el c5igo !rimero ('5) !ara veri2icar 7ue ob"enemos los resul"aos
es!eraos* es!u4s agrega la variable m(a"os a la ven"ana el observaor ('%) . e3ecu"a el
c5igo !aso a !aso (',)* e"en"e en la !rimer lnea one a!arece la variable sNombre* !ara
"ener algo mu. similar a la siguien"e imagen=
Tal vez en la ven"ana el observaor "enr<s 7ue arle un clic al smbolo el signo
m<s a la iz7uiera el nombre e la variable !ara 7ue "e es!liegue el con"enio e la ma"riz* 7ue*
en es"a caso* es"a vaca+ /on"inua e3ecu"ano !aso a !aso (',) . e"en"e en=
11F F+1# >l :(> f Muc0o m<s 7ue un ei"or
Aei"ero* "ienes 7ue ser mu. observaor* no"a como al llegar a la lnea one
llamamos a la subru"ina* el c5igo sal"a a ic0a subru"ina . mu. im!or"an"e* observa la ven"ana e
llamaas como "e mues"ra el nombre e la subru"ina . aem<s* los valores 7ue se le es"<n
!asano* mu. ?"il !ara saber si es"amos es"ablecieno correc"amen"e los valores+ /on"inua la
e3ecuci5n !aso a !aso . e"en"e en=
Observa como a0ora la ma"riz .a "iene a"os . es"os se mues"ran en la ven"ana el
observaor+ /on"inua !aso a !aso 0as"a el inicio e la 2unci5n 'ec0aA'/ . observa la ven"ana e
llamaas 7ue una vez m<s mues"ra la 2unci5n . sus valores !asaos=
Termina la e3ecuci5n e la macro ('5) . observa 7ue la !ila e llamaas se vaca* as
como el valor e las variable en la ven"ana el observaor+ O sin 7uerer 7uerieno imos un breve
re!aso a varios "emas vis"os an"eriormen"e+ No se "e olvie 7ue las "eclas '5 . ', solo "ienen
e2ec"o en la !rimer macro eclaraa en el moulo ac"ivo* !ara e3ecu"ar !aso a !aso o"ras macros*
es"ablece !rimero un !un"o e ru!"ura en la linea 7ue "e in"erese en"ro e ic0a macro . es!u4s
e3ecu"as la macro e 2orma normal !ara 7ue se e"enga en el !un"o e ru!"ura es"ablecio* a
!ar"ir e a0 .a !uees usar ', !ara con"inuar !aso a !aso+++
No me res"a m<s 7ue ecir"e* !rac"ica muc0o* "an"o como !ueas
VV'eliz !rogramaci5nWW
A!renieno OOo Basic 115
! 5rabajando con %pen%22ice.or*
A mi 3uicio* en"ener como es"a cons"ruio O!enO22ice+org* es la i2erencia en"re
a!rovec0ar "oo el !o"encial 7ue "iene OOo Basic o !erer"e en un laberin"o in2ran7ueable !or
anar buscano Hsimili"uesH con Ho"rosH !rogramas+ Tal vez !ecano e un e;cesivo
reuccionismo* O!enO22ice+org es un )>&O* el 2amoso 3uego e cons"rucci5n con !iezas e
!l<s"ico* 7ue si no sabes 7ue es* "e es"as !erieno e un maravilloso 3uego+ /aa !ieza el
)>&O es un !ieza com!le"a* !ero 7ue se !uee embonar !er2ec"amen"e bien con miles e !iezas
m<s !ara HarmarH . HcrearH nuevos com!onen"es* eso es O!enO22ice+org !recisamen"e* es"a ivio
en una 2ini"a . conocia can"ia e !ar"es* a caa una e es"as !ar"es* le !oemos llamar
Hob3e"oH* !ero en el lengua3e e O!enO22ice+org se le enomina HservicioH* 7ue no se "e olvie
HservicioH* .a 7ue es"e sera el nombre 7ue usaremos e a7u en aelan"e* a su vez* es"os
HserviciosH se organizan en Hm5ulosH* !ero o3o* no con2unas es"os Hm5ulosH* con los vis"os en
el ca!i"ulo #* e 0ec0o* es"a 2orma e organizaci5n no "iene ma.or relevancia !ara los 7ue
!rogramamos en OO Basic* no as !ara los 7ue usan o"ros lengua3es con O!enO22ice+org (iava*
/RR* e"c+)* as 7ue solo como conocimien"o recueralo . concen"ra"e en los HserviciosH+ A su vez*
es"os Hservicios/* !ueen con"ener o"ros Hservicios/* !or lo 7ue si sabes usar un Hservicio/ .
es"e es"a im!lemen"ao en o"ro com!onen"e* !uees a!licar "us conocimien"os e es"e Hservicio/
en el nuevo com!onen"e sin ning?n !roblema+ >n O!enO22ice+org* a "rav4s e OOo Basic* 0a.
2orma e saber 7ue Hservicios/ im!lemen"a un com!onen"e* lo cual* !or su im!or"ancia . !or la
2al"a e ocumen"aci5n en es!aKol es lo 7ue "ra"aremos e a!rener a 0acer e la me3or 2orma*
"ambi4n* !ara 7ue recueres 7ue Hno 0a. 7ue es"ar aivinanoH naa* sabieno H!regun"arH lo
correc"o . consul"ano el lugar correc"o* !oemos !ro2unizar 5!"imamen"e en las en"raKas e
O!enO22ice+org* mi !ro!5si"o en es"e ca!i"ulo* es enseKar"e a H!regun"arleH a los HserviciosH la
in2ormaci5n necesaria !ara !onerlos a "raba3ar+
/%5( M:M IM+%85(/5E
Te sugiero am!liamen"e* no con"inuar con los siguien"es ca!"ulos* 0as"a no 0aber
com!renio cabalmen"e es"e* as mismo* o. !or sen"ao 7ue no "ienes uas e lo vis"o .
e;!licao en ca!"ulos an"eriores* se 7ue mis 0erramien"as !eag5gicas no son las me3ores* !ero
es"o. en la me3or is!osici5n e a.uar"e a resolver "us uas* as 7ue ana* si "ienes alguna*
vuelve a leer el "ema* si aun 7uea alguna* envame lo mas claramen"e !osible* 7ue es lo 7ue no
7uea claro* !or su!ues"o* si "ienes alg?n a!or"e !ara a.uar a "rans!aren"ar es"e "ema* no e3es
e mencionarlo+
11G 5 Traba3ano con O!enO22ice+org
!.1 Mis macros 7 un arc"i,o especial.
cas"a a0ora* la ma.ora e las macros 7ue 0emos esarrollao . !robao* las
0emos escri"o Len"roM e un ocumen"o e O!enO22ice+org* si 0as seguio es"as no"as ese el
inicio* !ro!usimos un arc0ivo e /alc* aun7ue mu. bien !uis"e 0aber usao un arc0ivo e Nri"er+
/omo se 7ue eres observaor* seguro 0abr<s no"ao caa vez 7ue 0abras "u arc0ivo !ara ei"ar
las macros o e3ecu"abas alguna* a!ar"e el arc0ivo 7ue es"uvieras usano* el organizaor e
macros "e mos"raba o bien* "oos los arc0ivos 7ue "ienes abier"os o solo el arc0ivo ac"ivo !ara
e3ecu"ar una macro* veamos en 7ue casos "e mos"raba uno . en 7ue casos lo o"ro* es"a i2erencia
es im!or"an"e !ara el esarrollo e los siguien"es "emas+ Para em!ezar a clari2icar es"o* crea os
nuevos arc0ivos* uno e /alc . o"ro e Nri"er* guararlos con el nombre 7ue 7uieras* agregales
una macro e !rueba 7ue nos mues"re un mensa3e* !or e3em!lo=
>7&+on Ex7l+*+&
"u. M%nsa)%/$al*23
MsgBox "Es&o? %n (+ a'*h+8o d% $al*"
End "u.
"u. M%nsa)%/U'+&%'23
MsgBox "Es&o? %n (+ a'*h+8o d% U'+&%'"
End "u.
Toma no"a e 7ue son os macros en LosM arc0ivos i2eren"es+ A0ora* "ra"a e
e3ecu"ar caa macro ese el men? cerramien"as r Macros r >3ecu"ar macros+++* in"en"emos
!rimero con la macro 7ue es"a en el arc0ivo e Nri"er* observa como solo nos mues"ra el arc0ivo
e Nri"er . no el e /alc+
A!renieno OOo Basic 11%
A0ora la macro 7ue es"a en el arc0ivo e /alc . observa como solo nos mues"ra el
arc0ivo e /alc . no el e Nri"er+
Por su!ues"o* !oemos L2orzarM 7ue nos mues"re "oos los arc0ivos abier"os* si* en
vez e ir al men? Herramientas | Macros | "jecutar macros* o!"amos !or ir al men?
Herramientas | Macros | Organizar macros | OpenOfficeorg !asic* 7ue nos mos"rar<=
A0ora si* observa como nos mues"ra "oos los arc0ivos abier"os . !oemos "an"o
ei"ar las macros 7ue con"enga o e3ecu"arlas+ Para 7ue "engamos is!onibles nues"ras macros
con cual7uier arc0ivo . !oer e3ecu"arlas ese Herramientas | Macros | "jecutar macros*
!oemos o!"ar !or usar el arc0ivo es!ecial 7ue se llama Mis macros* 7ue !uees ver a7u=
11, 5+1 Mis macros f un arc0ivo es!ecial+
(en"ro e el* !uees crear "oas las biblio"ecas 7ue 7uieras . "oos los m5ulos 7ue
7uieras* as como los i<logos 7ue a!reneremos a crear . !rogramar m<s aelan"e+ A !ar"ir e
a7u* 7uea a "u cri"erio eciir one guaras "us macros* si en"ro e arc0ivos iniviuales o
en"ro e Mis macros+ >s"e arc0ivo se encuen"ra en el irec"orio el usuario en"ro e la car!e"a
ocul"a e O!enO22ice+org* !or e3em!lo= 10ome1USUAA:O1+o!eno22ice+org1@1user1basic+ >n es"e
irec"orio !or<s ver como car!e"as las biblio"ecas 7ue va.as agregano . en"ro e ellas los
m5ulos creaos* !or su!ues"o* es mu. ?"il res!alar e vez en cuano es"a car!e"a+
!.2 (si*nando macros
cas"a a0ora* 0emos e3ecu"ao "oas nues"ras macros ese el :(> o llam<nolas
ese el men? 0erramien"as* !ero "ambi4n !oemos asignar las macros !ara e3ecu"arlas* a
men?s* barras e 0erramien"as* combinaciones e "eclas e incluso asignarlas a sucesos e la
a!licaci5n* !or e3em!lo* cuano abrimos un arc0ivo* es"o* es sumamen"e ?"il . !oeroso* veamos
algunos e3em!los e como 0acer es"o* como !rimer !aso* 0a. 7ue escribir la macro 7ue nos
in"eresa asignar* algo "an sencillo como mos"rar la 2ec0a . 0ora ac"uales* claro* con un !oco e
2orma"o !ara 7ue sea vea bien=
"u. Mos&'a'J%*ha?Ho'a23
@+( sM%nsa)% !s "&'+ng
sM%nsa)% A Jo'(a&2 <o^236 "dddd dd ada% (((( ada%l ???? " 9 $h'2133 9 /
"? ason laas HH ahoa'aas *on (( a(+nu&oas"
MsgBox sM%nsa)%6 646"Ho? %s"

A!renieno OOo Basic 11-
End "u.
A0ora* "ienes 7ue eciir LcuanoM o LcomoM 7uieres e3ecu"arla* veamos !rimero lo
m<s sencillo* 0agamos 7ue se e3ecu"e con una combinaci5n e "eclao* !ara ello* ese cual7uier
a!licaci5n e O!enO22ice+org* ve al men? 0er 1 Barra de herramientas 1 Personali2ar((( 7ue "e
mos"rara el siguien"e cuaro e ialogo=
Asegura"e e 7ue es"e seleccionaa la 2ic0a Teclao (1)* as como mos"rar las
/ombinaciones e "eclas e O!enO22ice+org (#)+ >l siguien"e !aso es 7ue esco3as la combinaci5n
e "eclas 7ue 7uieres asignar a nues"ra macro* !ara ello* es!laza"e en el cuaro e lis"a
/ombinaci5n e "eclas (@) . escoge la 7ue m<s "e gus"e* cuia"e e seleccionar una 7ue es"e
libre* "e va a ar cuen"a las 7ue .a es"<n en uso* !or 7ue elan"e e ellas "ienen la "area asignaa
(F)* "ambi4n no"aras 7ue algunas "eclas* como !or e3em!lo la "ecla '1* es"<n en gris esac"ivaas*
es"o es !or 7ue es"as "eclas no !uees reasignarlas+ Pero observa 7ue "ienes una am!lia gama
e o!ciones e one escoger* !ara nues"ro e3em!lo* 0emos seleccionao /TA) R Sc:'T R M
(5)* el siguien"e !aso es seleccionar la macro 7ue eseamos e3ecu"ar con es"a combinaci5n e
"eclas* !ara nues"ro e3em!lo* !rimero es!laza"e en el cuaro e lis"a drea (G) 0as"a encon"rar la
o!ci5n Macros e O!enO22ice+org* es!liega su con"enio . seleccionar LuserM 7ue se re2iere al
arc0ivo es!ecial LMis MacrosM* solo "e res"a seleccionar la biblio"eca . el moulo one es"a la
macro a asignar* !ara nues"ro e3em!lo se llama Mos"rar'ec0a.cora (%)+
1#$ 5+# Asignano macros
Observa como "ienes o!ci5n e cargar combinaciones e "eclas guaraas* as
como e guarar las ac"uales . res"ablecer las !ree"erminaas* "e 7uea e "area L3ugarM .
e;!erimen"ar con es"as o!ciones+
/omo ul"imo !aso* !resiona el bo"5n e comano Moi2icar (,) 7ue asigna
2inalmen"e la combinaci5n e "eclas (-) a la macro seleccionaa (1$)+ Para "erminar* !resiona el
bo"5n e comano Ace!"ar+
A!renieno OOo Basic 1#1
A0ora* solo nos res"a !robar 7ue 2uncione* ese cual7uier ocumen"o* !resiona la
combinaci5n e "eclas seleccionaa (/"rlRS0i2"RM) . si "oo es"a correc"o* "e "iene 7ue mos"rar=
/on un !oco e imaginaci5n !uees crear "us accesos irec"os !ara !robar "oas las
macros 7ue 7uieras e una 2orma sencilla+ A0ora veamos como asignar una macro a un even"o* a
un suceso el sis"ema* !ara ello* vamos a crear una sencilla macro e e3em!lo=
"u. Mos&'a'M%nsa)%23
@+( sM%nsa)% !s "&'+ng
sM%nsa)% A "<o &% ol8+d%s d% gua'da' &u do*u(%n&o"

MsgBox sM%nsa)%6 646"$'%ando do*u(%n&o"

End "u.
1## 5+# Asignano macros
6e al men? /er | !arra de $erramientas | (ersonalizar* es"a vez* selecciona la 2ic0a
>ven"os (1) . asegura"e e seleccionar O!enO22ice+org (#) !ara guarar la asignaci5n 7ue
0agamos+ Para nues"ro e3em!lo seleccionaremos el Le,entoM /rear ocumen"o (@) 7ue se e3ecu"a
caa vez 7ue creamos un nuevo ocumen"o+
A0ora* con el bo"5n e comano Macro+++ (F)* "e es!legara un cuaro e ialogo
7ue .a conoces* solo "e res"a navegar en"ro el arc0ivo* la biblio"eca . el moulo 7ue con"iene la
macro eseaa* selecciona la macro* !resiona Ace!"ar . lis"o+
Observa como elan"e el Leven"oM 7uea seleccionaa la macro* solo "e res"a
!resionar el bo"5n e comano Ace!"ar . !robar la macro* crea "an"os nuevos ocumen"os como
7uieras+
A!renieno OOo Basic 1#@
/on caa nuevo ocumen"o creao* e cual7uier a!licaci5n e OOo* "e "iene 7ue
mos"rar el mensa3e=
Asignar macros a even"os no es un "ema menor* !ues !uee ser "an sencillo como
nues"ros e3em!los* conec"ar"e a una base e a"os o a una !<gina 8eb . muc0as cosas m<s* m<s
aelan"e !ro2unizaremos en algunas e sus o!ciones+
Asignar una macro a un men? o a una barra e 0erramien"as es "rivial* as 7ue "e
7uea e "area in"en"ar 0acerlo+
1#F 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
!. Creando nuestro primer 4ser,icio1 ?objeto@.
Para crear* acceer . mani!ular un servicio* Lnecesi"asM asignarlo a una variable e
ob3e"o* e la siguien"e manera+
@+( <o(.'%1a'+a.l% !s >.)%*&
> inicializarla !ara !oer usarla* !ara ello* usamos la 2unci5n create3noSer%ice+
"u. !**%d+%ndo!>7%n>ff+*%123
@+( a77>7%n>ff+*% !s >.)%*&

a77>7%n>ff+*% A *'%a&%Cno"%'8+*%2 "*o(-sun-s&a'-f'a(%-@%s]&o7" 3

End "u.
>l servicio com+sun+s"ar+2rame+(ess"o! es usao mu. 2recuen"emen"e* !ues nos
!ermi"e acceer a L"oaM la a!licaci5n . sus com!onen"es* !or ello* e;is"e una !alabra clave 7ue
nos a acceso inmeia"o a es"e LservicioM9 4StarDesNtop1 !or lo 7ue* la siguien"es os lneas son
e7uivalen"es=
a77>7%n>ff+*% A *'%a&%Cno"%'8+*%2 "*o(-sun-s&a'-f'a(%-@%s]&o7" 3

a77>7%n>ff+*% A "&a'@%s]&o7
>3ecu"ano la macro an"erior* !or a0ora* no veras ning?n e2ec"o* !ero a7u em!ieza
lo iver"io e in"eresan"e* vamos a e;!lorar !or en"ro el O!enO22ice+org* moi2ica la macro !ara
7ue 7uee e la siguien"e manera=
>7&+on Ex7l+*+&
"u. !**%d+%ndo!>7%n>ff+*%223
@+( a77>7%n>ff+*% !s >.)%*&
@+( o!*&+8o !s >.)%*&
,#n+*+al+:a(os una 8a'+a.l% *on %l s%'8+*+o *o(-sun-s&a'-f'a(%-@%s]&o7
a77>7%n>ff+*% A "&a'@%s]&o7

,>.&%n%(os una '%f%'%n*+a al *o(7on%n&% a*&+8o
o!*&+8o A a77>7%n>ff+*%-$u''%n&$o(7on%n&
,Mos&'a(os %l &+7o d% *o(7on%n&%
MsgBox o!*&+8o-#d%n&+f+%'
End "u.
A0ora si* al e3ecu"ar "e "iene 7ue mos"rar el siguien"e mensa3e=
Pero* "al vez "e mues"re es"e o"ro=
A!renieno OOo Basic 1#5
:ncluso "al vez el siguien"e=
IPor 7ueJ Por7ue e!ener< ese one LllamesM (e3ecu"es) la macro* veri2calo*
"al vez la e3ecu"as"e irec"amen"e ese el :(>* o "al vez la llamas"e ese una 0o3a e calculo o
ese un arc0ivo e "e;"o+ >n el "ema an"erior vimos como llamar a una macro ese one
7ueramos* aun7ue lo m<s !rac"ico !ara los siguien"es e3em!los es 7ue !rogrames "us macros
en"ro e arc0ivo Mis macros* 7uea a "u cri"erio+
Abre seis arc0ivos* uno !or caa "i!o e ocumen"o 7ue !oemos mane3ar en
O!enO22ice+org (0o3a e calculo* ocumen"o e "e;"o* !resen"aci5n* ibu3o* base e a"os .
2ormula) no necesariamen"e "ienes 7ue guararlos* !ero no es"ara e m<s !or 7ue los vamos a
usar en re!e"ias ocasiones+ >3ecu"a la macro an"erior ese caa uno e es"os ocumen"os+
Toos e;ce!"o la base e a"os "e "ienen 7ue mos"rar el mensa3e correc"amen"e . en el caso e la
base e a"os* "e "iene 7ue mos"rar el error siguien"e=
A!rene"e mu. bien es"as os nuevas !alabras L!ro!ieaM . Lm4"ooM* las vas a
usar e a7u en aelan"e . siem!re 7ue !rogrames en OOo Basic+ >n es"e caso* es una
4propiedad1 lo 7ue es"a mal* es ecir* la !ro!iea Identi2ier* no la im!lemen"an las bases e
a"os+ Sabieno es"o* !oramos em!ezar a !ro!oner una macro gen4rica !ara saber 7ue "i!o e
ocumen"o es el ac"ivo* !robemos con la siguien"e=
"u. !**%d+%ndo!>7%n>ff+*%323
@+( a77>7%n>ff+*% !s >.)%*&
@+( o!*&+8o !s >.)%*&
,#n+*+al+:a(os una 8a'+a.l% *on %l s%'8+*+o *o(-sun-s&a'-f'a(%-@%s]&o7
a77>7%n>ff+*% A "&a'@%s]&o7

,>.&%n%(os una '%f%'%n*+a al *o(7on%n&% a*&+8o
o!*&+8o A a77>7%n>ff+*%-$u''%n&$o(7on%n&
,Mos&'a(os %l &+7o d% *o(7on%n&%
"%l%*& $as% o!*&+8o-#d%n&+f+%'
$as% "*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"
MsgBox ""o? una ho)a d% *al*ulo"
$as% "*o(-sun-s&a'-7'%s%n&a&+on-0'%s%n&a&+on@o*u(%n&"
MsgBox ""o? una 7'%s%n&a*+on"
$as% "*o(-sun-s&a'-d'a^+ng-@'a^+ng@o*u(%n&"
MsgBox ""o? un d+.u)o"
1#G 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
$as% "*o(-sun-s&a'-fo'(ula-Jo'(ula0'o7%'&+%s"
MsgBox ""o? una fo'(ula"
$as% "*o(-sun-s&a'-&%x&-H%x&@o*u(%n&"
MsgBox ""o? un do*u(%n&o d% &%x&o"
End "%l%*&
End "u.
>3ecu"a la macro an"erior ese caa uno e los seis arc0ivos* e;ce!"o ese la
base e a"os !ues "e ar< un error* claro* !uees* si 7uieres* im!lemen"ar un con"rolaor e
errores !ero !or a0ora no lo 0aremos* bus7uemos o"ra al"erna"iva* !or e3em!lo* !robemos a0ora
la !ro!iea Implementation/ame . veamos 7ue !asa=
"u. !**%d+%ndo!>7%n>ff+*%423
@+( o!*&+8o !s >.)%*&

,>.&%n%(os una '%f%'%n*+a al *o(7on%n&% a*&+8o
o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&
,Mos&'a(os %l &+7o d% *o(7on%n&%
MsgBox o!*&+8o-#(7l%(%n&a&+on<a(%
End "u.
>s"a vez si nos mues"ra un mensa3e en "oos los ocumen"os* !ero no"aras 7ue es"a
!ro!iea en algunos ocumen"os no es mu. clara* a7u el resumen e lo 7ue "enras 7ue
ob"ener en caa caso=
Aplicacin 3ipo de documento Propiedad )mplementation!ame
Nri"er (ocumen"o e "e;"o S8pTe;"(ocumen"
/alc co3a e calculo ScMoelOb3
:m!ress Presen"aciones Sp:m!ress(ocumen"
(ra8 (ibu3o Sp:m!ress(ocumen"
Base Base e a"os com+sun+s"ar"+com!+ba+O(a"abase(ocumen"
Ma"0 'ormula com+sun+s"ar"+com!+ma"0+'ormula(ocumen"
ITe 2i3as 7ue in"eresan"eJ* no"a el valor evuel"o en las 0o3as e calculo . como las
!resen"aciones . los ibu3os evuelven el mismo resul"ao* !or lo 7ue es"a !ro!iea* a !esar e
es"ar im!lemen"aa en "oos los "i!os e ocumen"os* no resul"a mu. i5nea !ara i2erenciar a
caa uno+ IO si en vez e evolver un caena e "e;"o* le !regun"amos a caa com!onen"e si son
lo 7ue icen serJ* es ecir* !or e3em!lo* una 0o3a e calculo im!lemen"a !ro!ieaes . m4"oos
(servicios) !ara mani!ular 0o3as e calculo* en es"e caso* es"e servicio se llama
Hcom+sun+s"ar+s0ee"+S!reas0ee"(ocumen"M* . caa ocumen"o so!or"a un "i!o e servicio
i2eren"e+ Toos los ob3e"os ami"en un m4"oo 7ue nos !ermi"e !regun"ar si ic0o ob3e"o so!or"a
un servicio en es!ecial* es"e m4"oo se llama supportsSer,ice . 0a. 7ue !asarle como
argumen"o el nombre el servicio 7ue 7ueremos valiar . nos evolver< veraero (True) o 2also
('alse) seg?n so!or"e o no el servicio* !or lo 7ue la sin"a;is com!e"a e es"e m4"oo es=
1a'+a.l% !s Bool%an A >.)%&o-su77o'&s"%'8+*%2 <o(.'%/d%l/"%'8+*+o !s "&'+ng)
6eamoslo "raba3ano en el siguien"e e3em!lo=
A!renieno OOo Basic 1#%
"u. !**%d+%ndo!>7%n>ff+*%523
@+( o!*&+8o !s >.)%*&
@+( .#(7l%(%n&a"%'8+*+o !s Bool%an
o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&

.#(7l%(%n&a"%'8+*+o A o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3

#f .#(7l%(%n&a"%'8+*+o Hh%n
MsgBox ""o? una ho)a d% *al*ulo"
Els%
MsgBox "<> so? una ho)a d% *al*ulo"
End #f
End "u.
O !rueba ese "oos nues"ros ocumen"os 7ue 2unciona correc"amen"e !or lo 7ue
.a !oemos im!lemen"ar una macro me3or !ara saber 7ue "i!o e ocumen"o "enemos ac"ivo*
sim!lemen"e consul"ano si so!or"a su res!ec"ivo Lser%icio4=
"u. !**%d+%ndo!>7%n>ff+*%623
@+( o!*&+8o !s >.)%*&
o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&

#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3 Hh%n
MsgBox ""o? una ho)a d% *al*ulo"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-&%x&-H%x&@o*u(%n&"3 Hh%n
MsgBox ""o? un do*u(%n&o d% &%x&o"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-7'%s%n&a&+on-0'%s%n&a&+on@o*u(%n&"3 Hh%n
MsgBox ""o? una 7'%s%n&a*+on"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-d'a^+ng-@'a^+ng@o*u(%n&"3 Hh%n
MsgBox ""o? un d+.u)o"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sd.->ff+*%@a&a.as%@o*u(%n&"3 Hh%n
MsgBox ""o? una .as% d% da&os"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-fo'(ula-Jo'(ula0'o7%'&+%s"3 Hh%n
MsgBox ""o? una fo'(ula"
Els%#f o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-s*'+7&-Bas+*#@E"3 Hh%n
MsgBox ""o? %l %d+&o' d% *od+go #@E"
Els%
MsgBox "<> s% Fu% &+7o d% do*u(%n&o so?"
End #f
End "u.
A0ora si* .a !oemos iscriminar correc"amen"e los ocumen"os+ Saber si un ob3e"o
im!lemen"a un e"erminao servicio* es mu. im!or"an"e !ara minimizar el riesgo e errores . !ara
consul"ar irec"amen"e las !ro!ieaes . m4"oos 7ue im!lemen"a ic0o servicio sin "ener 7ue
es"ar LaivinanoM naa . !recisamen"e !ara no es"ar aivinano* e;is"e una !ro!iea 7ue nos
evuelve una ma"riz (arra.) con los servicios 7ue so!or"a un ob3e"o* es"a !ro!iea se llama
SupportedSer,ice/ames . su sin"a;is es=
6ariable As Arra. l Ob3e"o+Su!!or"eServiceNames
/omo siem!re* no 0a. como los e3em!los=
"u. !**%d+%ndo!>7%n>ff+*%723
@+( o!*&+8o !s >.)%*&
@+( ("%'8+*+os23 !s "&'+ng
@+( *o1 !s B?&%

1#, 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
,>.&%n%(os una '%f%'%n*+a al *o(7on%n&% a*&+8o
o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&
,>.&%n%(os una (a&'+: *on los s%'8+*+os Fu% +(7l%(%n&a
("%'8+*+os23 A o!*&+8o-"u77o'&%d"%'8+*%<a(%s
,O (os&'a(os %l no(.'% d% *ada s%'8+*+o
Jo' *o1 A 5Bound2 ("%'8+*+os23 3 Ho CBound2 ("%'8+*+os23 3
MsgBox ("%'8+*+os2 *o1 3
<%x&

End "u.
O si e3ecu"as la macro an"erior ese caa uno e nues"ros seis ocumen"os
abier"os* "ienes 7ue ob"ener la siguien"e lis"a e servicios en caa uno=
Aplicacin 3ipo de documento Propiedad 4upported4ervice!ames
Nri"er (ocumen"o e "e;"o com+sun+s"ar+ocumen"+O22ice(ocumen"
com+sun+s"ar+"e;"+&enericTe;"(ocumen"
com+sun+s"ar+"e;"+Te;"(ocumen"
/alc co3a e calculo com+sun+s"ar+s0ee"+S!reas0ee"(ocumen"
com+sun+s"ar+s0ee"+S!reas0ee"(ocumen"Se""ings
:m!ress Presen"aciones com+sun+s"ar+ocumen"+O22ice(ocumen"
com+sun+s"ar+ra8ing+&eneric(ra8ing(ocumen"
com+sun+s"ar+ra8ing+(ra8ing(ocumen"'ac"or.
com+sun+s"ar+!resen"a"ion+Presen"a"ion(ocumen"
(ra8 (ibu3o com+sun+s"ar+ocumen"+O22ice(ocumen"
com+sun+s"ar+ra8ing+&eneric(ra8ing(ocumen"
com+sun+s"ar+ra8ing+(ra8ing(ocumen"'ac"or.
com+sun+s"ar+ra8ing+(ra8ing(ocumen"
Base Base e a"os com+sun+s"ar+ocumen"+O22ice(ocumen"
com+sun+s"ar+sb+O22ice(a"abase(ocumen"
Ma"0 'ormula com+sun+s"ar+ocumen"+O22ice(ocumen"
com+sun+s"ar+2ormula+'ormulaPro!er"ies
No"a como :m!ress . (ra8 im!lemen"an casi los mismos servicios . observa como
0a. un servicio (com+sun+s"ar"+ocumen"+O22ice(ocumen")* 7ue* e;ce!"o en la 0o3a e calculo* es
com?n a "oos los ocumen"os* !ero no creas 7ue la 0o3a e calculo no lo im!lemen"a* !oemos
emos"rar 7ue lo im!lemen"a con el siguien"e e3em!lo 7ue "ienes 7ue e3ecu"ar ese cual7uier
0o3a e calculo* en "oos los em<s ocumen"os "ambi4n "e 2uncionara* !ero recuera 7ue solo
7ueremos com!robar si la 0o3a e calculo im!lemen"a es"e servicio=
"u. !**%d+%ndo!>7%n>ff+*%823
@+( o!*&+8o !s >.)%*&
@+( .#(7l%(%n&a"%'8+*+o !s Bool%an
o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&

.#(7l%(%n&a"%'8+*+o A o!*&+8o-su77o'&s"%'8+*%2"*o(-sun-s&a'-do*u(%n&->ff+*%@o*u(%n&"3

#f .#(7l%(%n&a"%'8+*+o Hh%n
MsgBox "1%'dad Fu% s+ %s&a +(7l%(%n&ado %l s%'8+*+o"
Els%
MsgBox "<> %s&a +(7l%(%n&ado %l s%'8+*+o"
End #f
A!renieno OOo Basic 1#-
End "u.
>s"e servicio com?n a "oos los ocumen"os* "ambi4n es mu. usao e im!or"an"e
como m<s aelan"e !or<s com!robarlo+ Por a0ora* co!ia la siguien"e macro . !ruebala e nuevo
con "oos los ocumen"os+
"u. !**%d+%ndo!>7%n>ff+*%923
@+( o!*&+8o !s >.)%*&
@+( ("%'8+*+os23 !s "&'+ng
@+( *o1 !s B?&%

o!*&+8o A "&a'@%s]&o7-$u''%n&$o(7on%n&
("%'8+*+os23 A o!*&+8o-getSupporteSer,i)eNames23
Jo' *o1 A 5Bound2 ("%'8+*+os23 3 Ho CBound2 ("%'8+*+os23 3
MsgBox ("%'8+*+os2 *o1 3
<%x&
End "u.
No"aras 7ue "raba3a e;ac"amen"e igual 7ue la an"erior* !ero ve 7ue no 0emos usao
la !ro!iea SupportedSer,ice/ames* sino el m4"oo *etSupportedSer,ice/ames?@*
i2erenciaos !or el !re2i3o ge" . los !ar4n"esis* los os 0acen lo mismo* !ero en OOo Basic* casi
"oos los m4"oos "ienen su corres!onencia en una !ro!iea* si "e es ?"il* recuera "us clases
elemen"ales e es!aKol* los ob3e"os son como los sus"an"ivos* las !ro!ieaes son a3e"ivos . los
m4"oos son verbos* as mismo . mu. im!or"an"e* las !ro!ieaes siem!re son e un "i!o e a"o
so!or"ao !or OOo Basic (s"ring* in"eger* arra.* e"c+)* !or lo 7ue "ienes 7ue "ener las mismas
consieraciones (. !recauciones) vis"as en varios "emas a"r<s* !rinci!almen"e cuano vimos
variables . 2unciones* as mismo los m4"oos* cuano se les !asan argumen"os . cuano
evuelven un valor se ven a2ec"aos !or es"as consieraciones* !or lo 7ue rei"ero* "en cuiao
con los "i!os e a"os 7ue usas+
A lo largo e es"e ca!i"ulo* "e mos"rare* en la meia e lo !osible* el uso como
m4"oo . como !ro!iea* m<s aelan"e me limi"are a usar m4"oos . "u usaras el 7ue m<s e
agrae+
cas"a a0ora* 0emos acceio a un solo ocumen"o* !ero !oemos acceer a "oos
los ocumen"os ac"ualmen"e abier"os en O!enO22ice+org* co!ia . !rueba la siguien"e macro=
>7&+on Ex7l+*+&
"u. $on&'olando/>7%n>ff+*%123
@+( o@o*u(%n&os !s >.)%*&
@+( o@o*u(%n&o !s >.)%*&
@+( oEnu(%'a@o*u(%n&os !s >.)%*&
,!**%d%(os a &odos los do*u(%n&os a*&ual(%n&% a.+%'&os
o@o*u(%n&os A "&a'@%s]&o7-g%&$o(7on%n&s23
,Enu(%'a(os *ada uno
oEnu(%'a@o*u(%n&os A o@o*u(%n&os-*'%a&%Enu(%'a&+on23
,hasMo'%El%(%n&s d%8u%l8% 8%'dad%'o 2H'u%3 (+%n&'as ha?a %l%(%n&os
@o Uh+l% oEnu(%'a@o*u(%n&os-hasMo'%El%(%n&s23
,<os d%s7la:a(os al s+gu+%n&% %l%(%n&o ? lo as+gna(os
o@o*u(%n&o A oEnu(%'a@o*u(%n&os-n%x&El%(%n&23
,Mos&'a(os %l &+7o d% do*u(%n&o
MsgBox ""o? un do*u(%n&o d% " 9 H+7o@o*u(%n&o2 o@o*u(%n&o 3
5oo7

End "u.
Jun*&+on H+7o@o*u(%n&o2B?R%f @o*u(%n&o !s >.)%*&3 !s "&'+ng
@+( s!7l+*a*+on !s "&'+ng
1@$ 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3 Hh%n
s!7l+*a*+on A "$al*"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-&%x&-H%x&@o*u(%n&"3 Hh%n
s!7l+*a*+on A "U'+&%'"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-7'%s%n&a&+on-0'%s%n&a&+on@o*u(%n&"3 Hh%n
s!7l+*a*+on A "#(7'%ss"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-d'a^+ng-@'a^+ng@o*u(%n&"3 Hh%n
s!7l+*a*+on A "@'a^"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sd.->ff+*%@a&a.as%@o*u(%n&"3 Hh%n
s!7l+*a*+on A "Bas%"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-fo'(ula-Jo'(ula0'o7%'&+%s"3 Hh%n
s!7l+*a*+on A "Ma&h"
Els%#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-s*'+7&-Bas+*#@E"3 Hh%n
s!7l+*a*+on A "Bas+*"
Els%
s!7l+*a*+on A "@%s*ono*+do"
End #f

H+7o@o*u(%n&o A s!7l+*a*+on
End Jun*&+on
Toma no"a e como 0emos conver"io una macro usaa an"eriormen"e en una
2unci5n 7ue nos evuelve el "i!o e ocumen"o abier"o+ Muc0os ob3e"os en O!enO22ice+org* solo
son accesibles creano una Lenumeraci5nM* as 7ue la es"ruc"ura e la macro an"erior la !oras
usar con 2recuencia+ Una Lenumeraci5nM* es como un lis"ao e ob3e"os* se crean con el m4"oo
crea"e>numera"ion()* el m4"oo +0asMore>lemen"s() nos sirve !ara saber si "oava 0a.
elemen"os . el m4"oo +ne;">lemen"()* !ermi"e movernos al siguien"e elemen"o e la
enumeraci5n+
>m!ecemos con c5igo un !oco m<s iver"io* la siguien"e varian"e e la macro
an"erior* "e cerrara L"oosM los arc0ivos e /alc 7ue no "engan cambios !or guarar* C:ID(D%* si
e3ecu"as la siguien"e macro ese un arc0ivo e /alc !oras cerrar"e el arc0ivo con resul"aos
ines!eraos* como icen en mi !ueblo -sobre aver"encia no 0a. engaKo-+
"u. $on&'olando/>7%n>ff+*%223
@+( o@o*u(%n&os !s >.)%*&
@+( o@o*u(%n&o !s >.)%*&
@+( oEnu(%'a@o*u(%n&os !s >.)%*&
@+( *o1 !s #n&%g%'
o@o*u(%n&os A "&a'@%s]&o7-g%&$o(7on%n&s23
oEnu(%'a@o*u(%n&os A o@o*u(%n&os-*'%a&%Enu(%'a&+on23
@o Uh+l% oEnu(%'a@o*u(%n&os-hasMo'%El%(%n&s23
o@o*u(%n&o A oEnu(%'a@o*u(%n&os-n%x&El%(%n&23
,1%'+f+*a(os Fu% s%a un a'*h+8o d% $al*
#f H+7o@o*u(%n&o2 o@o*u(%n&o 3 A "$al*" Hh%n
,"+ no ha s+do (od+f+*ado o los *a(.+os ?a %s&an gua'dados
,%l (%&odo +sMod+f+%d d%8ol8%'a Jals%
#f <o& o@o*u(%n&o-+sMod+f+%d23 Hh%n
,%l (%&odo d+s7os% *+%''a %l a'*h+8o
o@o*u(%n&o-d+s7os%23
*o1 A *o1 B 1
End +f
End #f
5oo7
MsgBox ""% *%''a'on un &o&al d% " 9 $"&'2*o13 9 " a'*h+8os d% $al*"

End "u.
Ten muc0o cuiao con el m4"oo dispose* "e cerrar< el arc0ivo sin !regun"ar"e
naa* "enga o no "enga cambios guaraos* usalo con conocimien"o e causa+ Observa como
usamos la !ro!iea isMoi2ie()* !ara saber si el ocumen"o 0a sio moi2icao+
A!renieno OOo Basic 1@1
)a :n"er2az e Programaci5n e la A!licaci5n (AP: !or sus siglas en ingles)
!ro!orciona* ecenas incluso cen"enas e servicios con m4"oos . !ro!ieaes !ara con"rolar .
mani!ular O!enO22ice+org* la !uees consul"ar en linea (!or a0ora solo en ingles) en"ro e la
!<gina 888+o!eno22ice+org
0""!=11a!i+o!eno22ice+org1ocs1common1re21com1sun1s"ar1moule-i;+0"ml
Tambi4n !uees escargarla . es!u4s consul"arla 2uera e lnea !ara su acceso
inmeia"a o si no "ienes cone;i5n !ermanen"e a :n"erne"* en el A!4nice B "e mues"ro como
0acerlo+ Para una consul"a 5!"ima e es"a ocumen"aci5n* lo ieal es saber e 2orma an"ici!aa
7ue servicio* m4"oo o !ro!iea es"amos buscano* !ara ello* "oos los ob3e"os cuen"an con
unas !ro!ieaes es!eciales 7ue nos an muc0a in2ormaci5n* veamos cuales son+
!..1 +ropiedades especiales de depuracin
Oa vimos en el "ema an"erior como saber con el m4"oo LsupportsSer,iceM si un
ob3e"o so!or"a un e"erminao servicio* !ero "iene el inconvenien"e e 7ue "enemos 7ue saber
an"ici!aamen"e el nombre e ic0o servicio* lo cual a veces es un !oco com!licao+ Tambi4n
vimos el uso el m4"oo *etSupportedSer,ice/ames?@ 7ue nos evuelve una ma"riz con los
nombres e los servicios 7ue im!lemen"a el ob3e"o+
Para ob"ener "oa la in2ormaci5n e un ob3e"o* es"e cuen"a con "res !ro!ieaes 7ue
nos in2orman e "oas las !ro!ieaes* m4"oos e 4inter2aces1 7ue im!lemen"a ic0o ob3e"o*
es"as !ro!ieaes son "res=
1+ (bgQSu!!or"e:n"er2aces
#+ (bgQPro!er"ies
@+ (bgQMe"0os
)as "res son e "i!o "e;"o (s"ring) . se usan e la siguien"e manera=
"u. $onsul&ando>.)%&os123
@+( s@a&os !s "&'+ng
MsgBox "&a'@%s]&o7-@.g/0'o7%'&+%s
MsgBox "&a'@%s]&o7-@.g/M%&hods
MsgBox "&a'@%s]&o7-@.g/"u77o'&%d#n&%'fa*%s

End "u.
No "e me con2unas con es"o e las 4inter2aces1* !ara nues"ros 2ines es
!er2ec"amen"e valio 7ue los llamemos LserviciosM* sim!lemen"e !iensa en las in"er2aces como
una 2orma e organizar servicios* !ero en OOo Basic no "iene im!or"ancia !or 7ue acceemos
irec"amen"e a las !ro!ieaes . m4"oos e los servicios+
1@# 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
)a !e7ueKa macro an"erior* "e "iene 7ue mos"rar un cuaro e mensa3e con las
!ro!ieaes el ob3e"o=
Sus m4"oos=
A!renieno OOo Basic 1@@
O sus in"er2aces (servicios)=
Observa el servicio seKalao con una 2lec0a* si vamos a su ocumen"aci5n* en lnea
(0""!=11a!i+o!eno22ice+org1ocs1common1re21com1sun1s"ar12rame1p/om!onen")oaer+0"ml) o local
(2ile=111o!"1o!eno22ice1ss1ocs1common1re21com1sun1s"ar12rame1p/om!onen")oaer+0"ml)* "e ar<s
cuen"a 7ue solo "iene un m4"oo loadComponentFrom:83* !ero un m4"oo mu. im!or"an"e*
!ues nos !ermi"e crear ocumen"os nuevos o abrir arc0ivos e;is"en"es* lo cual veremos al
"erminar es"e "ema+
A0ora !robemos con los a"os el ocumen"o ac"ivo=
"u. $onsul&ando>.)%&os223
@+( s@a&os !s "&'+ng
MsgBox "&a'@%s]&o7-g%&$u''%n&$o(7on%n&23-@.g/0'o7%'&+%s
MsgBox "&a'@%s]&o7-g%&$u''%n&$o(7on%n&23-@.g/M%&hods
MsgBox "&a'@%s]&o7-g%&$u''%n&$o(7on%n&23-@.g/"u77o'&%d#n&%'fa*%s

End "u.
>s"a vez nos mues"ra muc0os m<s a"os* IveraJ* observa e 7ue 2orma "an
sim!le !oemos ob"ener muc0a in2ormaci5n* en las !ro!ieaes* no"a 7ue se nos mues"ra el "i!o
e valor 7ue !uees ob"ener e las !ro!ieaes . 7ue ser< el mismo "i!o !ara es"ablecerla si la
!ro!iea es e escri"ura+ Por e3em!lo* si e3ecu"amos la macro an"erior ese una 0o3a e calculo
!oremos ver en"re sus !ro!ieaes las siguien"es=
1+ Sb;AAAAO Prin"er
#+ Sb;STA:N& )oca"ion
@+ Sb;OBi>/T S0ee"s
Tenemos una !ro!iea 7ue evuelve un arra. (1)* o"ra una caena (#+- s"ring) . !or
ul"imo un ob3e"o (@+- ob3ec")+
A0ora* en los m4"oos "ambi4n nos mues"ra in2ormaci5n valiosa* !or e3em!lo .
siguieno en la su!osici5n e 7ue nos in2ormamos e una 0o3a e calculo* "enemos=
1+ Sb;STA:N& ge"UA) ( voi )
1@F 5+@ /reano nues"ro !rimer LservicioM (ob3e"o)+
#+ Sb;6O:( s"oreAsUA) ( Sb;STA:N&* Sb;AAAAO )
@+ Sb;:NT>&>A rese"Ac"ion)ocss ( voi )

>n es"e caso "enemos el m4"oo *et:rl 7ue evuelve una caena (s"ring) . no
necesi"a argumen"os (1)* el m4"oo store(s:83 re7uiere una caena (s"ring) . un arra. como
argumen"os (#)* !ero no evuelve ning?n valor . !or ul"imo el m4"oo reset(ction3ocNs*
evuelve un en"ero (in"eger) . no necesi"a argumen"os (@)+ Por a0ora lo im!or"an"e es saber
reconocer la sin"a;is e es"a in2ormaci5n !ara usarla en nues"ras macros+
Por ul"imo* cual7uiera e los servicios mos"raos* mues"ra la in2ormaci5n necesaria
!ara ir a la ocumen"aci5n el AP: . saber 7ue o"ros servicios so!or"a* 7ue m4"oos . 7ue
!ro!ieaes+
1+ com+sun+s"ar+a"a"rans2er+pTrans2erable
#+ com+sun+s"ar+vie8+pPrin"able
@+ com+sun+s"ar+s0ee"+pS!reas0ee"(ocumen"
/reo 7ue con es"o 7uea emos"rao 7ue no 0a. 7ue es"ar aivinano naa* solo
0a. 7ue 0acer las !regun"as . b?s7ueas correc"as+
Para "erminar es"e "ema* en"ro e las macros 7ue "rae O!enO22ice+org* e;is"en
varias 7ue nos a.uan a e!urar nues"ras macros* !ara el "ema 7ue es"amos "ra"ano* e;is"e una
en es!ecial 7ue "e escribe la in2ormaci5n e las "res !ro!ieaes vis"as en un nuevo ocumen"o
e Nri"er* la macro se llama ;ritedb*In2o . solo 0a. 7ue !asarle el ob3e"o el cual 7ueremos
ob"ener su in2ormaci5n* veamoslo con un e3em!lo=
"u. $onsul&ando>.)%&os323
Bas+*5+.'a'+%s-5oad5+.'a'?2 "Hools" 3
$all U'+&%d.g#nfo2 "&a'@%s]&o7-g%&$u''%n&$o(7on%n&23 3
End "u.
Prueba la macro an"erior* llam<nola ese i2eren"es ocumen"os* aun7ue la
!uees e3ecu"ar siem!re . cuano la variable !asaa a!un"e Le2ec"ivamen"eM a una variable e
ob3e"o+ /on unas !e7ueKas varian"es !oemos 0acer 7ue en vez e un ocumen"o e Nri"er* nos
escriba la in2ormaci5n en una 0o3a e calculo* en el A!4nice B "e mues"ro como 0acerlo+
!.) 5rabajando con documentos
>n one veremos como mani!ular ocumen"os e O!enO22ice+org* crearlos .
guararlos+ >l "raba3o com?n a la ma.ora e los ocumen"os+
!.).1 Creando nue,os documentos
/omo .a i3imos* el m4"oo 7ue nos !ermi"e crear nuevos ocumen"os se llama
loadComponentFrom:83 . es un m4"oo el servicio Lcom+sun+s"ar+2rame+p/om!onen")oaerM*
veamos !rimero los e3em!los . es!u4s las e;!licaciones=
>7&+on Ex7l+*+&
A!renieno OOo Basic 1@5
"u. $'%ando<u%8os@o*u(%n&os123
@+( sRu&a !s "&'+ng
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
End "u.
IOa la !robas"eJ* mu. 2<cil InoJ* creamos una nueva 0o3a e calculo* . si* lo
euces bien* solo 0a. 7ue 0acer unos !e7ueKos cambios !ara crear un ocumen"o e "e;"o=
"u. $'%ando<u%8os@o*u(%n&os223
@+( sRu&a !s "&'+ng
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s^'+&%'"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
End "u.
O los em<s "i!os e ocumen"os=
"u. $'%ando<u%8os@o*u(%n&os323
@+( sRu&a !s "&'+ng
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s+(7'%ss"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
sRu&a A "7'+8a&%4fa*&o'?/sd'a^"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
sRu&a A "7'+8a&%4fa*&o'?/s(a&h"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
End "u.
IO una base e a"osJ* !robemos=
"u. $'%ando<u%8os@o*u(%n&os423
@+( sRu&a !s "&'+ng
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s.as%"
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/d%faul&"6 06 (!'g23 3
End "u.
Nos a un error IveraJ
1@G 5+F Traba3ano con ocumen"os
No es"a so!or"ao+ Para saber !or 7ue nos a un error* in"en"a abrir una base e
a"os nueva* observa como !rimero* si 7ueremos "raba3ar con ella* el asis"en"e nos LobligaM
!rimero a guararla con un nombre . es!u4s .a !oemos mani!ularla* es"o* solo !asa con las
bases e a"os* e los em<s ocumen"os !oemos crear "an"os nuevos ocumen"os como
7ueramos sin "ener 7ue guarar naa* en"onces Icomo creamos una nueva base e a"osJ* la
res!ues"a es sencilla* el mismo moo 7ue lo 0acemos ese la in"er2az e usuario* es ecir*
"enemos 7ue guarar !rimero la base e a"os=
>7&+on Ex7l+*+&
"u. $'%andoBas%@%@a&os123
@+( oB@"%'8+*+o !s >.)%*&
@+( oB@<u%8a !s >.)%*&
@+( sRu&a !s "&'+ng
@+( (!'g23
,Ru&a ? no(.'% dond% Fu%da'a gua'dada la .as% d% da&os
sRu&a A "/ho(%/(au/M+/Bas%/@a&os-od."
,$'%a(os %l s%'8+*+o Fu% nos 7%'(+&% (an+7ula' .as%s d% da&os
oB@"%'8+*+o A *'%a&%Cno"%'8+*%2 "*o(-sun-s&a'-sd.-@a&a.as%$on&%x&" 3
,$'%a(os una nu%8a +ns&an*+a d% una .as% d% da&os
oB@<u%8a A oB@"%'8+*+o-*'%a&%#ns&an*%23
,Es&a.l%*%(os %l &+7o d% .as%
oB@<u%8a-CR5 A "sd.*4%(.%dd%d4hsFld."
,O la gua'da(os
oB@<u%8a-@a&a.as%@o*u(%n&-s&o'%!sCR52 sRu&a6 (!'g23 3
End "u.
Toma en cuen"a os cosas mu. im!or"an"es en la macro an"erior* el nombre 7ue
uses* si .a e;is"e* sim!lemen"e lo reem!lazara* no "e !regun"ara naa* as 7ue "en cuiao e no
usar una ru"a o nombre e una base im!or"an"e 7ue "engas . seguno* la base e a"os as
creaa* no 7ueara Lregis"raaM en O!enO22ice+org* con lo 7ue no "enr<s acceso ese o"ros
!rogramas e la a!licaci5n* m<s aelan"e veremos como regis"rar una base e a"os !or c5igo+
!.).2 8utas de arc"i,os y directorios
O!enO22ice+org* al ser mul"i!la"a2orma* 0ace uso e las ru"as e arc0ivos .
irec"orios* en el 2orma"o UA)* !or e3em!lo=
2ile=1110ome1usuario1a"os1miarc0ivo+os
2ile=111=1a"os1miarc0ivo+os
Toma en cuen"a 7ue es"e 2orma"o 0ace uso e los carac"eres $--* a-z . A-k* .
cual7uier o"ro car<c"er ser< conver"io . mos"rao con su res!ec"ivo c5igo* !or e3em!lo* los
es!acios los reem!lazara con U#$+ Siem!re 7ue le !ases una ru"a e arc0ivo a cual7uier servicio
e O!enO22ice+org* !rocura* casi como una regla* !asarle la ru"a en 2orma"o Url* !ara ello* OOo
Basic cuen"a con os 2unciones mu. ?"iles 7ue 0acen el "raba3o /onver"ToUrl . /onver"'romUrl*
veamos como se usan=
"u. Ru&as@%!'*h+8os123
@+( sRu&a !s "&'+ng
,Es&a.l%*%(os una 'u&a
sRu&a A "/ho(%/(au/M+ a'*h+8o d% $al*-ods"
A!renieno OOo Basic 1@%
,O la (os&'a(os
MsgBox sRu&a

,5a *on8%'&+(os al fo'(a&o CR5
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
,O 8%(os %l '%sul&ado
MsgBox sRu&a

,R%g'%sa(os al fo'(a&o lo*al
sRu&a A $on8%'&J'o(C'l2 sRu&a 3
,O *o(7'o.a(os Fu% %s *o''%*&o
MsgBox sRu&a

End "u.
Abre varios ocumen"os e;is"en"es . e3ecu"a la siguien"e macro ese caa uno=
"u. @o*u(%n&o!*&+8oMos&'a'@a&os23
@+( sRu&aCR5 !s "&'+ng
@+( sRu&a$o(7l%&a !s "&'+ng
@+( sRu&a !s "&'+ng
@+( s<o(.'% !s "&'+ng
,R%f%'%n*+a al do*u(%n&o a*&+8o
sRu&aCR5 A Hh+s$o(7on%n&-g%&CR523
,$on8%'&+(os la 'u&a CR5 %n fo'(a&o lo*al
sRu&a$o(7l%&a A $on8%'&J'o(C'l2 sRu&aCR5 3
,>.&%n%(os solo %l no(.'% d%l a'*h+8o
s<o(.'% A J+l%<a(%>u&>f0a&h2 sRu&aCR5 3
,>.&%n%(os %l d+'%*&o'+o dond% %s&a %l a'*h+8o
sRu&a A @+'%*&o'?<a(%ou&of0a&h2sRu&a$o(7l%&a6 D%&0a&h"%7a'a&o'233
,Mos&'a(os los '%sul&ados
MsgBox sRu&a$o(7l%&a 9 $h'2133 9 $h'2133 9 s<o(.'% 9 $h'2133 9 $h'2133 9 sRu&a

End "u.
>l ob3e"o 5"isComponent* es una !alabra clave es!ecial 7ue esigna al ocumen"o
ese el cual llamamos a nues"ra macro* es buena !rac"ica e !rogramaci5n* com!robar siem!re
a 7ue "i!o e ocumen"o es"a a!un"ano T0is/om!onen"* no es lo mismo si e3ecu"as una macro
ese la in"er2az el usuario* a 7ue lo 0agas ese el :(>* . aun ese el :(>* e!ener< si
0aces re2erencia a el ese un arc0ivo cual7uiera o ese el arc0ivo es!ecial Mis Macros* as 7ue
siem!re veri2ica 7ue el ob3e"o a!un"ao con T0is/om!onen"* sea el 7ue es!eras+ Observa 7ue
0acemos uso e algunas 2unciones incor!oraas e O!enO22ice+org* es"as son=
'ileNameOu"O2Pa"0* 7ue "e evuelve e la ru"a !asaa solo el nombre el arc0ivo .
(irec"or.Nameou"o2Pa"0* 7ue "e regresa solo el irec"orio e la ru"a el arc0ivo !asaa+ >s"as .
o"ras ?"iles 2unciones se encuen"ran en"ro e la biblio"eca Tools e O!enO22ice+org
>n nues"ro siguien"e "ema* veremos la im!or"ancia e usar las ru"as e arc0ivos .
irec"orios en 2orma"o Url . recuera 7ue en S+O+ )inu;* se "iene en cuen"a la i2erencia en"re
ma.?sculas . min?sculas+
!.). (briendo, *uardando y cerrando documentos
1@, 5+F Traba3ano con ocumen"os
Abrir arc0ivos e;is"en"es es sumamen"e sencillo* usamos el mismo m4"oo usao
!ara crear nuevos ocumen"os* !ero en el !ar<me"ro ru"a* le es!eci2icamos la ubicaci5n el
arc0ivo a abrir e la siguien"e manera=
"u. !.'+%ndo@o*u(%n&os123
@+( sRu&a !s "&'+ng
@+( (!'g23
@+( o@o*u(%n&o !s >.)%*&
,R%%(7la:a %s&a 'u&a 7o' la 'u&a d% &u a'*h+8o
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (!'g23 3
End "u.
Si "u arc0ivo e;is"e* el c5igo an"erior lo abrir<* Lsiem!reM u"iliza /onver"ToUrl cuano
uses ru"as e arc0ivos o irec"orios en 2unciones e O!enO22ice+org 7ue las re7uieran
Si abres una !lan"illa* es"a se com!or"ara e 2orma normal* es ecir* "e abrir< una
co!ia e ic0a !lan"illa=
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/(+7lan&+lla-o&&" 3
o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (!'g23 3
Pero "ambi4n !oras 7uerer abrir la !lan"illa !ara ei"arla* en es"e caso* le inicamos
en las o!ciones e a!er"ura es"o* observa como se eclara la variable mO!ciones=
"u. !.'+%ndo@o*u(%n&os323
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A "!sH%(7la&%"
(>7*+on%s203-1alu% A Jals%

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/(+0lan&+lla-o&s" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
)a es"ruc"ura Hcom+sun+s"ar+beans+Pro!er".6alueH es"a con2ormaa !or un !ar e
valores* un nombre . un valor . es mu. 2recuen"emen"e usaa cuano se !rograma en OOo
Basic* observa como la ma"riz e la variable mO!ciones la 0emos inicializao en $* es ecir* solo
con"enr< un !ar e valores* !ero mu. bien !uee "ener m<s o!ciones como veremos m<s
aelan"e+ >n la macro an"erior le es"amos inicano la !ro!iea AsTem!la"e (7ue seria algo as
como >s Plan"illa)* si el valor es 2also ('alse)* le es"amos inicano 7ue 7ueremos abrir la !lan"illa
!ara ei"arla* en caso con"rario (True) abrir< una co!ia e la !lan"illa+ )o in"eresan"e e es"a
!ro!iea es 7ue !er2ec"amen"e la !uees a!licar a arc0ivos e;is"en"es* es ecir* arc0ivos 7ue
LnoM necesariamen"e sean !lan"illas* con es"a !ro!iea !oemos 2orzarlos a com!or"arse como
!lan"illas* !or e3em!lo* !rueba el siguien"e c5igo con alg?n arc0ivo e;is"en"e 7ue no sea !lan"illa=
"u. !.'+%ndo@o*u(%n&os423
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A "!sH%(7la&%"
(>7*+on%s203-1alu% A H'u%

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% U'+&%'-od&" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
A!renieno OOo Basic 1@-
End "u.
Observa como el arc0ivo es un ocumen"o e "e;"o normal (O(T)* !ero con la
!ro!iea AsTem!la"e* 2orzamos su a!er"ura como una !lan"illa+ O"ras !ro!ieaes in"eresan"es
son AeaOnl. (Solo )ec"ura) !ara abrir un arc0ivo como solo lec"ura . Pass8or (/on"raseKa)
!ara abrir arc0ivos con con"raseKa=
"u. !.'+%ndo@o*u(%n&os523
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A "R%ad>nl?"
(>7*+on%s203-1alu% A H'u%

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% U'+&%'-od&" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
"u. !.'+%ndo@o*u(%n&os623
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
,5a *on&'as%\a (=s s%gu'a
(>7*+on%s203-<a(% A "0ass^o'd"
(>7*+on%s203-1alu% A "a.'%&%"

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% @'a^-odg" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
Por su!ues"o !uees combinar cual7uier can"ia e o!ciones siem!re . cuano no
en"ren en con2lic"o=
"u. !.'+%ndo@o*u(%n&os723
@+( sRu&a !s "&'+ng
@+( (>7*+on%s213 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A "R%ad>nl?"
(>7*+on%s203-1alu% A H'u%
(>7*+on%s213-<a(% A "0ass^o'd"
(>7*+on%s213-1alu% A "a.'%&%"

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% @'a^-odg" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
Prueba a !oner la con"raseKa incorrec"a . observa el mensa3e* !or su!ues"o*
!oemos solici"arle al usuario la con"raseKa . no es"a em<s veri2icar 7ue el arc0ivo e;is"a=
"u. !.'+%ndo@o*u(%n&os823
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
@+( s$on&'a !s "&'+ng

s$on&'a A H'+(2 #n7u&Box2 "#n&'odu*% la *on&'as%\a d% a7%'&u'a" 3 3
(>7*+on%s203-<a(% A "0ass^o'd"
1F$ 5+F Traba3ano con ocumen"os
(>7*+on%s203-1alu% A s$on&'a
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% @'a^-odg" 3
,1%'+f+*a(os Fu% %x+s&a %l a'*h+8o
#f 5%n2@+'2sRu&a33 Y 0 Hh%n
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
Els%
MsgBox "El a'*h+8o no %x+s&%"
End #f
End "u.
Mien"ras un "i!o e arc0ivo sea so!or"ao !or O!enO22ice+org* lo !or<s abrir con el
m4"oo loa/om!onen"'romUA)* en el siguien"e e3em!lo* abrimos un arc0ivo "i!o (oc* un c"m .
un pls=
"u. !.'+%ndo@o*u(%n&os923
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/$a(7a(%n&os-do*" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/R%na*+(+%n&o-h&(" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/da&os-xls" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
/uano abres un arc0ivo !or c5igo . es"e con"iene macros* "u !uees es"ablecer si
se abre con las macros ac"ivaas* e 2orma !ree"erminaa lo abre con las macros esac"ivaas*
as 7ue solo nos res"a saber como abrirlo con las macros ac"ivaas=
"u. !.'+%ndo@o*u(%n&os1023
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A "Ma*'oEx%*u&+onMod%"
(>7*+on%s203-1alu% A 4

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
O"ra o!ci5n in"eresan"e* es la 7ue nos !ermi"e abrir una !resen"aci5n e iniciarla
inmeia"amen"e=
"u. !.'+%ndo@o*u(%n&os1123
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
(>7*+on%s203-<a(% A ""&a'&0'%s%n&a&+on"
(>7*+on%s203-1alu% A H'u%

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% #(7'%ss-od7" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
End "u.
A!renieno OOo Basic 1F1
Por su!ues"o* la iea general e abrir un arc0ivo es !ara ob"ener a"os e el o !ara
mani!ularlo* .a sea un ocumen"o nuevo o uno e;is"en"e* veamos como guarar los cambios
realizaos . cerrar el arc0ivo=
"u. !.'+%ndoDua'dando@o*u(%n&os123
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&

sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
,!PC# 8a &odo %l *od+go Fu% Fu+%'as 7a'a (an+7ula' %l a'*h+8o
MsgBox "!'*h+8o a.+%'&o ? (od+f+*ado *o''%*&a(%n&%6 7'%s+on% !*%7&a' 7a'a gua'da' ? *%''a'"
,Dua'da(os los *a(.+os
o@o*-s&o'%23
,$%''a(os %l a'*h+8o
o@o*-*los%2H'u%3
End "u.
>l c5igo an"erior 2uncionara con un arc0ivo e;is"en"e* !ero con uno nuevo no* "e
ar< un error* !or su!ues"o no me creas* com!ru4balo+ )os ocumen"os "ienen una !ro!ieaes
7ue no a.uan a saber si un ocumen"o .a es"a guarao o no=
"u. !.'+%ndoDua'dando@o*u(%n&os223
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&

sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
MsgBox o@o*-has5o*a&+on23
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3

MsgBox o@o*-has5o*a&+on23

End "u.
>l !rimer mensa3e ebe mos"rar"e 'also ('alse) . el seguno 6eraero (True)*
como ebe ser+
Tambi4n "enemos una !ro!iea 7ue nos a.ua a saber si un ocumen"o 0a sio
moi2icao o no* e3ecu"a la siguien"e macro* llam<nola ese i2eren"es ocumen"os* unos
abrelos . moi2icalos an"es e e3ecu"arla* o"ros* solo abrelos . e3ecu"ala !ara 7ue no"es la
i2erencia=
"u. Es&aMod+f+*ado23

MsgBox Hh+s$o(7on%n&-+sMod+f+%d23

End "u.
O o"ra m<s 7ue nos in2orma si el ocumen"o es e solo lec"ura=
"u. !.'+%ndoDua'dando@o*u(%n&os323
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
1F# 5+F Traba3ano con ocumen"os
@+( o@o* !s >.)%*&

sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
MsgBox o@o*-+sR%ad>nl?23
(>7*+on%s203-<a(% A "R%ad>nl?"
(>7*+on%s203-1alu% A H'u%
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3

MsgBox o@o*-+sR%ad>nl?23
End "u.
Oa "e imaginaras 7ue ?"il es saber* an"es e guarar un arc0ivo* si es"e es e solo
lec"ura* si 0a sio moi2icao o si .a 0a sio guarao* an"es e ver "raba3ano 3un"as "oas es"as
!ro!ieaes* veamos como guarar un arc0ivo nuevo con el m4"oo s"oreAsUrl=
"u. !.'+%ndoDua'dando@o*u(%n&os423
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&

sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
,Es&a.l%*%(os la 'u&a ? no(.'% dond% s% gua'da'a %l a'*h+8o
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/!'*h+8o d% $al*-ods" 3
,Dua'da(os %l a'*h+8o
o@o*-s&o'%!sCR52 sRu&a6 (>7*+on%s23 3

End "u.
Observa como re7uiere os !ar<me"ros* la ru"a el arc0ivo . una ma"riz e
!ro!ieaes* algunas e las cuales veremos a con"inuaci5n+ Toma no"a e 7ue si el arc0ivo .a
e;is"e lo reem!lazara sin avisar"e !or lo 7ue es buena !rac"ica e !rogramaci5n veri2icar es"o=
"u. !.'+%ndoDua'dando@o*u(%n&os523
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/!'*h+8o d% $al*-ods" 3
#f 5%n2 @+'2 sRu&a 33 A 0 Hh%n
,Dua'da(os %l a'*h+8o
o@o*-s&o'%!sCR52 sRu&a6 (>7*+on%s23 3
Els%
MsgBox "El a'*h+8o ?a %x+s&%6 no s% ha gua'dado %l nu%8o a'*h+8o"
End #f

End "u.
Te 7uea e "area im!lemen"ar la !regun"a al usuario !ara reem!lazar o no el
arc0ivo+ 6eamos algunas !ro!ieaes in"eresan"es !ara guarar arc0ivos* !or e3em!lo* guarar
con con"raseKa=
"u. !.'+%ndoDua'dando@o*u(%n&os623
A!renieno OOo Basic 1F@
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
,$o(o 8%: no &%ngo (u*ha +(ag+na*+on
(>7*+on%s203-<a(% A "0ass^o'd"
(>7*+on%s203-1alu% A "a.'%&%"
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/!'*h+8o d% $al*-ods" 3
o@o*-s&o'%!sCR52 sRu&a6 (>7*+on%s23 3

End "u.
/omo sabes* O!enO22ice+org* so!or"a la im!or"aci5n1e;!or"aci5n e m?l"i!les
2orma"os e arc0ivos* veamos como guarar* !or e3em!lo* en 2orma"o (O/=
"u. !.'+%ndoDua'dando@o*u(%n&os723
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
sRu&a A "7'+8a&%4fa*&o'?/s^'+&%'"
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
,Es&a.l%*%(os %l f+l&'o a do*u(%n&os &+7o @>$
(>7*+on%s203-<a(% A "J+l&%'<a(%"
(>7*+on%s203-1alu% A "M" Uo'd 97"
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/!'*h+8o d% Uo'd-do*" 3
o@o*-s&o'%!sCR52 sRu&a6 (>7*+on%s23 3

End "u.
>l m4"oo s"oreAsUA) "ambi4n lo !uees usar !ara abrir un arc0ivo e;is"en"e .
guararlo con o"ro nombre=
"u. !.'+%ndoDua'dando@o*u(%n&os823
@+( sRu&a !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
@+( o@o* !s >.)%*&
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/M+ a'*h+8o d% $al*-ods" 3
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
sRu&a A $on8%'&HoC'l2 "/ho(%/(au/<u%8o a'*h+8o $al*-ods" 3
o@o*-s&o'%!sCR52 sRu&a6 (>7*+on%s23 3

End "u.
Para "erminar es"a ca!i"ulo* vamos a 0acer un !oco m<s in"erac"ivo la a!er"ura .
guarao e arc0ivos* !ermi"amos 7ue el usuario esco3a la ru"a . el arc0ivo ese un cuaro e
ialogo* !ara ello* usaremos el servicio com+sun+s"ar+ui+ialogs+'ilePicser* 7ue nos !ermi"e 0acer
es"o* veamos como=
"u. !.'+'!'*h+8o123
@+( o@lg!.'+'!'*h+8o as >.)%*&
@+( (!'*h+8o23 !s "&'+ng
@+( (>7*+on%s23
@+( sRu&a !s "&'+ng
@+( o@o* !s >.)%*&
,$'%a(os %l s%'8+*+o n%*%sa'+o
o@lg!.'+'!'*h+8o A $'%a&%Cno"%'8+*% 2"*o(-sun-s&a'-u+-d+alogs-J+l%0+*]%'"3
1FF 5+F Traba3ano con ocumen"os
,Es&a.l%*%(os %l &+&ulo d%l *uad'o d% d+alogo
o@lg!.'+'!'*h+8o-s%&H+&l%2""%l%**+ona %l a'*h+8o a a.'+'"3
,$on %l (%&odo -Ex%*u&%23 (os&'a(os %l *uad'o d% d+alogo
,"+ %l usua'+o 7'%s+ona !.'+' %l (%&odo d%8u%l8% 1 Fu% 7od%(os %8alua' *o(o 1%'dad%'o 2H'u%3
,"+ 7'%s+ona $an*%la' d%8u%l8% 0
#f o@lg!.'+'!'*h+8o-Ex%*u&%23 Hh%n
,@% fo'(a 7'%d%&%'(+nada6 solo s% 7u%d% s%l%**+ona' un a'*h+8o
,7%'o d%8u%l8% una (a&'+: d% &odos (odos *on la 'u&a *o(7l%&a
,d%l a'*h+8o %n fo'(a&o CR5
(!'*h+8o23 A o@lg!.'+'!'*h+8o-g%&J+l%s23
,El 7'+(%' %l%(%n&o d% la (a&'+: %s %l a'*h+8o s%l%**+onado
sRu&a A (!'*h+8o203
,O lo a.'+(os
o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
Els%
,"+ %l usua'+o 7'%s+ona $an*%la'
MsgBox "0'o*%so *an*%lado"
End #f

End "u.
Si 7uieres abrir m<s e un arc0ivo a la vez* usa=
"u. !.'+'!'*h+8o223
@+( o@lg!.'+'!'*h+8o as >.)%*&
@+( (!'*h+8os23 !s "&'+ng
@+( (>7*+on%s23
@+( *o1 !s #n&%g%'
o@lg!.'+'!'*h+8o A $'%a&%Cno"%'8+*% 2"*o(-sun-s&a'-u+-d+alogs-J+l%0+*]%'"3
o@lg!.'+'!'*h+8o-s%&H+&l%2""%l%**+ona los a'*h+8os a a.'+'"3
,Es&a.l%*%(os Fu% s% 7u%dan s%l%**+ona' (as d% un a'*h+8o
o@lg!.'+'!'*h+8o-s%&Mul&+"%l%*&+onMod%2H'u%3

#f o@lg!.'+'!'*h+8o-Ex%*u&%23 Hh%n
(!'*h+8os23 A o@lg!.'+'!'*h+8o-g%&"%l%*&%dJ+l%s23
,Mos&'a(os los a'*h+8os s%l%**+onados
Jo' *o1 A 5Bound2 (!'*h+8os23 3 Ho CBound2 (!'*h+8os23 3
MsgBox $on8%'&J'o(C'l2 (!'*h+8os2*o13 3
<%x&
,H% Fu%da d% &a'%a a.'+' &odos los a'*h+8os
,o@o* A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 sRu&a6 "/.lan]"6 06 (>7*+on%s23 3
Els%
MsgBox "0'o*%so *an*%lado"
End #f

End "u.
A0ora* mos"ramos el cuaro e ialogo &uarar /omo* !ara !ermi"ir al usuario
seleccionar car!e"a . nombre e arc0ivo one guarar su arc0ivo=
"u. Dua'da'!'*h+8o123
@+( o@lgDua'da'!'*h+8o as >.)%*&
@+( (@lg>7*+on%s23
@+( (!'*h+8o23 !s "&'+ng
@+( (>7*+on%s23
,Csa(os %l (+s(o s%'8+*+o 7a'a a.'+' a'*h+8os6 7u%s %s %l (+s(o *uad'o d% d+alogo
o@lgDua'da'!'*h+8o A $'%a&%Cno"%'8+*% 2"*o(-sun-s&a'-u+-d+alogs-J+l%0+*]%'"3
,Es&a.l%*%(os Fu% nos (u%s&'% %l *uad'o d% d+alogo Dua'da' $o(o *on las
,*as+llas d% 8%'+f+*a*+on !u&o%x&%ns+on ? gua'da' *on *on&'as%\a
,*o(-sun-s&a'-u+-d+alogs-H%(7la&%@%s*'+7&+on-J#5E"!1E/!CH>EEHE<"#></0!""U>R@ A 2
(@lg>7*+on%s23 A !''a?223
U+&h o@lgDua'da'!'*h+8o
,#n+*+a(os %l *uad'o d% d+alogo *on las o7*+on%s s%l%**+onadas
-#n+&+al+:% 2 (@lg>7*+on%s23 3
A!renieno OOo Basic 1F5
,!g'%a(os f+l&'os d% a'*h+8os
-!77%ndJ+l&%'2 "!ll f+l%s 2-3"6 "-" 3
-!77%ndJ+l&%'2 "@o*u(%n&o d% H%x&o >@J 2-od&3"6 "-od&" 3
-!77%ndJ+l&%'2 "Ho)a d% *al*ulo >@J 2-ods3"6 "-ods" 3
End U+&h

,5o (os&'a(os
#f o@lgDua'da'!'*h+8o-Ex%*u&%23 Hh%n
(!'*h+8o23 A o@lgDua'da'!'*h+8o-g%&J+l%s23
,"olo &% (u%s&'o la 'u&a ? no(.'% d% a'*h+8o s%l%**+onado
,"olo &% '%s&a gua'da' %l a'*h+8o
MsgBox $on8%'&J'o(C'l2 (!'*h+8o203 3
Els%
MsgBox "0'o*%so *an*%lado"
End #f
End "u.
!.).) E'portando a +DF
>;!or"ar a P(' ese O!enO22ice+org es mu. sencillo* lo es "ambi4n con OOo Basic*
!rueba la siguien"e macro ese i2eren"es ocumen"os* !or a0ora* asegura"e e 7ue los arc0ivos
.a es"4n guaraos an"es e e;!or"ar* "e 7uea e "area in"en"ar aa!"arla !ara arc0ivos nuevos=
"u. Ex7o'&a'0@J23
@+( o@o* !s >.)%*&
@+( sH+7o@o* !s "&'+ng
@+( (>7*+on%s203 !s <%^ "*o(-sun-s&a'-.%ans-0'o7%'&?1alu%"
d+( sRu&a !s s&'+ng
Bas+*5+.'a'+%s-5oad5+.'a'?2 "Hools" 3
,R%f%'%n*+a al do*u(%n&o d%sd% dond% s% lla(a la (a*'o
o@o* A Hh+s$o(7on%n&

,>.&%n%(os %l &+7o d% do*u(%n&o6 %s&a fun*+Kn ?a la usa(os
sH+7o@o* A H+7o@o*u(%n&o2 o@o* 3

,"olo s% 7u%d%n %x7o'&a' 27o' aho'a3
"%l%*& $as% sH+7o@o*
,los s+gu+%n&% do*u(%n&os
$as% "$al*"6 "U'+&%'"6 "@'a^"6 "#(7'%ss"6 "Ma&h"
,Es&a.l%*%(os %l &+7os d% f+l&'o
(>7*+on%s203-<a(% A "J+l&%'<a(%"
,$on&'u+(os %l f+l&'o *o''%*&o 0@J 7a'a *ada a7l+*a*+on
(>7*+on%s203-1alu% A 5$as%2sH+7o@o*3 9 "/7df/Ex7o'&"
,$ons&'u+(os la 'u&a *o''%*&a6 usa(os %l (+s(o d+'%*&o'+o
,? no(.'% d%l a'*h+8o6 solo ag'%ga(os la %x&%ns+on 0@J
sRu&a A D%&J+l%<a(%U+&hou&Ex&%ns+on2 o@o*-g%&C'l 3 9 "-7df"
,Dua'da(os %l a'*h+8o
o@o*-s&o'%HoCR52 sRu&a6 (>7*+on%s23 3
$as% Els%
MsgBox "!7l+*a*+on no so7o'&ada"
End "%l%*&
End "u.
)a 2unci5n &e"'ileNameNi"0ou">;"ension viene in"egraa en las macros e
O!enO22ice+org* e la ru"a !asaa* "e evuelve "oa la ru"a !ero sin la e;"ensi5n el arc0ivo*
1FG 5+F Traba3ano con ocumen"os
observa como solo le agregamos la e;"ensi5n P('* "ambi4n observa 7ue es"a vez LnoM 0emos
usao s"oreAsUrl* sino s"oreToUrl !ara e;!or"ar el arc0ivo+
Te 0abr<s ao cuen"a e 7ue las varian"es !ueen ser inmensas* !ero creo 7ue
"enemos los elemen"os !ara em!ezar a au"oma"izar nues"ras "areas iarias* en los siguien"es
ca!"ulos* a0onaremos en las carac"ers"icas es!eci2icas e caa "i!o e ocumen"o+
!.).! 5areas comunes en documentos
6eamos algunas "areas comunes a la ma.ora e los ocumen"os e OOo* !or
e3em!lo* !ara saber el "i"ulo el ocumen"o ac"ivo* usamos=
"u. $on&'ola'!7l+*a*+on123
@+( o@o* !s >.)%*&
@+( o$on&'olado' !s >.)%*&
,El do*u(%n&o d%sd% dond% s% lla(a %s&a (a*'o
o@o* A Hh+s$o(7on%n&
,El *on&'ollado' d%l do*u(%n&o a*&ual
o$on&'olado' A o@o*-g%&$u''%n&$on&'oll%'
,El &+&ulo
MsgBox o$on&'olado'-g%&H+&l%
End "u.
Para ac"ivar el ocumen"o 7ue 7uieras* se usa el m4"oo set5ocus e la siguien"e
manera* en one ac"ivamos uran"e un seguno . meio caa ocumen"o e OOo abier"o+
"u. $on&'ola'!7l+*a*+on223
@+( o@o*u(%n&os !s >.)%*&
@+( o@o*u(%n&o !s >.)%*&
@+( o1%n&ana !s >.)%*&
@+( oEnu(%'a@o*u(%n&os !s >.)%*&
,!**%d%(os a &odos los do*u(%n&os a*&ual(%n&% a.+%'&os
o@o*u(%n&os A "&a'@%s]&o7-g%&$o(7on%n&s23
,Enu(%'a(os *ada uno
oEnu(%'a@o*u(%n&os A o@o*u(%n&os-*'%a&%Enu(%'a&+on23
,hasMo'%El%(%n&s d%8u%l8% 8%'dad%'o 2H'u%3 (+%n&'as ha?a %l%(%n&os
@o Uh+l% oEnu(%'a@o*u(%n&os-hasMo'%El%(%n&s23
,<os d%s7la:a(os al s+gu+%n&% %l%(%n&o ? lo as+gna(os
o@o*u(%n&o A oEnu(%'a@o*u(%n&os-n%x&El%(%n&23
,>.&%n%(os a**%so a la 8%n&ana
o1%n&ana A o@o*u(%n&o-g%&$u''%n&$on&'oll%'-g%&J'a(%-g%&$o(7on%n&U+ndo^23
,5% %n8+a(os %l fo*o 7a'a a*&+8a'la
o1%n&ana-s%&Jo*us23
,Es7%'a(os 1-5 s%gundos 7a'a 7asa' al s+gu+%n&% do*u(%n&o
Ua+& 1500
5oo7
End "u.
Una !osibilia in"eresan"e* es la e con"rolar la barra e es"ao e las a!licaciones*
sobre "oo !or la o!ci5n e !oer mos"rar una barra e !rogreso* como en el siguien"e e3em!lo=
"u. $on&'ola'!7l+*a*+on323
@+( oBa''aEs&ado !s >.)%*&
@+( *o1 !s #n&%g%'
A!renieno OOo Basic 1F%
,R%f%'%n*+a a la .a''a d% %s&ado d%l do*u(%n&o a*&+8o
oBa''aEs&ado A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-"&a&us#nd+*a&o'
,Es&a.l%*%(os %l &%x&o +n+*+al ? %l l+(+&% d% la .a''a d% 7'og'%so
oBa''aEs&ado-s&a'&2 "$on&ando "6 10 3
Jo' *o1 A 1 Ho 10
,Es&a.l%*%(os %l 8alo' d% la .a''a d% 7'og'%so
oBa''aEs&ado-s%&1alu%2 *o1 3
,Es7%'a(os un s%gundo
Ua+& 1000
<%x&
,Es +(7o'&an&% f+nal+:a' la .a''a d% %s&ado 7a'a d%8ol8%'l% %l *on&'ol a la a7l+*a*+Kn
oBa''aEs&ado-%nd23
End "u.
)a macro an"erior* 2uncionar< en "oas las a!licaciones* e;ce!"o en Base* !or lo 7ue
"ienes 7ue valiar en su caso si es necesario* "ambi4n !uees cambiar el "e;"o uran"e el !rogreso
!ara ar m<s in2ormaci5n al usuario* como en=
"u. $on&'ola'!7l+*a*+on423
@+( oBa''aEs&ado !s >.)%*&
@+( *o1 !s #n&%g%'
,R%f%'%n*+a a la .a''a d% %s&ado d%l do*u(%n&o a*&+8o
oBa''aEs&ado A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-"&a&us#nd+*a&o'
,Es&a.l%*%(os %l &%x&o +n+*+al ? %l l+(+&% d% la .a''a d% 7'og'%so
oBa''aEs&ado-s&a'&2 "0'o*%sando 5Gn%as "6 10 3
Jo' *o1 A 1 Ho 10
,Es&a.l%*%(os %l 8alo' d% la .a''a d% 7'og'%so
oBa''aEs&ado-s%&1alu%2 *o1 3
,O %l &%x&o
oBa''aEs&ado-s%&H%x&2 "0'o*%sando la lGn%a4 " 9 *o1 3
,Es7%'a(os un s%gundo
Ua+& 1000
<%x&
,Es +(7o'&an&% f+nal+:a' la .a''a d% %s&ado 7a'a d%8ol8%'l% %l *on&'ol a la a7l+*a*+Kn
oBa''aEs&ado-%nd23
End "u.
O"ra o!ci5n es cambiar el zoom e la vis"a el ocumen"o+
"u. $on&'ola'!7l+*a*+on523
@+( o@o* !s >.)%*&
@+( o@H !s >.)%*&
d+( (>7*203 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
,!**%so al (a'*o d%l do*u(%n&o
o@o* A Hh+s$o(7on%n&-$u''%n&$on&'oll%'-J'a(%
,El d%s7a*hado' d% +ns&'u**+on%s a n+8%l usua'+o
o@H A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-f'a(%-@+s7a&*hH%l7%'"3
,El (S&odo Fu% d%s%a(os %)%*u&a'
(>7*203-<a(% A "`oo("l+d%'-$u''%n&`oo("
,El 8alo' d%s%ado6 %n %s&% *aso 150e
(>7*203-1alu% A 150
,E)%*u&a(os la o'd%n
o@H-%x%*u&%@+s7a&*h2o@o*6 "-uno4`oo("l+d%'"6 ""6 06 (>7*23 3
End "u.
1F, 5+F Traba3ano con ocumen"os
)a o!ci5n an"erior* solo 2uncionar< en las a!licaciones 7ue so!or"en zoom9 Nri"er*
/alc* :m!ress . (ra8* Base . Ma"0 no lo im!lemen"an* !ero no "e ar< ning?n error si llamas a la
macro ese es"as a!licaciones* sim!lemen"e ignorar< la ins"rucci5n+
A!renieno OOo Basic 1F-
= 5rabajando con "ojas de calculo 7 Calc
>n el ca!i"ulo an"erior a!renis"e a crear* abrir . guarar arc0ivos e /alc . o"ros
"i!os e ocumen"os* en es"e* a!reneremos m<s e"alles el mane3o e la 0o3a e calculo con
c5igo OOo Basic 7ue se basan en el servicio= com+sun+s"ar+s0ee"+S!reas0ee"(ocumen"
=.1 5rabajando con "ojas
Para acceer a "oas las 0o3as e un ocumen"o e 0o3a e calculo* usamos=
"u. Hodas5asHo)as123
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
,!**%so al do*u(%n&o d%sd% dond% s% lla(a a %s&a (a*'o
o@o* A Hh+s$o(7on%n&
,<os as%gu'a(os d% Fu% s%a una ho)a d% *al*ulo
#f o@o*-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3 Hh%n
,R%f%'%n*+a a H>@!" las ho)as d%l do*u(%n&o
oHo)as A o@o*-g%&"h%%&s23
,Mos&'a(os *uan&as son
MsgBox oHo)as-g%&$oun&23
Els%
MsgBox "<o %s un do*u(%n&o d% ho)a d% *al*ulo"
End #f
End "u.
Asegura"e e llamar a la macro an"erior ese una 0o3a e calculo* si es"as usano
el arc0ivo es!ecial Mis Macros* "e recomieno siem!re veri2icar 7ue T0is/om!onen"* a!un"a
e2ec"ivamen"e a un ocumen"o e 0o3a e calculo como se vio m<s arriba* e a0ora en aelan"e*
ar4 !or 0ec0o 7ue lo sabes . "u e"erminaras si 0aces la valiaci5n o no+
Poemos acceer a los nombres e "oas las 0o3as
"u. Hodas5asHo)as223
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( (<o(.'%sHo)as23 !s "&'+ng
@+( sM%nsa)% !s "&'+ng
Dlo.al"*o7%-Bas+*5+.'a'+%s-5oad5+.'a'?2 "Hools" 3
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23

,>.&%n%(os una (a&'+: *on los no(.'%s d% &odas las ho)as
(<o(.'%sHo)as23 A oHo)as-g%&El%(%n&<a(%s23

,$on&'u+(os %l (%nsa)%
sM%nsa)% A "El a'*h+8o " 9 J+l%<a(%>u&>f0a&h2 o@o*-g%&5o*a&+on23 3 9 /
$h'2133 9 "&+%n% las s+gu+%n&%s ho)as" 9 $h'2133 9 $h'2133
sM%nsa)% A sM%nsa)% 9 [o+n2 (<o(.'%sHo)as236 $h'2133 3

,5o (os&'a(os
MsgBox sM%nsa)%

15$ G+1 Traba3ano con 0o3as
End "u.
)a 2unci5n 'ileNameOu"O2Pa"0* viene incor!oraa en O!enO22ice+org . nos
evuelve solo el nombre el arc0ivo e la ru"a !asaa+
Tambi4n !oemos mos"rar los nombres e las 0o3as una a una=
"u. Hodas5asHo)as323
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( (<o(.'%sHo)as23 !s "&'+ng
@+( *o1 !s #n&%g%'
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23

,>.&%n%(os una (a&'+: *on los no(.'%s d% &odas las ho)as
(<o(.'%sHo)as23 A oHo)as-g%&El%(%n&<a(%s23

Jo' *o1 A 5Bound2 (<o(.'%sHo)as23 3 Ho CBound2 (<o(.'%sHo)as23 3
MsgBox (<o(.'%sHo)as2*o13
<%x&

End "u.
Poemos evolver solo la 0o3a 7ue nos in"eresa !or su nombre=
"u. CnaHo)a123
@+( o@o* !s >.)%*&
@+( oHo)a !s >.)%*&
o@o* A Hh+s$o(7on%n&
,!**%d%(os a una ho)a 7o' su no(.'%
oHo)a A o@o*-g%&"h%%&s23-g%&B?<a(%2"@a&os !gos&o"3
,"olo *o(7'o.a(os Fu% %s la ho)a *o''%*&a
MsgBox oHo)a-g%&<a(%23

End "u.
Pero si la 0o3a no e;is"e* la macro an"erior "e ar< un error* el m4"oo 0asB.Name es
mu. ?"il !ara saber si una 0o3a e;is"e* lo cual es inis!ensable !ara acceer a ella=
"u. CnaHo)a223
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( s<o(.'%Ho)a !s "&'+ng
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23
s<o(.'%Ho)a A "@a&os !gos&o"

,$o(7'o.a(os Fu% la ho)a %x+s&a 7a'a 7od%' a**%d%' a %lla
#f oHo)as-hasB?<a(%2 s<o(.'%Ho)a 3 &h%n
,!**%d%(os a una ho)a 7o' su no(.'%
oHo)a A oHo)as-g%&B?<a(%2 s<o(.'%Ho)a 3
MsgBox oHo)a-g%&<a(%23 9 " T %x+s&% %n %l do*u(%n&o"
Els%
MsgBox "5a ho)a T" 9 s<o(.'%Ho)a 9 "T no %x+s&%"
End #f

End "u.
A!renieno OOo Basic 151
No"a 7ue el m4"oo 0asB.Name es un m4"oo el con3un"o e las 0o3as (ge"S0ee"s)
. "e evolver< veraero (True) en caso e 7ue la 0o3a e;is"a . 2also ('alse) en caso e 7ue no+
>s"e m4"oo no is"ingue en"re ma.?sculas . min?sculas+
Poemos acceer a una 0o3a !or su nice* recuera 7ue los nices en
O!enO22ice+org em!iezan en cero* en las 0o3as* la numeraci5n em!ieza e iz7uiera a erec0a+
"u. CnaHo)a323
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23

,!**%d%(os a la ho)a 7o' %l +nd+*%
oHo)a A oHo)as-g%&B?#nd%x2 1 3
MsgBox oHo)a-g%&<a(%23

End "u.
(el mismo moo 7ue !or el nombre* si "ra"as e acceer a una 0o3a !or un nice
7ue no e;is"a* "e ar< un error* lo !oemos com!robar asegur<nonos 7ue el numero e nice a
consul"ar siem!re es menor al "o"al e las 0o3as=
"u. CnaHo)a423
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( +<u(%'oHo)a !s #n&%g%'
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23
+<u(%'oHo)a A 1

,$o(7'o.a(os Fu% la ho)a %x+s&a
#f +<u(%'oHo)a X oHo)as-g%&$oun&23 Hh%n
,!**%d%(os a la ho)a 7o' %l +nd+*%
oHo)a A oHo)as-g%&B?#nd%x2 +<u(%'oHo)a 3
MsgBox oHo)a-g%&<a(%23
Els%
MsgBox "<u(%'o d% ho)a no %x+s&%"
End #f

End "u.
Por lo 7ue !oemos acceer a caa 0o3a e un ocumen"o* "ambi4n !or su nice=
"u. Hodas5asHo)as423
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( *o1 !s #n&%g%'
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23
,<o&a Fu% %l l+(+&%6 %s %l &o&al d% ho)as (%nos uno6 7o' Fu% *o(+%n:a %n 0
Jo' *o1 A 0 Ho oHo)as-g%&$oun&23T1
oHo)a A oHo)as-g%&B?#nd%x2 *o1 3
MsgBox oHo)a-g%&<a(%23
<%x&

End "u.
15# G+1 Traba3ano con 0o3as
Toma en cuen"a 7ue si mueves una 0o3a e !osici5n en relaci5n con las em<s* su
nice cambiara* no as su nombre* !ero el nombre es susce!"ible e ser cambiao !or el usuario*
as 7ue siem!re com!rueba 7ue e;is"a una 0o3a an"es e in"en"ar acceer a ella+
O"ra o!ci5n es evolver la 0o3a ac"iva=
0u.l+* "u. Ho)a!*&+8a23
@+( oHo)a !s >.)%*&
,Ha*%(os una '%f%'%n*+a a la ho)a a*&+8a
oHo)a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
Msg.ox oHo)a-g%&<a(%23

End "u.
A0ora* .a !uees crear"e "us ?"iles 2unciones !ara "raba3ar con 0o3as* !or e3em!lo*
una 2unci5n 7ue nos evuelva 2also o veraero seg?n e;is"a o no el nombre e la 0o3a !asao
como argumen"o* una !rimera a!ro;imaci5n !ora ser=
>7&+on Ex7l+*+&
"u. "a.%'"+Ex+s&%Ho)a23
MsgBox Ex+s&%Ho)a2 "Ho)a3" 3
End "u.
,"a.%' s+ una ho)a %x+s&%
Jun*&+on Ex+s&%Ho)a2B?1al <o(.'%Ho)a !s "&'+ng3 !s Bool%an
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
Ex+s&%Ho)a A oHo)as-hasB?<a(%2<o(.'%Ho)a3

End Jun*&+on
Poemos 0acerla incluso m<s gen4rica !as<nole el ocumen"o one se esea
com!robar la e;is"encia e la 0o3a . com!robano 7ue sea una 0o3a e calculo=
>7&+on Ex7l+*+&
"u. "a.%'"+Ex+s&%Ho)a223
MsgBox Ex+s&%Ho)a22 Hh+s$o(7on%n&6 "Ho)a3" 3
End "u.
,"a.%' s+ una ho)a %x+s&%
Jun*&+on Ex+s&%Ho)a22@o*u(%n&o !s >.)%*&6 B?1al <o(.'%Ho)a !s "&'+ng3 !s Bool%an
@+( oHo)as !s >.)%*&
,"+ no %s una ho)a d% *al*ulo d%8u%l8% falso 2Jals%3
#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3 Hh%n
oHo)as A @o*u(%n&o-g%&"h%%&s23
Ex+s&%Ho)a2 A oHo)as-hasB?<a(%2<o(.'%Ho)a3
End #f

End Jun*&+on
A0ora evolvemos la 0o3a=
A!renieno OOo Basic 15@
>7&+on Ex7l+*+&
"u. @%8u%l8%R%f%'%n*+a!Ho)a123
d+( oHo)a !s >.)%*&
oHo)a A @%8u%l8%Ho)a12 "@a&os" 3
#f #s<ull2oHo)a3 Hh%n
MsgBox "5a ho)a no %x+s&%"
Els%
MsgBox oHo)a-g%&<a(%23
End #f
End "u.
,"a.%' s+ %x+s&% la ho)a ? '%g'%sa'la6 s+ lla(as a %s&a fun*+on6
,&+%n%s Fu% 8%'+f+*a' Fu% s% d%8ol8+o algo *on #s<ull
Jun*&+on @%8u%l8%Ho)a12B?1al <o(.'%Ho)a !s "&'+ng3 !s >.)%*&
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
#f oHo)as-hasB?<a(%2<o(.'%Ho)a3 Hh%n
@%8u%l8%Ho)a1 A oHo)as-g%&B?<a(%2<o(.'%Ho)a3
End #f

End Jun*&+on
(e nuevo* si lo eseas* !uees !asarle el ocumen"o el cual "e in"eresa evolver la
0o3a* observa como com!robamos "ambi4n 7ue la 0o3a e;is"a* es"o lo !uees 0acer irec"amen"e
o usano la 2unci5n creaa m<s arriba* 7uea a "u cri"erio=
"u. @%8u%l8%R%f%'%n*+a!Ho)a223
d+( oHo)a !s >.)%*&
oHo)a A @%8u%l8%Ho)a22 Hh+s$o(7on%n&6 "@a&os" 3
#f #s<ull2oHo)a3 Hh%n
MsgBox "5a ho)a no %x+s&%"
Els%
MsgBox oHo)a-g%&<a(%23
End #f
End "u.
,"a.%' s+ %x+s&% la ho)a ? '%g'%sa'la6 s+ lla(as a %s&a fun*+on6
,&+%n%s Fu% 8%'+f+*a' Fu% s% d%8ol8+o algo *on #s<ull
Jun*&+on @%8u%l8%Ho)a22@o*u(%n&o !s >.)%*&6 B?1al <o(.'%Ho)a !s "&'+ng3 !s >.)%*&
@+( oHo)as !s >.)%*&
#f @o*u(%n&o-su77o'&s"%'8+*%2"*o(-sun-s&a'-sh%%&-"7'%adsh%%&@o*u(%n&"3 Hh%n
oHo)as A @o*u(%n&o-g%&"h%%&s23
#f oHo)as-hasB?<a(%2<o(.'%Ho)a3 Hh%n
@%8u%l8%Ho)a2 A oHo)as-g%&B?<a(%2<o(.'%Ho)a3
End #f
End #f

End Jun*&+on
=.1.1 Insertando "ojas
15F G+1 Traba3ano con 0o3as
Para inser"ar nuevas 0o3as* usamos el m4"oo inser"Ne8B.Name(Nombre*
Posicion)* en one necesi"amos el nombre e la nueva 0o3a a inser"ar . la !osici5n one la
7ueremos* la siguien"e macro agrega una 0o3a nueva al inicio e las em<s=
"u. #ns%'&a'<u%8aHo)a123
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
oHo)as-+ns%'&<%^B?<a(%2"@a&os "%7"6 03

End "u.
>3ecu"a la macro an"erior os veces . no"aras 7ue "e ar< un error* !ues no !uees
"ener os 0o3as con el mismo nombre* en"onces* "enemos 7ue veri2icar si la 0o3a e;is"e o no=
"u. #ns%'&a'<u%8aHo)a223
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( s<o(.'% !s "&'+ng
,"ol+*+&a(os un no(.'% 7a'a la nu%8a ho)a
s<o(.'% A H'+(2#n7u&Box2"<o(.'% d% la nu%8a ho)a"33
,1%'+f+*a(os Fu% no %s&% 8a*+o
#f s<o(.'% XY "" Hh%n
,R%f%'%n*+a a &odas las ho)as
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,1%'+f+*a(os s+ ?a %x+s&% la ho)a
#f <o& oHo)as-hasB?<a(%2s<o(.'%3 Hh%n
,"+ no %x+s&% la +ns%'&a(os %l +n+*+o
oHo)as-+ns%'&<%^B?<a(%2s<o(.'%6 03
End #f
,R%f%'%n*+a a la nu%8a ho)a o a la %x+s&%n&%
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2s<o(.'%3
,5a a*&+8a(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2oHo)a3
End #f

End "u.
Observa 7ue si la 0o3a .a e;is"e* solo 0acemos una re2erencia a ella+ )a ul"ima linea
!ara ac"ivar la 0o3a no es necesaria !ara 7ue la mani!ules* solo en caso e 7ue 7uieras 7ue el
usuario 0aga o mani!ule algo en ella* si no* !uees omi"irla+ >s sumamen"e 2recuen"e en
!rogramaores noveles* 7uerer Lac"ivarM "oa 0o3a 7ue se 7uiera mani!ular* es"o no es
necesariamen"e as* e 0ec0o* la ma.or !ar"e e las veces* con la re2erencia es su2icien"e+
Tambi4n !oemos agregar la 0o3a al 2inal e "oas las em<s=
"u. #ns%'&a'<u%8aHo)a323
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( s<o(.'% !s "&'+ng
s<o(.'% A H'+(2#n7u&Box2"<o(.'% d% la nu%8a ho)a"33
#f s<o(.'% XY "" Hh%n
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
#f <o& oHo)as-hasB?<a(%2s<o(.'%3 Hh%n
,"+ no %x+s&% la +ns%'&a(os al f+nal
oHo)as-+ns%'&<%^B?<a(%2 s<o(.'%6 oHo)as-g%&$oun&23 3
End #f
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2s<o(.'%3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2oHo)a3
End #f

End "u.
A!renieno OOo Basic 155
Observa en"onces 7ue el argumen"o !osici5n !uee "omar valores ese $ . 0as"a
el "o"al e 0o3as evuel"o !or ge"/oun"() !ero incluso si es ma.or a es"e valor* no "e ar< error . la
inser"ara al 2inal e las em<s 0o3as+ Si 7uieres inser"ar la 0o3a an"es o es!u4s e la 0o3a ac"iva*
!rimero "ienes 7ue encon"rar el nice e la 0o3a ac"iva=
"u. #nd+*%Ho)a!*&+8a23
@+( *o1 !s #n&%g%'
@+( oHo)a!*&+8a !s >.)%*&
d+( oHo)a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
Jo' *o1 A 0 Ho Hh+s$o(7on%n&-g%&"h%%&s-g%&$oun&23 T 1
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?#nd%x2*o13
#f oHo)a-g%&<a(%23 A oHo)a!*&+8a-g%&<a(%23 &h%n
MsgBox "El +nd+*% d% la ho)a a*&+8a %s4 " 9 *o1
Ex+& Jo'
End #f
<%x&
End "u.
eue !oemos conver"ir a una 2unci5n=
Jun*&+on Bus*a'#nd+*%Ho)a2B?1al <o(.'%Ho)a !s "&'+ng3 !s #n&%g%'
@+( *o1 !s #n&%g%'
d+( oHo)a !s >.)%*&
Jo' *o1 A 0 Ho Hh+s$o(7on%n&-g%&"h%%&s-g%&$oun&23 T 1
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?#nd%x2*o13
#f oHo)a-g%&<a(%23 A <o(.'%Ho)a &h%n
Bus*a'#nd+*%Ho)a A *o1
Ex+& Jun*&+on
End #f
<%x&
Bus*a'#nd+*%Ho)a A T1
End Jun*&+on
Observa 7ue si no la encuen"ra el valor evuel"o es -1* lo cual 0a. 7ue evaluar en
caso necesario+ Para inser"ar an"es e la 0o3a ac"iva usamos=
"u. #ns%'&a'<u%8aHo)a423
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( 7os !s #n&%g%'
s<o(.'% A H'+(2#n7u&Box2"<o(.'% d% la nu%8a ho)a"33
#f s<o(.'% XY "" Hh%n
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
#f <o& oHo)as-hasB?<a(%2s<o(.'%3 Hh%n
,Bus*a(os %l +nd+*% d% la ho)a a*&+8a
7os A Bus*a'#nd+*%Ho)a2oHo)a!*&+8a-g%&<a(%233
oHo)as-+ns%'&<%^B?<a(%2 s<o(.'%6 7os 3
End #f
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2s<o(.'%3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2oHo)a3
End #f

End "u.
15G G+1 Traba3ano con 0o3as
Para inser"ar es!u4s e la 0o3a ac"iva* solo sumas uno al valor evuel"o !or la
2unci5n Buscar:niceco3a=
7os A Bus*a'#nd+*%Ho)a2oHo)a!*&+8a-g%&<a(%233 B 1
Poemos aven"urar una !rimera versi5n e una 2unci5n gen4rica !ara inser"ar una
nueva 0o3a e calculo one 7uieras=
,$o(o fun*+on '%g'%sa(os la nu%8a ho)a +ns%'&ada o la %x+s&%n&% %n su *aso
,0os+*+on4 1 A #n+*+o
, 2 A J+nal
, 3 A !n&%s d% la ho)a a*&+8a
, 4 A @%s7u%s d% la ho)a a*&+8a
Jun*&+on g%&<u%8aHo)a2B?1al <o(.'%Ho)a !s "&'+ng6 B?1al 0os+*+on !s #n&%g%'3 !s >.)%*&
@+( oHo)as !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( +0os !s #n&%g%'
#f <o(.'%Ho)a XY "" Hh%n
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
"%l%*& $as% 0os+*+on
$as% 1 4 +0os A 0
$as% 2 4 +0os A oHo)as-g%&$oun&23
$as% 3 4 +0os A oHo)a!*&+8a-g%&Rang%!dd'%ss23-"h%%&
$as% 4 4 +0>s A oHo)a!*&+8a-g%&Rang%!dd'%ss23-"h%%& B 1
$as% Els% 4 +0os A 0
End "%l%*&
#f <o& oHo)as-hasB?<a(%2<o(.'%Ho)a3 Hh%n
oHo)as-+ns%'&<%^B?<a(%2<o(.'%Ho)a6 +0os3
End #f
g%&<u%8aHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2<o(.'%Ho)a3
End #f

End Jun*&+on
No"a como es"amos ob"enieno el nice e la 0o3a ac"iva* con lo cual nos evi"amos
"ener 7ue 0acer un ciclo !or las 0o3as el ocumen"o+ Puees me3orar es"a 2unci5n !ara inser"ar la
0o3a en cual7uier o"ro ocumen"o* as como ingeni<r"elas !ara !eirle al usuario el n?mero e
0o3as nuevas 7ue 7uiera inser"ar e inser"arlas !or su!ues"o* esa* es "u "area+
=.1.2 &orrando "ojas
Para borrar 0o3as* usamos el m4"oo removeB.Name(Nombre)* one Nombre es el
nombre e la 0o3a 7ue 7ueremos borrar* no es"a e m<s recomenar"e usar con cuiao el
borrao e 0o3as* aun7ue algo 7ue me gus"a muc0o e O!enO22ice+org* es 7ue muc0as e las
acciones 7ue 0acemos !or c5igo* son susce!"ibles e es0acerse e 2orma normal con la barra
e 0erramien"as o con /TA)Rk* el borrao e 0o3as es una e ellas* com!ru4balo=
"u. Bo''a'Ho)a123
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,Bo''a(os la ho)a 7o' su no(.'%
oHo)as-'%(o8%B?<a(%2 "Ho)a11" 3
End "u.
A!renieno OOo Basic 15%
Por su!ues"o no !uees borrar una 0o3a 7ue no e;is"a* as 7ue veri2calo=
"u. Bo''a'Ho)a223
@+( oHo)as !s >.)%*&
@+( s<o(.'% !s "&'+ng

s<o(.'% A H'+(2 #n7u&Box2 "<o(.'% d% la ho)a a .o''a'" 33
#f s<o(.'% XY "" Hh%n
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
#f oHo)as-hasB?<a(%2 s<o(.'% 3 Hh%n
oHo)as-'%(o8%B?<a(%2 s<o(.'% 3
Els%
MsgBox "5a ho)a no %x+s&%"
End #f
End #f

End "u.
Puees borrar la 0o3a ac"iva=
"u. Bo''a'Ho)a!*&+8a23
@+( oHo)as !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
oHo)as-'%(o8%B?<a(%2 oHo)a!*&+8a-g%&<a(%23 3
End "u.
>3ecu"a la macro an"erior 0as"a 7ue no 7uee ni una* claro* no "e e3ara !or 7ue un
ocumen"o e 0o3a e calculo !or lo menos ebe e "ener una 0o3a* !ara evi"ar el error 7ue "e a
al "ra"ar e borrar la ul"ima 0o3a* valia 7ue siem!re 7uee m<s e una=
"u. Bo''a'Ho)a323
@+( oHo)as !s >.)%*&
@+( s<o(.'% !s "&'+ng

s<o(.'% A H'+(2 #n7u&Box2 "<o(.'% d% la ho)a a .o''a'" 33
#f s<o(.'% XY "" Hh%n
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
#f oHo)as-hasB?<a(%2 s<o(.'% 3 !nd oHo)as-g%&$oun&23Y1 Hh%n
oHo)as-'%(o8%B?<a(%2 s<o(.'% 3
Els%
MsgBox "5a ho)a no %x+s&% o solo Fu%da una"
End #f
End #f

End "u.
=.1. Mo,iendo "ojas
Para mover 0o3as usamos el m4"oo moveB.Name(Nombreco3a* PosicionNueva)*
one Nombreco3a "iene 7ue ser el nombre e una 0o3a e;is"en"e=
"u. Mo8%'Ho)a123
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
15, G+1 Traba3ano con 0o3as
,Mo8%(os la ho)a %s7%*+f+*ada al +n+*+o
oHo)as-(o8%B?<a(%2 "Ho)a2"6 0 3

End "u.
A0ora* la movemos al 2inal=
"u. Mo8%'Ho)a223
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,Mo8%(os la ho)a %s7%*+f+*ada al f+nal
oHo)as-(o8%B?<a(%2 "Ho)a2"6 oHo)as-g%&$oun&23 3

End "u.
Si usas una versi5n an"erior a la @+1* "en cuiao con mover "us 0o3as Lno m<s all<
e la ul"ima 0o3aM* !ues "e !uee !rovocar un error en "oa la a!licaci5n* es"e error (bug) se
re!or"o en su momen"o (0""!=11888+o!eno22ice+org1issues1s0o8Qbug+cgiJil-#F%%)* . 0a sio
arreglao a !ar"ir e es"a versi5n (@+1)* aun as* usa siem!re ge"/oun"() !ara asegurar"e+
6amos a 0acer algo mu. iver"io* como .a sabemos ob"ener los nombres e inices
e caa 0o3a* . a0ora 0emos a!renio a mover 0o3as* 0agamos una macro 7ue nos orene
al2ab4"icamen"e nues"ras 0o3as* !ara ello nos a!o.aremos en una 2unci5n 7ue orena la ma"riz
7ue le !asemos=
"u. 0'u%.a>'d%na'123
@+( (@a&os23
Dlo.al"*o7%-Bas+*5+.'a'+%s-5oad5+.'a'?2 "Hools" 3
(@a&os23 A !''a?2"5"6"l"6"o"6"f"6"%"6"8"6"?"6"d"6"h"6"u"63

,Mos&'a(os los da&os d%so'd%nados
MsgBox [o+n2 (@a&os236 $h'2133 3

,>'d%na(os los da&os
(@a&os23 A Bu..l%"o'&5+s&2 (@a&os23 3

,Mos&'a(os los da&os o'd%nados
MsgBox [o+n2 (@a&os236 $h'2133 3
End "u.
)a 2unci5n BubbleSor")is"* viene incor!oraa a las macros e O!enO22ice+org . usa
el m4"oo e burbu3a !ara orenar la lis"a !asaa* no es el algori"mo m<s e2icien"e* !ero en lis"as
!e7ueKas . aa su sencillez e im!lemen"aci5n es !er2ec"amen"e v<lia !ara nues"ros 2ines* si
7uieres saber m<s e es"e algori"mo visi"a= 0""!=11es+8isi!eia+org18isi1Bubblesor"
Tambi4n !uees crear"e "u versi5n e es"e algori"mo* a7u es"a la ma* !uees
orenar e 2orma ascenen"e o escenen"e=
"u. 0'u%.a>'d%na'223
@+( (@a&os23
(@a&os23 A !''a?2"5"6"l"6"o"6"f"6"%"6"8"6"?"6"d"6"h"6"u"63
,Mos&'a(os los da&os d%so'd%nados
MsgBox [o+n2 (@a&os236 $h'2133 3

,>'d%na(os los da&os
$all >'d%na'Bu'.u)a2 (@a&os236 1 3

,Mos&'a(os los da&os o'd%nados
MsgBox [o+n2 (@a&os236 $h'2133 3
A!renieno OOo Basic 15-
End "u.
, @a&os A (a&'+: d% da&os a o'd%na'
, >'d%n A 1 as*%nd%&%
, 2 d%s*%nd%n&%
"u. >'d%na'Bu'.u)a2B?R%f @a&os23 !s 1a'+an&6 B?1al >'d%n !s #n&%g%'3
@+( <u(@a&os !s 5ong
@+( *o1 !s 5ong6 *o2 !s 5ong
<u(@a&os A CBound2@a&os3
Jo' *o1 A 1 Ho <u(@a&os
Jo' *o2 A <u(@a&os Ho *o1 "&%7 T1
#f >'d%n A 1 Hh%n
#f @a&os2*o23 X @a&os2*o2 T 13 Hh%n
$all #n&%'*a(.+o @a&os2*o236 @a&os2*o2 T 13
End #f
Els%
#f <o& 2@a&os2*o23 X @a&os2*o2 T 133 Hh%n
$all #n&%'*a(.+o @a&os2*o236 @a&os2*o2 T 13
End #f
End #f
<%x& *o2
<%x& *o1
End "u.
,Ma*'o 7a'a +n&%'*a(.+a' un 7a' d% 8alo'%s
"u. #n&%'*a(.+o2B?R%f @a&o1 !s 1a'+an&6 B?R%f @a&o2 !s 1a'+an&3
@+( sH(7 !s 1a'+an&
sH(7 A @a&o1
@a&o1 A @a&o2
@a&o2 A sH(7
End "u.
A0ora si* nues"ra macro !ara orenar 0o3as en acci5n* !uees usar la 2unci5n o
macro 7ue !re2ieras !ara orenar la ma"riz e nombres ob"enia* incluso* crear"e "u !ro!ia
versi5n=
>7&+on Ex7l+*+&
,>'d%na(os las ho)as 7o' o'd%n alfa.%&+*o
"u. >'d%na'Ho)as23
@+( oHo)as !s >.)%*&
@+( (<o(.'%s23 !s 1a'+an&
@+( aH(7 !s 1a'+an&
@+( *o1 !s #n&%g%'
@+( oHo)a !s >.)%*&
,R%f%'%n*+a a &odas las ho)as d%l do*u(%n&o
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,Ma&'+: *on los no(.'%s d% &odas las ho)as
(<o(.'%s23 A oHo)as-g%&El%(%n&<a(%s23
,>'d%na(os la (a&'+:
$all >'d%na'Bu'.u)a2 (<o(.'%s236 1 3
,R%*o''%(os la (a&'+:
Jo' *o1 A 5Bound2 (<o(.'%s23 3 Ho CBound2 (<o(.'%s23 3
,El Gnd+*% %n la (a&'+:6 s%'a %l (+s(o d% la 7os+*+Kn
oHo)as-(o8%B?<a(%2 (<o(.'%s2*o136 *o1 3
<%x& *o1

End "u.
1G$ G+1 Traba3ano con 0o3as
=.1.) Copiando "ojas
Para co!iar 0o3as usamos el m4"oo co!.B.Name ( Nombreco3a* NombreNuevo*
Posicion ) e la siguien"e manera=
"u. $o7+a'Ho)a123
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,$o7+a(os la "ho)a2" *o(o "<u%8a Ho)a2" al +n+*+o
oHo)as-*o7?B?<a(%2 "Ho)a2"6 "<u%8a Ho)a2"6 0 3
End "u.
Por su!ues"o el nombre e la 0o3a a co!iar LebeM e e;is"ir . el nombre nuevo e la
0o3a Lno ebeM e;is"ir* lo me3or* es evaluarlo an"es=
"u. $o7+a'Ho)a223
@+( oHo)as !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( s<o(.'%<u%8o !s "&'+ng
s<o(.'% A "@a&os"
s<o(.'%<u%8o A "@a&os nu%8os"
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,"olo *o7+a la ho)a6 s+ la ho)a a *o7+a' %x+s&% ? %l no(.'% nu%8o no %x+s&%
#f oHo)as-hasB?<a(%2s<o(.'%3 !nd 2<o& oHo)as-hasB?<a(%2s<o(.'%<u%8o33 Hh%n
oHo)as-*o7?B?<a(%2 s<o(.'%6 s<o(.'%<u%8o6 oHo)as-g%&$oun&23 3
Els%
MsgBox "<o s% *o7+o la ho)a"
End #f

End "u.
Poemos in"en"ar co!iar una 0o3a . asegurarnos e 7ue el nombre no e;is"a*
"omano como base el nombre ac"ual e la 0o3a* !or e3em!lo=
"u. $o7+a'Ho)a!*&+8a23
@+( oHo)as !s >.)%*&
@+( oHo)a !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( s<o(.'%2 !s "&'+ng
@+( *o1 !s 5ong
,R%f%'%n*+a a &odas las ho)a
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23

,<o(.'% d% la ho)a a*&+8a
s<o(.'% A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-g%&<a(%23

,$on&ado' 7a'a *ons&'u+' %l nu%8o no(.'%
*o1 A 1

,El nu%8o no(.'% %s +gual (as un gu+on .a)o ? un nu(%'o
s<o(.'%2 A s<o(.'% 9 "/" 9 Jo'(a&2*o13

,Ha*% %l *+*lo (+%n&'as %l nu%8o no(.'% %x+s&a
A!renieno OOo Basic 1G1
@o Uh+l% oHo)as-hasB?<a(%2 s<o(.'%2 3
,"+ ?a %x+s&% +n*'%(%n&a(os %l *on&ado'
*o1 A *o1 B 1
,? *ons&'u+(os %l nu%8o no(.'%
s<o(.'%2 A s<o(.'% 9 "/" 9 Jo'(a&2*o13
5oo7

,"al% d%l *+*lo *uando %l nu%8o no(.'% no %x+s&a6 %n&on*%s
,7od%(os *o7+a' la ho)a al f+nal 2o dond% Fu+%'as3
oHo)as-*o7?B?<a(%2s<o(.'%6 s<o(.'%26 oHo)as-g%&$oun&233

,R%f%'%n*+a a la nu%8a ho)a
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2s<o(.'%23

,O la a*&+8a(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2oHo)a3

End "u.
Solo "e res"a !regun"arle al usuario cuan"as nuevas 0o3as 7uiere e inser"ar ese
n?mero e 0o3as nuevas* !ero+++ esa es "u "area=
=.1.! 8enombrando "ojas
Para renombrar 0o3as usamos el m4"oo se"Name* e la siguien"e manera=
"u. $a(.+a'<o(.'%Ho)a123
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,$a(.+a(os %l no(.'% d% la ho)a VHolaW6 7o' V0'u%.aW
oHo)as-g%&B?<a(%2"Hola"3-s%&<a(%2 "0'u%.a" 3

End "u.
Tambi4n !uees usar el nice !ara re2erir"e a la 0o3a=
"u. $a(.+a'<o(.'%Ho)a223
@+( oHo)as !s >.)%*&
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
oHo)as-g%&B?#nd%x2 0 3-s%&<a(%2 "Das&os" 3
End "u.
>s recomenable valiar 7ue la 0o3a a renombrar e;is"a . 7ue el nuevo nombre no=
"u. $a(.+a'<o(.'%Ho)a323
@+( oHo)as !s >.)%*&
@+( s<o(.'%!*&ual !s "&'+ng
@+( s<o(.'%<u%8o !s "&'+ng
s<o(.'%!*&ual A "R%su(%n"
s<o(.'%<u%8o A "H%'(+nado"
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
1G# G+1 Traba3ano con 0o3as

,1al+da(os Fu% la ho)a %x+s&a ? %l nu%8o no(.'% no
#f oHo)as-hasB?<a(%2s<o(.'%!*&ual3 !nd 2<o& oHo)as-hasB?<a(%2s<o(.'%<u%8o33 Hh%n
oHo)as-g%&B?<a(%2 s<o(.'%!*&ual 3-s%&<a(%2 s<o(.'%<u%8o 3
Els%
MsgBox "<o s% '%no(.'o la ho)a"
End #f
End "u.
Solo !ara iver"irnos* cambiamos los nombres e las 0o3as !or n?meros=
"u. $a(.+a'<o(.'%Ho)a423
@+( oHo)as !s >.)%*&
@+( *o1 !s #n&%g%'
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23

Jo' *o1 A 1 Ho oHo)as-g%&$oun&23
oHo)as-g%&B?#nd%x2 *o1T1 3-s%&<a(%2 *o1 3
<%x&

End "u.
A0ora !or le"ras* el c5igo siguien"e !ora 2allar"e si "ienes m<s e #5 0o3as en "u
ocumen"o* "u "area es ecirme I!or7u4J . corregirlo* en algunos casos* Lel cambio e nombre no
"enr< e2ec"oM* "ambi4n* "e "oca averiguar I!or7u4J
"u. $a(.+a'<o(.'%Ho)a523
@+( oHo)as !s >.)%*&
@+( *o1 !s #n&%g%'
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23

Jo' *o1 A 1 Ho oHo)as-g%&$oun&23
oHo)as-g%&B?#nd%x2 *o1T1 3-s%&<a(%2 $h'2 *o1B64 3 3
<%x&

End "u.
O los meses el aKo=
"u. $a(.+a'<o(.'%Ho)a623
@+( oHo)as !s >.)%*&
@+( *o1 !s #n&%g%'
@+( 5+(+&% !s B?&%
@+( sM%s !s "&'+ng
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
,0a'a Fu% solo *a(.+% las 7'+(%'as 12
#f oHo)as-g%&$oun&23 Y 12 Hh%n
5+(+&% A 12
Els%
,> las Fu% ha?a s+ son (%nos d% 12
5+(+&% A oHo)as-g%&$oun&23
End #f
Jo' *o1 A 1 Ho 5+(+&%
,>.&%n%(os %l no(.'% d%l (%s
sM%s A Jo'(a&2 @a&%"%'+al2O%a'2@a&%36*o1613 6"(((("3
oHo)as-g%&B?#nd%x2 *o1T1 3-s%&<a(%2 sM%s 3
<%x&

A!renieno OOo Basic 1G@
End "u.
Te 7uea e "area lograr com!le"ar los meses !ara 7ue sean los oce el aKo* es
ecir* "ienes 7ue inser"ar los meses 7ue "e 0agan 2al"a si el ocumen"o "iene menos e las 0o3as
necesarias* si "iene m<s e oce borra las sobran"es+
=.1.= %cultando y mostrando "ojas
Mos"rar . ocul"ar 0o3as es mu. sencillo* solo 0a. 7ue es"ablecer su !ro!iea
is6isible en veraero (True) o 2also ('alse) seg?n se re7uiera e la siguien"e manera=
"u. >*ul&a'Ho)a123
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23

oHo)a!*&+8a-+s1+s+.l% A Jals%

End "u.
)a macro an"erior "e ocul"ara la 0o3a ac"iva* si la e3ecu"as varias veces "e ira
ocul"ano "us 0o3as 0as"a 7ue solo 7uee una* si solo 0a. una no "e ar< error* !ero la e3ar<
visible !or 7ue* como sabes* "iene 7ue 0aber al menos una 0o3a visible en un ocumen"o e /alc+
Tambi4n !uees ocul"ar una 0o3a !or meio e su nice* como en=
"u. >*ul&a'Ho)a223
@+( oHo)a !s >.)%*&
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x213

oHo)a-+s1+s+.l% A Jals%

End "u.
Toma en cuen"a 7ue= el nice e la 0o3a LebeM e;is"ir* sino "e ar< un error* as
mismo* si ocul"as una 0o3a* es"a no cambia e nice !or lo 7ue !uees usar el mismo !ara
acceer a ella* aun7ue es"e ocul"a* la siguien"e macro al"erna en"re mos"rar . ocul"ar la !rimer
0o3a el ocumen"o=
"u. >*ul&a'Ho)a323
@+( oHo)a !s >.)%*&
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x203

oHo)a-+s1+s+.l% A <o& oHo)a-+s1+s+.l%

End "u.
/omo .a 0abr<s in"uio* !ara mos"rar una 0o3a ocul"a sim!lemen"e 0a. 7ue
es"ablecer es"a !ro!iea en veraero (True)
"u. >*ul&a'Ho)a423
1GF G+1 Traba3ano con 0o3as
@+( oHo)a !s >.)%*&
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x213

oHo)a-+s1+s+.l% A H'u%

End "u.
>l siguien"e c5igo "e ocul"a "oas las 0o3as* e;ce!"o la 0o3a ac"iva=
"u. >*ul&a'Ho)a523
@+( oHo)a!*&+8a !s >.)%*&
@+( oHo)as !s >.)%*&
@+( *o1 !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oHo)as A Hh+s$o(7on%n&-g%&"h%%&s23
Jo' *o1 A 0 Ho oHo)as-g%&$oun&23 T 1
#f oHo)as-g%&B?#nd%x2*o13-g%&<a(% XY oHo)a!*&+8a-g%&<a(%23 Hh%n
oHo)as-g%&B?#nd%x2*o13-+s1+s+.l% A Jals%
End #f
<%x&

End "u.
Tu "area es 0acer la 2unci5n inversa* mues"ra "oas las 0o3as ocul"as+
=.1.A +roteccin y desproteccin de "ojas
Para "erminar es"e ca!"ulo* veamos como !ro"eger una 0o3a* es ecir* es"ablecer
una con"raseKa !ara evi"ar moi2icaciones a la misma* aem<s* recuera 7ue !ara 7ue la
!ro"ecci5n e celas iniviuales sea e2ec"iva* la 0o3a ebe es"ar !ro"egia+ Para !ro"eger una
0o3a* usamos el m4"oo (rotect* !as<nole como argumen"o* la con"raseKa 7ue 7ueremos
es"ablecer* !or su!ues"o* !uees !asarle una con"raseKa vaca* con lo 7ue la 0o3a no es"ar< mu.
!ro"egia 7ue igamos* !ero creeme* muc0os usuarios no saben es!ro"eger una 0o3a* aun sin
con"raseKa+
"u. 0'o&%g%'Ho)a123
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,0a'a Fu% 8%as Fu% s+ (% o*u''%n o&'as *on&'as%\as
oHo)a!*&+8a-0'o&%*&2 "l%&(%+n" 3
End "u.
O !ara es!ro"eger* usamos el m4"oo un(rotect* si la 0o3a "iene con"raseKa* 0a.
7ue !as<rsela como argumen"o* si no es correc"a* el m4"oo no "e evolver< ning?n error como en
la in"er2az el usuario 7ue "e avisa 7ue la con"raseKa es incorrec"a* !ara saber si "uvo 4;i"o o no la
es!ro"ecci5n* 0a. 7ue veri2icar la !ro!iea is(rotected* si es veraera (True) la 0o3a sigue
!ro"egia* si es 2alsa ('alse)* la 0o3a es"a es!ro"egia+
"u. 0'o&%g%'Ho)a223
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
#f oHo)a!*&+8a-+s0'o&%*&%d Hh%n
MsgBox "5a ho)a %s&a 7'o&%g+da"
A!renieno OOo Basic 1G5
,#n&%n&a(os d%s7'o&%g%'la
oHo)a!*&+8a-un0'o&%*&2 "l%&(%+n" 3
,1%'+f+*a(os s+ &u8o %x+&o la d%s7'o&%**+Kn
#f oHo)a!*&+8a-+s0'o&%*&%d Hh%n
MsgBox "5a *on&'as%\a no %s *o''%*&a"
Els%
MsgBox "Ho)a d%s7'o&%g+da *o''%*&a(%n&%"
End #f
Els%
MsgBox "5a ho)a <> %s&a 7'o&%g+da"
End #f
End "u.
Te 7uea e "area moi2icar la macro !ara solici"ar al usuario la con"raseKa* veri2icar
si es correc"a o no . arle solo "res in"en"os !ara ingresarla+ '<cil* IveraJ+ /omo comen"arios
2inales* si in"en"as !ro"eger una 0o3a 7ue .a "iene con"raseKa* no ob"enr<s ning?n error* !ero la
0o3a !ermanecer< con la con"raseKa original* !ara cambiarla* !rimero "ienes 7ue es!ro"egerla .
es!u4s cambiarla+ /uano !ro"eges una 0o3a e in"en"as 0acer moi2icaciones a es"a* !or
e3em!lo* escribir en una cela* "am!oco re"ornar< ning?n error* !ero no ser< e2ec"iva la
moi2icaci5n* !rocura usar la !ro!iea !ara saber si una 0o3a es"a o no !ro"egia (is(rotected)*
!ara ac"uar en consecuencia+
=.2 8e2erencia a ran*os
Seguro 7ue sabes* si eres usuario 0abi"ual e una 0o3a e calculo* 7ue el "raba3o con
rangos es esencial en es"os ocumen"os* !or lo mismo* el "raba3o con rangos ese c5igo OOo
Basic es igualmen"e im!or"an"e* .a vimos como aseguramos 7ue es"amos "raba3ano en una 0o3a
e calculo* as 7ue e3o a "u cri"erio es"a valiaci5n+ >n la siguien"es secciones nos cen"raremos
en a!rener como 0acer re2erencia a is"in"os "i!os e rangos !ara es!u4s !oer mani!ularlos*
arles 2orma"o o 0acer con ellos lo 7ue 7ueramos+
=.2.1 8e2erencia a celdas indi,iduales
Poemos acceer a las celas e una 0o3a e calculo e varias maneras*
!rinci!almen"e !or su nombre o !or su !osici5n* !ero mu. im!or"an"e* !rimero "ienes 7ue acceer
a la 0o3a one es"<n las celas 7ue "e in"eresa mani!ular* como acceer a 0o3as es un "ema 7ue
.a 0emos "ra"ao* !ero en caa e3em!lo !or<s no"ar 7ue re!asamos es"os conocimien"os* la
2orma m<s sim!le e 0acer re2erencia a una cela es !or su nombre=
"u. !**%so$%ldas123
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
1GG G+# Ae2erencia a rangos
,R%f%'%n*+a a la ho)a a*&+8a
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la *%lda E5
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E5" 3

,Mos&'a(os %l *on&%n+do d% la *%lda
MsgBox o$%lda-g%&"&'+ng23

,Mos&'a(os la ho)a6 *olu(na ? f+la *o''%s7ond+%n&% a %s&a *%lda
MsgBox "Ho)a4 " 9 o$%lda-g%&$%ll!dd'%ss-"h%%& 9 $h'2133 9 /
"$olu(na4 " 9 o$%lda-g%&$%ll!dd'%ss-$olu(n 9 $h'2133 9 /
"J+la4 " 9 o$%lda-g%&$%ll!dd'%ss-Ro^

End "u.
Observa como com!robamos en la ul"ima linea* 7ue e2ec"ivamen"e 0emos 0ec0o
re2erencia a la cela 7ue nos in"eresa* es ecir a la cela >5* 7ue en columna . 2ila es la F* !or
7ue recoramos 7ue los n?mero e columna . 2ila em!iezan en $* observa la es"ruc"ura
ge"/ellAress* es"a* es mu. im!or"an"e !ues a muc0os m4"oos !ara mani!ular celas* se les
"ienen 7ue !asar es"ruc"uras como es"a* solo "iene "res !ro!ieaes* la 0o3a (valor "i!o in"eger*
es"e* "ambi4n em!ieza en $) one es"a la cela re2erenciaa* la columna (long) . la 2ila (long) e
es"a cela+
A0ora acceemos a una cela !or su !osici5n* recuera 7ue los nices e inicio
ese c5igo em!iezan en $* !or lo 7ue !ara 0acer re2erencia a la cela >5* "enemos 7ue !oner
la columna F . 2ila F* el !rimer valor es !ara la columna . el seguno !ara la 2ila* no es"a e m<s
comen"ar"e 7ue "engas cuiao e no es"ablecer una !osici5n 2uera e la 0o3a* !ues "e ar< un
error* !or e3em!lo* es"ablecer el valor e la columna en #5G o su!erior si "raba3os con la versi5n
#+; e O!enO22ice+org* en la versi5n @+; "enemos 1$#F columnas !ara "raba3ar* !or su!ues"o* si el
valor e la 2ila . columna se la solici"as al usuario* LeberasM e valiar 7ue los valores
!ro!orcionaos son correc"os+
"u. !**%so$%ldas223
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( $ol !s 5ong
@+( J+l !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,<os as%gu'a(os Fu% s%a un 8alo' *on 1al ? Fu% s%a 7os+&+8o *on !.s
$ol A !.s21al2#n7u&Box2"@a(% la *olu(na"333
J+l A !.s21al2#n7u&Box2"@a(% la f+la"333
,<os as%gu'a(os Fu% %s&%n d%n&'o d% los 'angos *o''%*&os
#f $ol X oHo)a!*&+8a-$olu(ns-$oun& !nd J+l X oHo)a!*&+8a-Ro^s-$oun& Hh%n
,!**%d%(os a la *%lda
o$%lda A oHo)a!*&+8a-g%&$%llB?0os+&+on2 $ol6J+l 3
MsgBox o$%lda-g%&"&'+ng23
Els%
MsgBox "1alo'%s d% *%lda +n*o''%*&os"
End #f
End "u.
>s 2recuen"e 7ue el acceso !or nombre a una cela se use !ara es"ablecer valores
!rees"ablecios* como ""ulos e cam!os !or e3em!lo* . el acceso !or !osici5n es mu. ?"il !ara
realizar ciclos* como el e3em!lo siguien"e 7ue inser"a el aKo como "i"ulo en la cela A1 . los meses
el aKo e la cela A# a la A1@+
A!renieno OOo Basic 1G%
"u. !**%so$%ldas323
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( *o1 !s #n&%g%'
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a *%lda 7o' no(.'%
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!1" 3
o$%lda-s%&"&'+ng2 O%a'2@a&%3 3

Jo' *o1 A 1 Ho 12
,R%f%'%n*+a a *%lda 7o' 7os+*+on
o$%lda A oHo)a!*&+8a-g%&$%llB?0os+&+on2 06*o1 3
o$%lda-s%&"&'+ng2 Jo'(a&2 @a&%"%'+al2O%a'2@a&%36*o1613 6"(((("3 3
<%x&
End "u.
Observa 7ue 0emos es"ao usano el m4"oo ge"S"ring() !ara ob"ener el con"enio
e una cela . se"S"ring(6alor As S"ring) !ara es"ablecerlo* m<s aelan"e veremos "oas las
!osibiliaes 7ue "enemos !ara in"roucir u ob"ener a"os e las celas e nues"ra 0o3a e
calculo* as como sus i2erencias+
=.2.2 8e2erencia a un ran*o de celdas
Poemos acceer a un rango e celas !or su nombre* usano el mismo m4"oo
usao !ara acceer a una cela=
"u. !**%soRango123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango !14E5
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14E5" 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
Para acceer a un rango e celas !or su !osici5n* 0a. 7ue usar un m4"oo
i2eren"e= ge"/ellAangeB.Posi"ion* 7ue re7uiere e cua"ro argumen"os+
"u. !**%soRango223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,"%l%**+ona(os %l 'ango B14B10
oRango A oHo)a!*&+8a-g%&$%llRang%B?0os+&+on2 1606169 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
1G, G+# Ae2erencia a rangos
End "u.
Observa 7ue a0ora usamos el m4"oo ge"/ellAangeB.Posi"ion* los argumen"os
!asaos a es"e m4"oo son cua"ro* la columna . 2ila one em!ieza nues"ro rango . la columna .
2ila one "ermina* recuera 7ue los n?meros e 2ila . columna em!iezan en $* algunos !iensan
7ue los os ?l"imos argumen"os son el anc0o . al"o el rango a usar* no es as* es"os argumen"os
"ambi4n son n?meros e nices e columna . 2ila res!ec"ivamen"e . "ienes 7ue "ener la
!recauci5n e es"ablecer los segunos iguales o mas granes 7ue los !rimeros* sino* "e ar< un
error en "iem!o e e3ecuci5n . !or su!ues"o sin sobre!asar el m<;imo e 2ilas . columnas e la
0o3a e calculo+ Observa "ambi4n* como en la ul"ima lnea seleccionamos el rango re2erenciao+
O"ra !osibilia* es usar nombres e2inios e rangos* es ecir* a7uellos 7ue
es"ablecemos ese el L/uaro e nombreM en la 0o3a e calculo* .a sabes* ese cuaro e lis"a
es!legable (combobo;) 7ue es"a al lao e la barra e 2ormulas* 7ue "ambi4n !uees es"ablecer
ese el men? :nsertar | 2ombres | -efinir cu.a "eclas e acceso r<!io son /"rlR'@+ >n el
siguien"e e3em!lo* seleccionamos el rango e celas llamao (a"os+ Toma no"a e 7ue si el rango
no e;is"e en al 0o3a ese one se in"en"a re2erenciar* "e ar< un error+
"u. !**%soRango323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,"%l%**+ona(os %l 'ango 7o' su no(.'% d%f+n+do
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@a&os" 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
Por su!ues"o* si el nombre el rango no e;is"e* "e ar< un error en "iem!o e
e3ecuci5n* es"e m4"oo no es sensible a ma.?sculas o min?sculas+ Para 0acer re2erencia a la 0o3a
correc"a one e;is"a el rango con nombre* observa como ob"enemos la 0o3a one se encuen"ra+
Si el usuario es el 7ue !ro!orciona el nombre el rango* como siem!re* es me3or valiar 7ue el
rango e;is"a+
"u. !**%soRango423
@+( oHo)a !s >.)%*&
@+( oRango !s >.)%*&
@+( oRangos0o'<o(.'% !s >.)%*&
@+( s<o(.'%Rango !s "&'+ng
,R%f%'%n*+a a &odos los 'angos *on no(.'% %n la ho)a d% *al*ulo
oRangos0o'<o(.'% A Hh+s$o(7on%n&-<a(%dRang%s23
s<o(.'%Rango A H'+(2 #n7u&Box2 "Es*'+.% %l no(.'% d%l 'ango a s%l%**+ona'" 3 3
,$o(7'o.a(os Fu% %l 'ango %x+s&a
#f oRangos0o'<o(.'%-hasB?<a(%2 s<o(.'%Rango 3 Hh%n
oHo)a A
Hh+s$o(7on%n&-g%&"h%%&s-g%&B?#nd%x2oRangos0o'<o(.'%-g%&B?<a(%2s<o(.'%Rango3-g%&R%f%''%d$%lls-g%&Rang%!d
d'%ss-"h%%&3
,"%l%**+ona(os %l 'ango 7o' su no(.'% d%f+n+do
oRango A oHo)a-g%&$%llRang%B?<a(%2 s<o(.'%Rango 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
Els%
MsgBox "El 'ango " 9 s<o(.'%Rango 9 " no %x+s&% %n %l do*u(%n&o"
End #f
End "u.
A!renieno OOo Basic 1G-
No con2unas es"os nombres e rangos* con los 7ue !uees es"ablecer en el men?
-atos | -efinir rango* .a 7ue es"os ?l"imos se re2ieren a rangos consieraos como una "abla e
a"os* e 0ec0o* !uees "ener un mismo nombre !ara un rango e celas . !ara un rango e
a"os* !ero son os cosas i2eren"es* los segunos* los veremos m<s aelan"e+
(e los rangos e celas* "ambi4n es !osible ob"ener in2ormaci5n* !ara ello se 0ace
uso e la es"ruc"ura /ellAangeAress a "ravez el m4"oo ge"AangeAress 7ue "e evuelve
in2ormaci5n e= la 0o3a one es"a el rango* la columna . 2ila one comienza . la columna . 2ila
one acaba+
"u. !**%soRango523
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o@+'$%lda !s >.)%*&
@+( sH(7 !s "&'+ng
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "<o(.'%s" 3

,>.&%n%(os la +nfo'(a*+Kn d% la d+'%**+Kn
o@+'$%lda A oRango-g%&Rang%!dd'%ss23

,$ons&'u+(os %l &%x&o +nfo'(a&+8o
sH(7 A "El 'ango %s&a %n la ho)a4 " 9 o@+'$%lda-"h%%& 9 $h'2133 9 /
"$olu(na #n+*+o4 " 9 o@+'$%lda-"&a'&$olu(n 9 $h'2133 9 /
"J+la #n+*+o4 " 9 o@+'$%lda-"&a'&Ro^ 9 $h'2133 9 /
"$olu(na J+n4 " 9 o@+'$%lda-End$olu(n 9 $h'2133 9 /
"J+la J+n4 " 9 o@+'$%lda-EndRo^

MsgBox sH(7
End "u.

>s"a es"ruc"ura "ambi4n es usaa !or varios m4"oos !ara mani!ular rangos 7ue
veremos m<s aelan"e* !or lo 7ue es im!or"an"e 7ue la "engas !resen"e+
=.2. 8e2erencia a ,arios ran*os de celdas
/uano en la in"er2az el usuario* 0acemos la selecci5n e un rango . man"enemos
!resionaa la "ecla /"rl . 0acemos un seguna selecci5n e un rango . as sucesivamen"e*
es"amos 0ablano e un con3un"o e rangos 7ue "iene sus carac"ers"icas !ar"iculares !ara su
con"rol . mane3o+ Para seleccionar varios rangos ese c5igo* !rimero ebemos crear el
Lcon"eneorM e es"os rangos* veamos como=
"u. !**%so/!/Rangos123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRangos !s >.)%*&
@+( oRango !s >.)%*&
@+( o@+'Rango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,$'%a(os %l *on&%nd%' 7a'a los 'angos
oRangos A Hh+s$o(7on%n&-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-"h%%&$%llRang%s"3
,$'%a(os la %s&'u*&u'a $%llRang%!dd'%ss n%*%sa'+a
o@+'Rango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14B2" 3-g%&Rang%!dd'%ss23
,O lo ag'%ga(os al *on&%n%do' d% 'angos
oRangos-addRang%!dd'%ss2 o@+'Rango 6Jals% 3
1%$ G+# Ae2erencia a rangos
,!FuG solo ha*%(os '%f%'%n*+a al 'ango
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E14D2" 3
,O lo ag'%ga(os al *on&%n%do' d% 'angos6 no&a *o(o &%n%(os Fu% usa'
,%l (S&odo g%&Rang%!dd'%ss 7a'a 7asa'l% %l a'gu(%n&o *o''%*&o
oRangos-addRang%!dd'%ss2 oRango-g%&Rang%!dd'%ss23 6Jals% 3

,!FuG ag'%ga(os un 'ango d+'%*&a(%n&% al *on&%n%do'
,&o(a %n *u%n&a Fu% s% 8an a*u(ulando
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@44E5" 3-g%&Rang%!dd'%ss23 6Jals% 3
,$o(7'o.a(os Fu% %s&=n *o''%*&os s%l%**+on=ndolos
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRangos3
End "u.
No "e con2unas* los "res lneas one se agrega el rango con el m4"oo
aAangeAress() son iguales* lo 7ue cambia es la 2orma en 7ue 0acemos re2erencia a la
irecci5n el rango* si vas em!ezano a !rogramar* "e recomieno ir esglosano caa lnea* con
el "iem!o . la e;!eriencia* !or<s concen"rar c5igo e 2orma m<s na"ural* !or a0ora* usa "oas
las lneas 7ue consieres !er"inen"es !ara 7ue "u c5igo lo en"ienas con solo verlo+
Por su!ues"o* "ambi4n e es"os rangos !oemos ob"ener in2ormaci5n* !or e3em!lo*
los nombres e los rangos 7ue con"iene=
"u. !**%so/!/Rangos223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRangos !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,$'%a(os %l *on&%nd%' 7a'a los 'angos
oRangos A Hh+s$o(7on%n&-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-"h%%&$%llRang%s"3
,!g'%ga(os los 'angos Fu% Fu%'a(os
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14!2" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B44B5" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$74$8" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@104@11" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E134E14" 3-g%&Rang%!dd'%ss23 6Jals% 3

,Mos&'a(os las d+'%**+on%s d% los 'angos
MsgBox oRangos-g%&Rang%!dd'%ss%s!s"&'+ng23
End "u.
No"a como los rangos es una caena larga e las irecciones e los rangos
se!araos !or un L 9 M* si lo 7uieres me3or !resen"able* reem!laza los !un"os . comas !or un sal"o
e lnea con el siguien"e c5igo+
,5o un+*o Fu% ha*%(os %s '%%(7la:a' los f 7o' sal&os d% l+n%a
sH(7 A [o+n2 "7l+&2oRangos-g%&Rang%!dd'%ss%s!s"&'+ng236"f"36$h'21333
,Mos&'a(os %l '%sul&ado
MsgBox sH(7
)os rangos "ambi4n se !ueen remover e la colecci5n+++
"u. !**%so/!/Rangos423
@+( oHo)a!*&+8a !s >.)%*&
@+( oRangos !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,$'%a(os %l *on&%nd%' 7a'a los 'angos
oRangos A Hh+s$o(7on%n&-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-"h%%&$%llRang%s"3
,!g'%ga(os los 'angos Fu% Fu%'a(os
A!renieno OOo Basic 1%1
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14!2" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B44B5" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$74$8" 3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@104@11" 3-g%&Rang%!dd'%ss23 6Jals% 3
,$o(7'o.a(os Fu% %s&Sn los 'angos
MsgBox oRangos-g%&Rang%!dd'%ss%s!s"&'+ng23

,R%(o8%(os %l 'ango d%s%ado
oRangos-'%(o8%Rang%!dd'%ss2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@104@11" 3-g%&Rang%!dd'%ss23 3

,1ol8%(os a 8%'+f+*a' Fu% s% ha?a '%(o8+do
MsgBox oRangos-g%&Rang%!dd'%ss%s!s"&'+ng23

End "u.
/uiao* si el rango 7ue 7uieres remover no e;is"e en la colecci5n* "e ar< un error
en "iem!o e e3ecuci5n* lo me3or es valiar an"es 7ue e;is"e+++
,1al+da(os Fu% %l 'ango a '%(o8%' %x+s&a %n la *ol%**+Kn
#f oRangos-hasB?<a(%2"Ho)a1-@104@11"3 Hh%n
,R%(o8%(os %l 'ango d%s%ado
oRangos-'%(o8%Rang%!dd'%ss2oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@104@11" 3-g%&Rang%!dd'%ss233
End #f
>l c5igo an"erior "iene un !roblema 7ue "al vez "e !uea causar un !e7ueKo
inconvenien"e* cuano consul"amos con 0asB.Name si el rango e;is"e* observa 7ue le !asamos el
nombre el rango como "e;"o (Hco3a1+(1$=(11H) . 7ue inclu.e el nombre e la 0o3a one es"a el
rango* !ero observa como al m4"oo removeAangeAress* le !asamos un ob3e"o (oco3aAc"iva)
7ue no necesariamen"e "iene 7ue corres!oner con el nombre e 0o3a (co3a1)* e "area "e 7uea
garan"izar 7ue se corres!one uno con el o"ro* es ecir* 7ue el ob3e"o 7ue a!un"a a la 0o3a*
e2ec"ivamen"e corres!ona en nombre con el rango !asao+
=.2.) 8e2erencia a 2ilas y columnas
)as 2ilas . columnas e una 0o3a e calculo siguen sieno rangos e celas* lo ?nico
7ue las carac"eriza* en 2unci5n e 0acer re2erencia a ellas* es 7ue abarcan la "o"alia e celas
7ue con"ienen* como en+
"u. !**%so$olu(na123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la *olu(na !
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14!65536" 3

,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
No"a como "omamos e la 2ila 1 . 0as"a la G55@G 7ue es el n?mero "o"al e 2ilas con
7ue !or a0ora cuen"an las 0o3as e calculo e /alc* si la columna com!le"a "ienen un nombre*
"ambi4n es !osible acceer !or meio e es"e nombre=
1%# G+# Ae2erencia a rangos
"u. !**%so$olu(na223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la *olu(na ! Fu% s% no(.'o 7'%8+a(%n&%
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$la8%s" 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
Poemos 0acer lo mismo con las 2ilas=
"u. !**%soJ+las123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la f+la 10
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!104#110" 3

,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
"u. !**%soJ+las223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la f+la 15 Fu% s% no(.'o 7'%8+a(%n&%
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "R%g+s&'os" 3
,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRango3
End "u.
OOo Basic cuen"a con m4"oos es!ec2icos !ara mani!ular 2ilas . columnas* !ero
!ro!iamen"e 0ablano* al acceer !or meio e es"os m4"oos* e3an e ser rangos e celas .
!asan a ser ob3e"os ScTableAo8sOb3 . ScTable/olumnsOb3 res!ec"ivamen"e como lo
emos"ramos a con"inuaci5n=
"u. !**%so$olu(na323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango !14E1
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14E1" 3
,Mos&'a(os %l &+7o d% o.)%&o
MsgBox oRango-g%&#(7l%(%n&a&+on<a(%23
,R%no(.'a(os %l o.)%&o oRango a**%d+%ndo a sus *olu(nas
oRango A oRango-g%&$olu(ns23
,1%'+f+*a(os %l &+7o d% o.)%&o
MsgBox oRango-g%&#(7l%(%n&a&+on<a(%23

End "u.
A!renieno OOo Basic 1%@
Tra"a e seleccionar el rango "al . como 7uea al 2inal el c5igo . veras 7ue "e a
un error* "ambi4n* "ra"a e acceer a la in2ormaci5n e e!uraci5n como se vio en ca!"ulos
an"eriores . no"a como im!lemen"an m4"oos . !ro!ieaes i2eren"es+ >s el mismo caso !ara las
2ilas=
"u. !**%soJ+las323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango !14!10
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14!10" 3
,Mos&'a(os %l &+7o d% o.)%&o
MsgBox oRango-g%&#(7l%(%n&a&+on<a(%23
,R%no(.'a(os %l o.)%&o oRango a**%d+%ndo a sus f+las
oRango A oRango-g%&Ro^s23
,1%'+f+*a(os %l &+7o d% o.)%&o
MsgBox oRango-g%&#(7l%(%n&a&+on<a(%23

End "u.
Por lo an"erior* la recomenaci5n es 7ue man"engas "u re2erencia original al rango .
uses una seguna variable si necesi"as acceer a las 2ilas o columnas com!le"as como "e mues"ro
en el siguien"e e3em!lo=
"u. !**%soJ+las$olu(nas123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ+l !s >.)%*&
@+( o$ol !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango $54E10
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$54E10" 3
,Mos&'a(os %l &+7o d% o.)%&o
MsgBox oRango-g%&#(7l%(%n&a&+on<a(%23
,$'%a(os una nu%8a '%f%'%n*+a a las f+las ? *olu(nas
o$ol A oRango-g%&$olu(ns23
oJ+l A oRango-g%&Ro^s23

,1%'+f+*a(os %l &+7o d% o.)%&o
MsgBox o$ol-g%&#(7l%(%n&a&+on<a(%23 9 " T " 9 oJ+l-g%&#(7l%(%n&a&+on<a(%23

End "u.
)os m4"oos ge"/olumns . ge"Ao8s* siem!re (aun7ue en el rango e;is"a solo una
2ila o columna) "e evolver< un con3un"o e /olumnas . 'ilas* !ara !oer "ener acceso a los
m4"oos . !ro!ieaes is!onibles en los rangos* as como !ara !oer 0acer selecciones*
"enemos 7ue acceer a caa 2ila o columna e 2orma iniviual o cons"ruir un con"eneor e
rangos !ara acceer a varias 2ilas o columnas* veamos los os casos=
Para seleccionar la !rimer columna el rango
"u. !**%soJ+las$olu(nas223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o$ol !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango $54E10
1%F G+# Ae2erencia a rangos
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$54E10" 3
,$'%a(os una nu%8a '%f%'%n*+a a la 7'+(%' *olu(na d%l 'ango la $
o$ol A oRango-g%&$olu(ns23-g%&B?#nd%x203

,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2o$ol3

End "u.
Para seleccionar la !rimer 2ila el rango
"u. !**%soJ+las$olu(nas323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ+l !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a al 'ango $54E10
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$54E10" 3
,$'%a(os una nu%8a '%f%'%n*+a a la s%gunda f+la d%l 'ango la 6
oJ+l A oRango-g%&Ro^s23-g%&B?#nd%x213

,O lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oJ+l3

End "u.
Por su!ues"o* !oemos seleccionar una 2ila . una columna al mismo "iem!o
"u. !**%soJ+las$olu(nas423
@+( oHo)a!*&+8a !s >.)%*&
@+( oRangos !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,$'%a(os %l *on&%nd%' 7a'a los 'angos
oRangos A Hh+s$o(7on%n&-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-"h%%&$%llRang%s"3

,!g'%ga(os la *olu(na E ? la f+la 10 al *on&%n%do'
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&$olu(ns23-g%&B?#nd%x243-g%&Rang%!dd'%ss236Jals% 3
oRangos-addRang%!dd'%ss2 oHo)a!*&+8a-g%&Ro^s23-g%&B?#nd%x293-g%&Rang%!dd'%ss236Jals% 3
,$o(7'o.a(os Fu% %s&an *o''%*&os s%l%**+onandolos
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2oRangos3

End "u.
/omo .a no"as"e* !oemos acceer irec"amen"e a la 2ila o columna 7ue 7ueramos
e cual7uier 0o3a !or meio e la colecci5n e es"as (ge"/olumns . ge"Ao8s) . !or meio el
nice (ge"B.:ne;) a la 2ila o columna eseaa=
oHo)a!*&+8a-g%&$olu(ns23-g%&B?#nd%x243 ,$olu(na E
oHo)a!*&+8a-g%&Ro^s23-g%&B?#nd%x293 ,J+la 10
Por a0ora 0emos vis"o como 0acer re2erencia a i2eren"es "i!os e rangos* en
ca!"ulos !os"eriores* veremos como mani!ular es"os rangos* mover* inser"ar* co!iar* e"c+* !ara
"erminar es"e "ema e 0acer re2erencia a rangos* veamos uno mu. im!or"an"e* la selecci5n ac"ual+
A!renieno OOo Basic 1%5
=.2.! 8e2erencia a la seleccin actual
Traba3ar con la selecci5n ac"ual* es ecir* con lo 7ue el usuario "enga seleccionao al
momen"o e llamar a una macro* es una ac"ivia mu. com?n* . "ambi4n* mu. !ro!ensa a errores
(.a sabes como son los usuarios)* "ra"aremos e man"ener el con"rol e la selecci5n* siem!re 7ue
sea !osible+
Para acceer a la selecci5n ac"ual en"ro e nues"ra 0o3a e calculo usamos el
m4"oo ge"/urren"Selec"ion() e la siguien"e manera=
"u. "%l%**+on!*&ual123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
MsgBox o"%l-g%&#(7l%(%n&a&+on<a(%23
End "u.
Pero cuiao* nues"ra selecci5n !ueen ser muc0as cosas* vuelve a e3ecu"ar la
macro an"erior* "enieno caa vez* seleccionao los siguien"es elemen"os=
1+ Una cela
#+ Un rango e celas
@+ 6arios rangos e celas
F+ Un ob3e"o e ibu3o
(ebes e ob"ener* si lo 0icis"e en el mismo oren 7ue .o* la siguien"e lis"a e
mensa3es=
1+ Sc/ellOb3
#+ Sc/ellAangeOb3
@+ Sc/ellAangesOb3
F+ com+sun+s"ar+ra8ing+Sv;S0a!e/ollec"ion
Observa la i2erencia en"re una sola cela (1) . un rango (# . @)* . no"a "ambi4n la
i2erencia en un rango (#) . varios (@)* es"o es mu. im!or"an"e !ara ac"uar en consecuencia !or
7ue son ob3e"os i2eren"es . !or lo "an"o im!lemen"an m4"oos . !ro!ieaes i2eren"es* !or
e3em!lo* vamos a "ra"ar e ver el con"enio e una cela* e3ecu"a la macro siguien"e* "enieno
seleccionao caa uno e los "res !rimeros rangos mencionaos+
"u. "%l%**+on!*&ual223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

MsgBox o"%l-g%&"&'+ng23
End "u.
Si seleccionas"e una sola cela . es"a con"ena algo* la macro an"erior "e "iene 7ue
mos"rar ese con"enio* en las os siguien"es selecciones* e un rango . varios rangos* "e "uvo 7ue
0aber ao el error LPro!iea o m4"oo no encon"raoM* !or 7ue e2ec"ivamen"e* el m4"oo
ge"S"ring() solo es"a im!lemen"ao en celas iniviuales* !or ello es mu. im!or"an"e iscriminar
la selecci5n 7ue 0a.a 0ec0o el usuario* !rimer in"en"o=
"u. "%l%**+on!*&ual323
@+( o"%l !s >.)%*&
1%G G+# Ae2erencia a rangos
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
MsgBox "Mu? .+%n s%l%**+onas&% solo una *%lda"
$as% ""*$%llRang%>.)"
MsgBox "H% 7asas&% un 7o*o"
$as% ""*$%llRang%s>.)"
MsgBox "<o &+%n%s '%(%d+o"
$as% Els%
MsgBox "<o s% n+ Fu% s%l%**+onas&%"
End "%l%*&
End "u.
A0ora .a sabemos 7ue es lo 7ue el usuario selecciono* !ero e!ener< e 7ue
7ueramos 0acer con la selecci5n !ara ac"uar en consecuencia* !or e3em!lo* su!ongamos 7ue
nues"ra macro re7uiere 7ue el usuario seleccione una . solo una cela* !oemos solo in2ormarle
como en el siguien"e e3em!lo=
"u. "%l%**+on!*&ual423
@+( o"%l !s >.)%*&
@+( o$%lda !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
o$%lda A o"%l
MsgBox o$%lda-g%&"&'+ng23
$as% Els%
MsgBox ""% '%Fu+%'% s%l%**+ona' solo C<! *%lda"
End "%l%*&
End "u.
O !oemos "omar solo la !rimer cela el rango o e los rangos 7ue 0a.a
seleccionao como en=
"u. "%l%**+on!*&ual523
@+( o"%l !s >.)%*&
@+( o$%lda !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
o$%lda A o"%l
$as% ""*$%llRang%>.)"
,"+ %s un solo 'ango6 a**%d%(os a la 7'+(%' *%lda
o$%lda A o"%l-g%&$%llB?0os+&+on2 060 3
$as% ""*$%llRang%s>.)"
,"+ son 8a'+os 'angos6 7'+(%'o a**%d%(os al 7'+(%' 'ango
,*on g%&B?#nd%x203 ? d%s7u%s a la 7'+(%' *%lda
o$%lda A o"%l-g%&B?#nd%x203-g%&$%llB?0os+&+on2 060 3
$as% Els%
MsgBox ""% '%Fu+%'% s%l%**+ona' una *%lda"
End "%l%*&

#f <o& #s<ull2o$%lda3 Hh%n
MsgBox o$%lda-g%&"&'+ng23
End #f
End "u.
A!renieno OOo Basic 1%%
No"a 7ue aun "enemos 7ue evaluar 7ue o/ela* a!un"e a un rango v<lio* recuera
7ue en la in"er2az el usuario* !uee 0aber m<s elemen"os seleccionables* como recomenaci5n
mal4vola* nunca con2es en el usuario* siem!re v<lia sus a"os+ >s im!or"an"e 7ue recueres 7ue
en el caso e un rango* la !rimer cela siem!re ser< la su!erior iz7uiera* . en un gru!o e
rangos* el rango $ "ambi4n siem!re ser< el 7ue es"e m<s arriba . a la iz7uiera* no im!or"a si 2ue
el ul"imo rango en ser seleccionao+ Tambi4n* recuera 7ue la !osici5n $*$ en relaci5n con la 0o3a
siem!re se re2iere a la cela A1* !ero en relaci5n al rango seleccionao* !uee ser cual7uier o"ra+
>n algunos casos* "al vez sea valio cual7uiera e los "res "i!os e rangos* es ecir*
7ue el m4"oo a usar es"a im!lemen"ao en los "res* !or e3em!lo=
"u. "%l%**+on!*&ual623
@+( o"%l !s >.)%*&
@+( oRango !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"6 ""*$%llRang%>.)"6 ""*$%llRang%s>.)"
oRango A o"%l
$as% Els%
MsgBox ""% '%Fu+%'% s%l%**+ona' un 'ango"
End "%l%*&

#f <o& #s<ull2oRango3 Hh%n
,Bo''a(os %l *on&%n+do d% las *%ldas
oRango-*l%a'$on&%n&s2313
End #f
End "u.
>l m4"oo clear/on"en"s* es"a im!lemen"ao en los "res "i!os e rangos* !or ello
!oemos llamarlo sin !roblemas* m<s aelan"e veremos a e"alle es"e m4"oo+
)o 7ue 0e 7uerio ilus"rar"e* es 7ue* e!enieno e "us necesiaes* "ienes 7ue
iscriminar una u o"ra cosa* !ero siem!re* . iscul!a la necea* siem!re v<lia los a"os+
=.2.= %bteniendo in2ormacin de ran*os
>n iversas ocasiones* es necesario saber one es"amos ubicaos* es ecir* en
7ue 0o3a* 2ila . columna* los rangos cuen"as con m4"oos . es"ruc"uras con es"a in2ormaci5n*
algunas e ellas .a las 0emos usao* "ambi4n* muc0os m4"oos e mani!ulaci5n e rangos*
re7uieren se les !asen las es"ruc"uras correc"as e la irecci5n e los rangos* !or ello es
im!or"an"e saber cuales son . como es"<n es"ruc"uraas* veamos cuales son=
"u. #nfoRangos123
@+( o"%l !s >.)%*&
@+( o@+' !s >.)%*&
@+( sH(7 !s "&'+ng
@+( *o1 !s #n&%g%'
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
,>.&%n%(os la d+'%**+on d% la *%lda
o@+' A o"%l-g%&$%ll!dd'%ss23
,Mos&'a(os sus da&os6 o.s%'8a *o(o ha*%(os uso d%l Gnd+*% d% la ho)a
,o@+'-"h%%& 7a'a o.&%n%' %l no(.'% d% la ho)a
1%, G+# Ae2erencia a rangos
MsgBox "Ho)a4 " 9 Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x2o@+'-"h%%&3-g%&<a(%23
9 $h'2133 9 "$olu(na4 " 9 o@+'-$olu(n 9 $h'2133 9 "J+la4 " 9 o@+'-Ro^
$as% ""*$%llRang%>.)"
,"+ %s un solo 'ango6 o.&%n%(os sus da&os
o@+' A o"%l-g%&Rang%!dd'%ss23
,$ons&'u+(os %l &%x&o +nfo'(a&+8o
sH(7 A "El 'ango %s&a %n la ho)a4 " 9 o@+'-"h%%& 9 $h'2133 9 /
"$olu(na #n+*+o4 " 9 o@+'-"&a'&$olu(n 9 $h'2133 9 /
"J+la #n+*+o4 " 9 o@+'-"&a'&Ro^ 9 $h'2133 9 /
"$olu(na J+n4 " 9 o@+'-End$olu(n 9 $h'2133 9 /
"J+la J+n4 " 9 o@+'-EndRo^
MsgBox sH(7
$as% ""*$%llRang%s>.)"
,"+ son 8a'+os 'angos6 7od%(os o.&%n%' los da&os d% *ada 'ango
Jo' *o1 A 0 Ho o"%l-g%&$oun&23T1
o@+' A o"%l-g%&B?#nd%x2*o13-g%&Rang%!dd'%ss23
sH(7 A "El 'ango " 9 *o1 9 " %s&a %n la ho)a4 " 9 o@+'-"h%%& 9
$h'2133 9 /
"$olu(na #n+*+o4 " 9 o@+'-"&a'&$olu(n 9 $h'2133 9 /
"J+la #n+*+o4 " 9 o@+'-"&a'&Ro^ 9 $h'2133 9 /
"$olu(na J+n4 " 9 o@+'-End$olu(n 9 $h'2133 9 /
"J+la J+n4 " 9 o@+'-EndRo^
MsgBox sH(7
<%x&
,> 7od%(os a**%d%' a las d+'%**+on%s d% &odos los 'angos
sH(7 A [o+n2 "7l+&2o"%l-g%&Rang%!dd'%ss%s!s"&'+ng236"f"36$h'21333
,Mos&'a(os %l '%sul&ado
MsgBox sH(7
$as% Els%
MsgBox ""% '%Fu+%'% s%l%**+ona' un 'ango d% *%ldas"
End "%l%*&

End "u.
Observa 7ue si es una sola cela se "iene 7ue usar ge"/ellAress 7ue ob"iene* la
0o3a one es"a la cela* la columna . 2ila* no se "e olvie 7ue "oo em!ieza en $* cuano es un
rango e celas se usa ge"AangeAress* 7ue con"iene* la 0o3a !or nice one es"a el rango* la
columna . 2ila one em!ieza . la columna . 2ila one "ermina* rei"ero* "oo ese $+ Observa
como en el caso e varios rangos* !oemos acceer a caa uno* !ero es"os si cuen"an con una
!ro!iea e "e;"o (ge"AangeAressesAsS"ring) 7ue irec"amen"e nos evuelve las irecciones
e los rangos en un 2orma"o en"enible LcasiM !or cual7uier usuario* !or e3em!lo L(a"os+A#=>5M+
No 0e encon"rao* esconozco su e;is"e* una !ro!iea o m4"oo similar !ara los casos e una
cela . un rango* !ero !oemos crearnos nues"ra !ro!ia 2unci5n 7ue lo 0aga !or noso"ros=
"u. #nfoRangos223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Csa(os nu%s&'a fun*+Kn 7%'sonal+:ada
MsgBox @+'%**+onRango2o"%l3
End "u.
,Pu% l+nda Fu%do %s&a fun*+on
Jun*&+on @+'%**+onRango2Rango !s >.)%*&3 !s "&'+ng
@+( o"J! !s >.)%*&
@+( o@+' !s >.)%*&
@+( (@a&os
,<os a7o?a(os %n la fun*+on d% $al* @#RE$$#>< 2!@@RE""3
o"J! A *'%a&%Cno"%'8+*%2 "*o(-sun-s&a'-sh%%&-Jun*&+on!**%ss" 3
A!renieno OOo Basic 1%-
,1al+da(os %l &+7o d% 'ango 7asado
"%l%*& $as% Rango-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
,"+ %s una sola *%lda usa(os g%&$%ll!dd'%ss
o@+' A Rango-g%&$%ll!dd'%ss
,$ons&'u+(os la (a&'+: d% da&os 7a'a la fun*+Kn
(@a&os A !''a?2 o@+'-Ro^B16 o@+'-$olu(nB1646Rango-g%&"7'%adsh%%&-g%&<a(%23 3
@+'%**+onRango A o"J!-*allJun*&+on2"!@@RE"""6(@a&os233
$as% ""*$%llRang%>.)"
,"+ %s un 'ango d% *%ldas usa(os g%&Rang%!dd'%ss
o@+' A Rango-g%&Rang%!dd'%ss23
,>.&%n%(os la *%lda su7%'+o' +:Fu+%'da d%l 'ango
(@a&os A!''a?2o@+'-"&a'&Ro^B16o@+'-"&a'&$olu(nB1646Rango-g%&"7'%adsh%%&-g%&<a(%233
@+'%**+onRango A o"J!-*allJun*&+on2"!@@RE"""6(@a&os233 9 "4"
,!ho'a la *%lda *%lda +nf%'+o' d%'%*ha d%l 'ango
(@a&os A !''a?2 o@+'-EndRo^B16 o@+'-End$olu(nB16 4 3
@+'%**+onRango A @+'%**+onRango 9 o"J!-*allJun*&+on2"!@@RE"""6(@a&os233
$as% ""*$%llRang%s>.)"
,Es&a ?a la 8+(os
@+'%**+onRango A [o+n2 "7l+&2Rango-g%&Rang%!dd'%ss%s!s"&'+ng236"f"36$h'21333
End "%l%*&

End Jun*&+on
)a 2unci5n (:A>//:ON e /alc* nos evuelve en 2orma"o e "e;"o* la re2erencia a la
cela* inic<nole la 2ila* columna* si 7ueremos la re2erencia absolu"a o rela"iva . la 0o3a* si
usamos las 2unciones e /alc ese OOo Basic* el nombre e es"as "enemos 7ue inicarlas en
ingles . !asarle los argumen"os e la 2unci5n en 2orma e ma"riz e a"os* es mu. im!or"an"e
!asarle* mnimo* los argumen"os re7uerios . es"os* eben es"ar en el 2orma"o (s"ring* in"eger*
e"c+) 7ue Les!eraM la 2unci5n* sino* "al . como sucee en la 0o3a e calculo* la 2unci5n "e re"ornara
un error+
Una seguna versi5n e es"a 2unci5n* !uee ser la siguien"e* no"a 7ue no 0acemos
uso e ninguna 2unci5n e 0o3a e calculo* sino 7ue ob"enemos los a"os solo con !ro!ieaes
el rango* !uees usar inis"in"amen"e cual7uiera e las os=
Jun*&+on @+'%**+onRango22Rango !s >.)%*&3 !s "&'+ng
@+( sH(7 !s "&'+ng
"%l%*& $as% Rango-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
sH(7 A Rango-g%&"7'%adsh%%&-g%&<a(%23 9 "-" 9 /
Rango-g%&$olu(ns23-g%&B?#nd%x203-g%&<a(%23 9 /
Rango-g%&$%ll!dd'%ss-Ro^ B 1
$as% ""*$%llRang%>.)"
sH(7 A Rango-g%&"7'%adsh%%&-g%&<a(%23 9 "-" 9 /
Rango-g%&$olu(ns23-g%&B?#nd%x203-g%&<a(%23 9 /
Rango-g%&Rang%!dd'%ss-"&a'&Ro^ B 1 9 "4" 9 /
Rango-g%&$olu(ns23-g%&B?#nd%x2Rango-g%&$olu(ns23-g%&$oun&23T
13-g%&<a(%23 9 /
Rango-g%&Rang%!dd'%ss-EndRo^ B 1
$as% ""*$%llRang%s>.)"
sH(7 A [o+n2 "7l+&2Rango-g%&Rang%!dd'%ss%s!s"&'+ng236"f"36$h'2133 3
End "%l%*&
@+'%**+onRango2 A sH(7

End Jun*&+on
Por ul"imo* !oemos saber el n?mero e 2ilas . columnas 7ue "iene un rango usano
los m4"oos ge"Ao8s . ge"/olumns res!ec"ivamen"e* es"os m4"oos solo es"<n is!onibles
cuano el rango es una sola cela . un rango* cuano son varios rangos "ienes 7ue ingeniar"eles
7ue no es com!licao+
1,$ G+# Ae2erencia a rangos
"u. #nfoRangos323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"6""*$%llRang%>.)"
MsgBox "J+las A " 9 o"%l-g%&Ro^s23-g%&$oun&23 9 $h'2133 9 /
"$olu(nas A " 9 o"%l-g%&$olu(ns23-g%&$oun&23
End "%l%*&

End "u.
)os rangos* "ambi4n* cuen"an con una !ro!iea 7ue nos evuelve la irecci5n el
rango seleccionao* se llama Absolu"eName . el resul"ao como su nombre lo inica es con las
re2erencias absolu"as+
"u. #nfoRangos423
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

MsgBox o"%l-!.solu&%<a(%

End "u.
=.2.A 5rabajando con Cursores
Un cursor* es un ob3e"o 7ue nos !ermi"e movernos !or la 0o3a en"era o en"ro e un
rango es!eci2icao sin a2ec"ar o moi2icar al rango a !ar"ir el cual se crea+ )o m<s usual es
crearlo a !ar"ir e un rango !ara es!lazarse en"ro e el* !ero aem<s "iene m4"oos mu. ?"iles
!ara e;!anir !or e3em!lo a la regi5n ac"ual* 7ue como sabes* es el rango e celas Lcon a"osM
elimi"ao !or 2ilas . columnas en blanco* la regi5n ac"ual es un conce!"o sumamen"e* ?"il .
!oeroso cuano se !rograma* !or ello le aremos un !oco e 4n2asis* su!ongamos la siguien"e
"abla e a"os=
Observa 7ue el cursor es"a en la cela (, . 7ue la regi5n ac"ual e es"e rango e
a"os es B#='11* a0ora* e3ecu"a la siguien"e macro one obligamos al usuario a seleccionar solo
A!renieno OOo Basic 1,1
una cela* lo cual sabes* no necesariamen"e es as . solo es !ara 2ines i<c"icos* no"a 7ue
usaremos una 2unci5n creaa en "ema an"erior 7ue se llama (ireccionAango* !ero mu.
im!or"an"e* cuano le !asemos como argumen"o una cela* es"a "raba3ara bien* !ero cuano
in"en"emos !asarle un cursor* al ser un ob3e"o i2eren"e* "e evolver< una caena vaca* !ara
solucionar es"o* "enemos 7ue agregar el "i!o e ob3e"o HSc/ell/ursorOb3H* busca . corrige la
siguien"e lnea en ic0a 2unci5n !ersonalizaa+
$as% ""*$%llRang%>.)"6 ""*$%ll$u'so'>.)"
Observa 7ue a0ora evaluara si es un rango e celas o un cursor* a0ora si* e3ecu"a
la siguien"e macro=
"u. $u'so'%s123
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
,0a'&+(os d% la s%l%**+on
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,"olo s+ %s una sola *%lda
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os la d+'%**+on d% la *%lda s%l%**+onada
MsgBox @+'%**+onRango2 o"%l 3

,$'%a(os un *u'so' a 7a'&+' d% %s&a *%lda
o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,1%'+f+*a(os Fu% a7un&%n a la (+s(a *%lda
MsgBox @+'%**+onRango2 o$u'so' 3

,<os (o8%(os al +n+*+o d% la '%g+on a*&ual
o$u'so'-go&o"&a'&23
MsgBox @+'%**+onRango2 o$u'so' 3
,<os (o8%(os al f+nal
o$u'so'-go&oEnd23
MsgBox @+'%**+onRango2 o$u'so' 3
,Ex7and+s(o %l *u'so' a &oda la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3

,Mos&'a(os d% nu%8o la d+'%**+on d% la *%lda s%l%**+onada
,o.s%'8a Fu% %s&a no s% a (o8+do
MsgBox @+'%**+onRango2 o"%l 3
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
)os cursores* al com!ar"ir la ma.ora e los servicios e las celas . los rangos*
0erean la ma.ora e sus m4"oos . !ro!ieaes* !ero sus m4"oos !ar"iculares son lo 7ue los
0acen es!eciales e in"eresan"es+ Una !regun"a recurren"e en las lis"as e correo* es Icomo
encuen"ro la siguien"e 2ila libreJ* con un cursor* es"o es mu. sencillo=
"u. $u'so'%s223
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
,0a'&+(os d% la s%l%**+on
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,"olo s+ %s una sola *%lda
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,$'%a(os un *u'so' a 7a'&+' d% %s&a *%lda
o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,<os (o8%(os al f+nal
1,# G+# Ae2erencia a rangos
o$u'so'-go&oEnd23
,5a s+gu+%n&% f+la l+.'%6 s%'a %s&a f+la (as 1
MsgBox o$u'so'-g%&Rang%!dd'%ss23-EndRo^ B 1
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Por su!ues"o* algo mu. !rac"ico es "ener una 2unci5n !ersonalizaa 7ue nos
encuen"re la siguien"e 2ila libre* algo como=
Jun*&+on J+la5+.'%2 Rango !s >.)%*&3 !s 5ong
@+( o$u'so' !s >.)%*&
o$u'so' A Rango-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 Rango 3
o$u'so'-go&oEnd23
J+la5+.'% A o$u'so'-g%&Rang%!dd'%ss23-EndRo^ B 1

End Jun*&+on
O 7ue usamos e una 2orma mu. sencilla=
"u. $u'so'%s323
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
,0a'&+(os d% la s%l%**+on
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,"olo fun*+ona *on *%ldas +nd+8+dual%s o 'angos d% *%ldas
"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"6 ""*$%llRang%>.)"
MsgBox "5a s+gu+%n&% f+la l+.'% %s la4 " 9 J+la5+.'%2 o"%l 3
End "%l%*&

End "u.
O"ros m4"oos con 7ue cuen"an los cursores son=
"u. $u'so'%s423
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3

,<os (o8%(os a la s+gu+%n&% *%lda
o$u'so'-go&o<%x&23
MsgBox @+'%**+onRango2 o$u'so' 3

,<os (o8%(os a la *%lda an&%'+o'
o$u'so'-go&o0'%8+ous23
MsgBox @+'%**+onRango2 o$u'so' 3

,<os (o8%(os dos *olu(nas a la d%'%*ha ? &'%s f+las a.a)o
o$u'so'-go&o>ffs%&22633
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
A!renieno OOo Basic 1,@
>s"os m4"oos 0a. 7ue usarlos con cuiao* !ues !uees Lsalir"eM el rango one
es"as "raba3ano . .a no !or<s mover"e con o"ros m4"oos como go"oS"ar" o go"o>n* !or
e3em!lo* si "e mueves al 2inal e un rango (go"o>n) . es!u4s "e es!lazas con go"oO22se"(@*@)* o
sea "res columnas a la erec0a . "res 2ilas aba3o* "e salr<s el rango . .a no !or<s regresar al
inicio (go"oS"ar")* usa es"os m4"oos con !recauci5n+
"u. $u'so'%s523
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3

o$u'so'-go&o"&a'&23
,Ho(a no&a d% %s&a d+'%**+on
MsgBox @+'%**+onRango2 o$u'so' 3

o$u'so'-go&oEnd23
MsgBox @+'%**+onRango2 o$u'so' 3

,<os (o8%(os &'%s *olu(nas a la d%'%*ha ? &'%s f+las a.a)o
o$u'so'-go&o>ffs%&23633
MsgBox @+'%**+onRango2 o$u'so' 3

,#n&%n&a(os '%g'%sa' al +n+*+o6 no&a *o(o <> %s la
,(+s(a d% la 7'+(%' l+n%a
o$u'so'-go&o"&a'&23
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Observa a"en"amen"e la siguien"e imagen* no"a en la barra e 2ormulas 7ue la
2ormula mos"raa es"a encerraa en unas llaves* como sabes* es"as llaves nos inican 7ue ic0a
2ormula 2orma !ar"e e una 2ormula ma"ricial* como no es el "ema e es"e libro las 2ormulas
ma"riciales no en"raremos en e"alle alguno* !ero como sabes* es"as se in"roucen con la
combinaci5n e "eclas /TA)RSc:'TR>NT>A . 7ue .a creaa* no !uees moi2icar solo una
cela e ic0as ma"rices* sino "ienes 7ue 0acerlo con "oa la ma"riz+
/on un cursor* !oemos saber cual es el rango e una 2ormula ma"ricial* como lo
emos"ramos en el siguien"e e3em!lo* !robao en los a"os mos"raos en la imagen an"erior=
"u. $u'so'%s623
@+( o"%l !s >.)%*&
1,F G+# Ae2erencia a rangos
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3

o$u'so'-*olla7s%Ho$u''%n&!''a?23
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
>n la siguien"e imagen* observa las celas combinaas* cuano es"ablecemos el
cursor en celas combinaas . "ra"amos e ob"ener ic0a irecci5n* solo "e evolver< la cela
su!erior iz7uiera e ic0o rango* !ero con un cursor !oemos saber el rango com!le"o e es"as
celas combinaas=
"u. $u'so'%s723
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3

,$o(7'o.a(os Fu% solo d%8u%l8% una *%lda
MsgBox @+'%**+onRango2 o"%l 3
,Ex7and+(os %l *u'so' a &odas las *%ldas *o(.+nadas
o$u'so'-*olla7s%HoM%'g%d!'%a23
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Poemos e;!anir nues"ro cursor !ara 7ue abar7ue "oas las columnas e nues"ra
regi5n ac"ual=
"u. $u'so'%s823
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,Ex7and+(os %l *u'so' a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3

A!renieno OOo Basic 1,5
,O lu%go a &odas las *olu(nas
o$u'so'-%x7andHoEn&+'%$olu(ns23
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
:n"uir<s 7ue "ambi4n es !osible 0acerlo en las 2ilas=
,Ex7and+(os %l *u'so' a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3

,O lu%go a &odas las *olu(nas
o$u'so'-%x7andHoEn&+'%Ro^s23
MsgBox @+'%**+onRango2 o$u'so' 3
Ten cuiao cuano uses los os m4"oos an"eriores* si los e3ecu"as uno e"r<s e
o"ro* "enr<s un cursor con "u 0o3a com!le"a* 7ue no escar"es usar un a* lo im!or"an"e es saber
7ue es"as 0acieno siem!re=
"u. $u'so'%s1023
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,Ex7and+(os %l *u'so' a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3

,O lu%go a &odas las f+las
o$u'so'-%x7andHoEn&+'%Ro^s23
MsgBox @+'%**+onRango2 o$u'so' 3

,<o&a *o(o d%8u%l8% la ho)a %n&%'a
o$u'so'-%x7andHoEn&+'%$olu(ns23
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Tambi4n !uees am!liar "u cursor el n?mero e columnas . 2ilas 7ue necesi"es* "oma
en cuen"a 7ue la cela su!erior iz7uiera no cambia=
"u. $u'so'%s1123
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,Ex7and+(os %l *u'so' a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3
1,G G+# Ae2erencia a rangos

,O lu%go *a(.+a(os %l *u'so' a 2 *olu(nas ? 5 f+las
o$u'so'-*olla7s%Ho"+:%2 265 3
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
No"a 7ue es"amos LcambianoM el "amaKo el cursor* si lo 7ue 7uieres realmen"e es
e;!anirlo* "ienes 7ue sumarle el anc0o . al"o e la regi5n ac"ual* como en el siguien"e e3em!lo=
"u. $u'so'%s1223
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,Ex7and+(os %l *u'so' a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
MsgBox @+'%**+onRango2 o$u'so' 3

,O lu%go a(7l+a(os %l *u'so' 1 *olu(na ? 5 f+las
o$u'so'-*olla7s%Ho"+:%2 o$u'so'-g%&$olu(ns23-g%&$oun&23 B 16
o$u'so'-g%&Ro^s23-g%&$oun&23 B 5 3
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
No"a como 0emos usao algunos m4"oos vis"os en el "ema an"erior
( ge"/olumns()+ge"/oun" )* como .a lo mencionamos* es"o es !osible !or 7ue los cursores
com!ar"en la ma.ora e los servicios con los rangos+ /asi !ara 2inalizar* veamos os m4"oos
m<s e los cursores+
"u. $u'so'%s1323
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
,1a(os al +n+*+o d%l a'%a usada6 %l a'gu(%n&o Jals%6 %8+&a Fu% s%
,%x7anda la s%l%**+Kn d%l 'ango
o$u'so'-go&o"&a'&>fCs%d!'%a2 Jals% 3
MsgBox @+'%**+onRango2 o$u'so' 3

,!ho'a 8a(os al f+nal
o$u'so'-go&oEnd>fCs%d!'%a2 Jals% 3
MsgBox @+'%**+onRango2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
A!renieno OOo Basic 1,%
>n una 0o3a e calculo* el L<rea e usuarioM* es a7uel rango Le2ec"ivamen"eM usao*
es mu. in<mico !ues varia e acuero a su uso . eliminaci5n* en una 0o3a nueva el inicio . el
2inal e es"a <rea siem!re ser< el mismo* la cela A1* si "ienes LunaM sola cela usaa* es"a* ser<
el inicio . el 2in e "u <rea e usuario* la cosa cambia en cuan"o "ienes os o m<s celas usaas*
la regla es= el inicio e "u <rea e usuario ser< la cela (Lcon a"osM) 7ue es"e m<s cercana al
e;"remo su!erior iz7uiero e la 0o3a . el 2inal ser< la cela (Lcon a"osM) 7ue es"e m<s cercana al
e;"remo in2erior erec0o e ic0a 0o3a* . igo 7ue es in<mica* !or 7ue si eliminas a"os o celas*
es"a <rea se ira a3us"ano con2orme a es"os cambios+
A0ora si* !ara "erminar* un cursor* "ambi4n lo !uees usar !ara es"ablecer una
selecci5n* como en el e3em!lo siguien"e one seleccionamos la regi5n ac"ual el rango=
"u. $u'so'%s1423
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n

o$u'so' A o"%l-g%&"7'%ad"h%%&23-*'%a&%$u'so'B?Rang%2 o"%l 3
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o$u'so' 3

Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
/on lo cual observamos 7ue es"os cursores con bas"an"e vers<"iles+++
=.2.E Selecciones especiales
)os rangos* cuen"an con unos m4"oos bas"an"e in"eresan"es (. ?"iles) !ara 0acer
algunas selecciones es!eciales* !or e3em!lo* !oemos seleccionar las celas vacas e un rango
como en=
"u. "%l%**+on%sEs7%*+al%s123
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
,!**%d%(os a la s%l%**+Kn a*&ual
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas 8a*Gas
o"%lEs7 A o"%l-Fu%'?E(7&?$%lls23
,O las s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End "u.
/omo 0emos vis"o a lo largo e es"as no"as* no es siem!re necesario 7ue
selecciones* !uees mani!ular el rango ob"enio sin 7ue es"o sea necesario* si una cela "iene
aun7ue sea solo un es!acio o alg?n car<c"er es!ecial no visible ("abulaores* sal"os e !<gina)*
es"a* .a no ser< vaca . no la ob"enr<s !or es"e m4"oo+ Un !un"o im!or"an"e* es 7ue es"e
m4"oo siem!re re"orna un con3un"o e rangos (ScCellRangesObj)* los cuales "ienes 7ue
mani!ular como .a lo 0emos a!renio+
1,, G+# Ae2erencia a rangos
Tambi4n !oemos seleccionar celas e acuero a su con"enio* en el siguien"e
e3em!lo seleccionamos las celas con "e;"o=
"u. "%l%**+on%sEs7%*+al%s223
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
,!**%d%(os a la s%l%**+on a*&ual
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas *on &%x&o
o"%lEs7 A o"%l-Fu%'?$on&%n&$%lls2 4 3
,O las s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End "u.
A0ora* las celas con 2ormulas=
"u. "%l%**+on%sEs7%*+al%s323
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas *on fo'(ulas
o"%lEs7 A o"%l-Fu%'?$on&%n&$%lls2 *o(-sun-s&a'-sh%%&-$%llJlags-J>RMC5! 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End "u.
)os valores !osibles !ara el argumen"o e es"e m4"oo son los siguien"es* valores
7ue "ambi4n se usan !ara borrar a"os como se ve en el "ema G+F+@+Borrano a"os
Constante 0alor
com+sun+s"ar+s0ee"+/ell'lags+6A)U> 1
com+sun+s"ar+s0ee"+/ell'lags+(AT>T:M> #
com+sun+s"ar+s0ee"+/ell'lags+STA:N& F
com+sun+s"ar+s0ee"+/ell'lags+ANNOTAT:ON ,
com+sun+s"ar+s0ee"+/ell'lags+'OAMU)A 1G
com+sun+s"ar+s0ee"+/ell'lags+cAA(ATTA @#
com+sun+s"ar+s0ee"+/ell'lags+STO)>S GF
com+sun+s"ar+s0ee"+/ell'lags+OBi>/T 1#,
com+sun+s"ar+s0ee"+/ell'lags+>(:TATTA #5G
com+sun+s"ar+s0ee"+/ell'lags+'OAMATT>( 51#
Puees usar e 2orma inis"in"a el valor num4rico o su cons"an"e como se ve en los
os e3em!los an"eriores . "ambi4n sumar los valores !ara "ener m?l"i!les combinaciones* como en
el e3em!lo siguien"e one seleccionamos las celas con "e;"o . valores=
"u. "%l%**+on%sEs7%*+al%s423
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas *on &%x&o ? 8alo'%s
A!renieno OOo Basic 1,-
o"%lEs7 A o"%l-Fu%'?$on&%n&$%lls2 5 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End "u.
/omo .a se menciono* es"os m4"oos siem!re evuelven un con3un"o e rangos
(ScCellRangesObj)* !or lo 7ue es mu. sencillo saber si 0a. o no resul"aos* en el siguien"e
e3em!lo* .a no seleccionamos* !ero in2ormamos si 0ubo o no celas con el cri"erio es!eci2icao*
!ara es"e e3em!lo* las celas 7ue "engan no"as* observa 7ue usamos una 2unci5n !ersonalizaa
(-ireccionRango6)* 7ue .a 0emos usao an"eriormen"e=
"u. "%l%**+on%sEs7%*+al%s523
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas *on no&as
o"%lEs7 A o"%l-Fu%'?$on&%n&$%lls2 8 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o ha? *%ldas *on no&as"
Els%
,Mos&'a(os la d+'%**+Kn d% los 'angos %n*on&'ados
MsgBox @+'%**+onRango22 o"%lEs7 3
End #f
End "u.
Oa vimos como seleccionar 2ormulas* !ero "ambi4n !oemos seleccionar 2ormulas*
e acuero su resul"ao* !or e3em!lo* seleccionemos las celas 7ue con"engan error=
"u. "%l%**+on%sEs7%*+al%s623
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%*u7%'a(os las *%ldas *on fo'(ulas *u?o '%sul&ado s%a %''o'
o"%lEs7 A o"%l-Fu%'?Jo'(ula$%lls2 4 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o ha? *%ldas *on %''o'%s"
Els%
MsgBox @+'%**+onRango22 o"%lEs7 3
End #f
End "u.
>l argumen"o e es"e m4"oo* solo ace!"a los "res valores siguien"e=
Constante 0alor
com+sun+s"ar+s0ee"+'ormulaAesul"+6A)U> 1
com+sun+s"ar+s0ee"+'ormulaAesul"+STA:N& #
com+sun+s"ar+s0ee"+'ormulaAesul"+>AAOA F
)os cuales* !oemos combinar=
"u. "%l%**+on%sEs7%*+al%s723
@+( o"%l !s >.)%*&
@+( o"%lEs7 !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
1-$ G+# Ae2erencia a rangos
,R%*u7%'a(os las *%ldas *on fo'(ulas *u?o '%sul&ado s%a &%x&o o 8alo'
o"%lEs7 A o"%l-Fu%'?Jo'(ula$%lls2 3 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o ha? *%ldas *on &%x&o o 8alo'"
Els%
MsgBox @+'%**+onRango22 o"%lEs7 3
End #f
End "u.
)os siguien"e m4"oos re7uieren una a"enci5n es!ecial* su!ongamos la siguien"e
lis"a e a"os=
( & C D E
1 @ @ 5 @ F
2 5 # 1 # F
@ 1 # 5 5
) 1 1 @ F 5
! 1 5 5 5 F
= F 1 F 1 @
A 1 @ 1 1 5
E 5 1 1 5 @
G 5 @ @ # @
1I @ # F 5 1
Selecciona el rango A1=A1$ . e3ecu"a la siguien"e macro=
"u. "%l%**+on%sEs7%*+al%s823
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o"%lEs7 !s >.)%*&
@+( o$%lda !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,El 'ango a %8alua'
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14!10"3
,5a *%lda d% *o(7a'a*+Kn
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3
,Bus*a(os las *%ldas d+f%'%n&%s 7o' *olu(na
o"%lEs7 A oRango-Fu%'?$olu(n@+ff%'%n*%s2 o$%lda-g%&$%ll!dd'%ss 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *%ldas"
Els%
,5as s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
End "u.
eue "e "iene 7ue seleccionar=
A!renieno OOo Basic 1-1
Observa como seleccion5 las celas con un valor i2eren"e al e la cela e
com!araci5n* es mu. im!or"an"e en"ener 7ue* e la cela e com!araci5n* 4Onicamente toma
la 2ila1 e la irecci5n !ara la com!araci5n* in"en"a !asarle a es"a misma macro la cela /1*
observa el resul"ao* es!u4s !asale la cela /# . observa el resul"ao+ /on el siguien"e e3em!lo*
creo* 7uea bas"an"e claro como "raba3a es"e m4"oo* observa el rango !asao . la cela e
com!araci5n* el valor com!arao* es el valor e la 2ila res!ec"iva !ara caa columna=
"u. "%l%**+on%sEs7%*+al%s923
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o"%lEs7 !s >.)%*&
@+( o$%lda !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14$10"3
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"B10"3
o"%lEs7 A oRango-Fu%'?$olu(n@+ff%'%n*%s2 o$%lda-g%&$%ll!dd'%ss 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *%ldas"
Els%
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
End "u.
eue nos evuelve=
Por ul"imo* e3ecu"a la macro* llamano al rango com!le"o e !ruebas* con la cela e
com!araci5n 7ue 7uieras* como en=
"u. "%l%**+on%sEs7%*+al%s1023
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o"%lEs7 !s >.)%*&
@+( o$%lda !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14E10"3
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!3"3
o"%lEs7 A oRango-Fu%'?$olu(n@+ff%'%n*%s2 o$%lda-g%&$%ll!dd'%ss 3
1-# G+# Ae2erencia a rangos
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *%ldas"
Els%
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
End "u.
O com!rueba 7ue es correc"o el resul"ao+ >l mismo "i!o e com!araci5n lo
!oemos 0acer !ero !or 2ilas* como en el siguien"e e3em!lo* usano la misma "abla e a"os=
"u. "%l%**+on%sEs7%*+al%s1123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o"%lEs7 !s >.)%*&
@+( o$%lda !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!104E10"3
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"$10"3
,Bus*a(os las *%ldas d+f%'%n&%s 7o' f+las
o"%lEs7 A oRango-Fu%'?Ro^@+ff%'%n*%s2 o$%lda-g%&$%ll!dd'%ss 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *%ldas"
Els%
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
End "u.
O el resul"ao=
)a l5gica es e;ac"amen"e la misma e 0acerlo !or columnas* solo 7ue a0ora* 4solo
toma la columna1 e la cela e com!araci5n* as 7ue solo 0agamos un e3em!lo m<s con el
rango com!le"o e a"os=
"u. "%l%**+on%sEs7%*+al%s1223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o"%lEs7 !s >.)%*&
@+( o$%lda !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14E10"3
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"@1"3
,Bus*a(os las *%ldas d+f%'%n&%s 7o' f+las
o"%lEs7 A oRango-Fu%'?Ro^@+ff%'%n*%s2 o$%lda-g%&$%ll!dd'%ss 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *%ldas"
Els%
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
A!renieno OOo Basic 1-@
End "u.
eue nos selecciona=
)o in"eresan"e e es"os m4"oos* es 7ue los valores e las celas* no "ienen 7ue ser
necesariamen"e "e;"o* !uee ser cual7uier "i!o e a"o* inclu.eno 2ormulas* en cu.o caso* se
"omar< el "i!o e resul"ao e es"a+
>l siguien"e m4"oo nos sirve !ara saber el rango e celas comunes a os rangos*
observa la siguien"e imagen* la macro e e3em!lo* nos "iene 7ue seleccionar el rango en vere=
"u. "%l%**+on%sEs7%*+al%s1323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango1 !s >.)%*&
@+( oRango2 !s >.)%*&
@+( o"%lEs7 !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango1 A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"B24#11"3
oRango2 A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"D84<17"3
,Bus*a(os las *%ldas *o(un%s
o"%lEs7 A oRango1-Fu%'?#n&%'s%*&+on2 oRango2-g%&Rang%!dd'%ss 3
#f o"%lEs7-g%&$oun& A 0 Hh%n
MsgBox "<o ha? nada %n *o(;n"
Els%
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 o"%lEs7 3
End #f
End "u.
1-F G+# Ae2erencia a rangos
Para "erminar es"e "ema* veamos un m4"oo mu. in"eresan"e* nos !ermi"e
seleccionar* el rango invocao* solo las celas visibles+ Observa la siguien"e imagen=
No"a* en los encabezaos e 2ila* 7ue "enemos muc0as 2ilas ocul"as* con la siguien"e
macro* mos"ramos la irecci5n e los rangos visibles=
"u. "%l%**+on%sEs7%*+al%s1423
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o1+s+.l%s !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14D243"3
,Bus*a(os las *%ldas 8+s+.l%s
o1+s+.l%s A oRango-Fu%'?1+s+.l%$%lls23
#f o1+s+.l%s-g%&$oun& A 0 Hh%n
MsgBox "<o ha? *%ldas o*ul&as"
Els%
,Mos&'a(os la d+'%**+Kn d% los 'angos 8+s+.l%s
MsgBox @+'%**+onRango22 o1+s+.l%s 3
End #f
End "u.
/uano 0aces un 2il"ro au"om<"ico o es!ecial . cuano calculas sub"o"ales e in"en"as
0acer o!eraciones e co!iao* la co!ia resul"an"e* solo con"enr< las celas visibles* cuano
agru!as u ocul"as 2ilas o columnas manualmen"e* la co!ia incluir< aun las celas ocul"as* !ero con
es"e m4"oo siem!re ob"enr<s las celas visibles* 7ue* en con3un"o con los conocimien"os el
siguien"e ca!i"ulo* !uees 0acer "u !ro!ia versi5n e co!iao+
A!renieno OOo Basic 1-5
=. Manipulando ran*os
>n el ca!i"ulo an"erior a!renimos a re2erenciar cual7uier rango 7ue nos in"erese*
a0ora* a!reneremos a mani!ular es"os rangos* !rinci!almen"e* a moverlos* inser"arlos*
eliminarlos . co!iarlos+
=..1 Mo,iendo ran*os
Para mover un rango* usamos el m4"oo moveAange e las 0o3as e calculo* es"e
m4"oo re7uiere e os argumen"os* la cela su!erior iz7uiera (/ellAress) es"ino one se
mover< el rango origen (/ellAangeAress)
co3a+moveAange( (es"ino As /ellAress* Origen As /ellAangeAress )
>l siguien"e e3em!lo mueve el rango A1=B5 e la 0o3a ac"iva* a la cela (1$ e la
misma 0o3a=
"u. Mo8%'Rangos123
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,Rango a (o8%'
o>'+g%n A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14B5" 3
,$%lda d%s&+no
o@%s&+no A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@10" 3
,Mo8%(os %l 'ango
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3

End "u.
Toma en cuen"a 7ue el rango origen L"ieneM 7ue ser un rango e celas* 7ue la cela
es"ino L"ieneM 7ue ser una cela iniviual* 7ue los a"os el rango origen se borran . los a"os
el rango es"ino son Lreempla9ados sin pre*untarteM !or los a"os origen . mu. im!or"an"e* si
el rango con"iene 2ormulas* es"as* Lno se actuali9an a la nue,a posicinM aun . cuano las
re2erencias sean rela"ivas* "ambi4n* el rango origen cambia !ara aa!"arse al rango es"ino* es
ecir* la re2erencia a ic0o rango se ac"ualizara au"om<"icamen"e como lo !uees com!robar si
mues"ras la irecci5n el rango origen* an"es . es!u4s e moverse=
MsgBox @+'%**+onRango2 o>'+g%n 3
,Mo8%(os %l 'ango
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3

MsgBox @+'%**+onRango2 o>'+g%n 3
1-G G+@ Mani!ulano rangos
Aecuera 7ue la 2unci5n (ireccionAango* es !ersonalizaa . la 0emos usao en los
?l"imos "emas vis"os+ Si 7uieres mover solo una cela* !rueba la siguien"e macro=
"u. Mo8%'Rangos223
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,<o&a *o(o ha*%(os la '%f%'%n*+a 7a'a Fu% s%a un 'ango
o>'+g%n A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B24B2" 3
,Es&a &+%n% Fu% s%gu+' s+%ndo una sola *%lda
o@%s&+no A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E5" 3
,Mo8%(os %l 'ango
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3

End "u.
Por su!ues"o !oemos valiar 7ue !or lo menos el origen . el es"ino sean
e2ec"ivamen"e los argumen"os 7ue necesi"a es"e m4"oo=
"u. Mo8%'Rangos323
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$5" 3
o@%s&+no A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "J15" 3
,1al+da(os Fu% los 'angos s%an *o''%*&os
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" !nd o@%s&+no-g%&#(7l%(%n&a&+on<a(%23 A
""*$%ll>.)" Hh%n
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Els%
MsgBox "5os 'angos no son *o''%*&os"
End #f

End "u.
>s"a valiaci5n es m<s ?"il cuano "omamos el rango a mover a !ar"ir e la selecci5n
ac"ual el usuario* !ara 7ue 2uncione el siguien"e c5igo* "ienes 7ue seleccionar m<s e una cela
es ecir* un rango e celas* !or su!ues"o* "e 7uea e "area 0acer 7ue 2uncione* aun . con solo
seleccionar una cela+
"u. Mo8%'Rangos423
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,1al+da(os Fu% los 'angos s%an *o''%*&os
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
,@%)a(os una *olu(na ? una f+la %n .lan*o
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n B 26
o>'+g%n-g%&Rang%!dd'%ss23-EndRo^ B 2 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Els%
MsgBox "El 'ango >'+g%n no %s *o''%*&o"
End #f

A!renieno OOo Basic 1-%
End "u.
No"a como solo valiamos el origen* !or 7ue el es"ino lo cons"ruimos a !ar"ir el
es"e* observa 7ue cuano mueves un rango* la selecci5n ac"ual no cambia* se 7uea en el rango
origen* si seleccionamos el rango cuano se 0a movio* !oremos ir movieno el rango* "an"as
veces como llames a la macro* moi2ica la macro an"erior !ara 7ue 7uee as=
"u. Mo8%'Rangos523
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n B 26
o>'+g%n-g%&Rang%!dd'%ss23-EndRo^ B 2 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
,"%l%**+ona(os %l nu%8o o'+g%n
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3
Els%
MsgBox "El 'ango >'+g%n no %s *o''%*&o"
End #f

End "u.
O llamala (e3ecu"ala) varias veces* no"aras como se va movieno el rango* !ero
cuiao* !uee !asar 7ue en alg?n momen"o "e un error* IcuanoJ* mu. bien* cuano el rango
es"ino 7uee 2uera e la 0o3a e calculo* !or lo 7ue "enemos 7ue evaluar "ambi4n 7ue es"o no
sucea=
"u. Mo8%'Rangos623
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
@+( l5+(+&%$ol !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
,Da'an&+:a(os Fu% no so.'% 7as% %l (ax+(o d% *olu(nas %n la ho)a d% *al*ulo
l5+(+&%$ol A o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n B 2 B
o>'+g%n-g%&$olu(ns23-g%&$oun&23
#f l5+(+&%$ol XA oHo)a!*&+8a-g%&$olu(ns23-g%&$oun&23 Hh%n
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n
B 26 o>'+g%n-g%&Rang%!dd'%ss23-EndRo^ B 2 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3
Els%
MsgBox ""% ll%go al l+(+&% d% la ho)a"
End #f
Els%
MsgBox "5os 'angos no son *o''%*&os"
End #f

End "u.
No"a 7ue con oco3aAc"iva+ge"/olumns()+ge"/oun"()* ob"enemos el "o"al e columnas
e la 0o3a ac"iva* no im!or"a si es"a "iene #5G como en O!eno22ice+org #+; o 1$#F como en
O!eno22ice+org @+;* con lo 7ue es"e c5igo 2uncionara en las os versiones* e 0ec0o* en cual7uier
versi5n 7ue im!lemen"e es"as !ro!ieaes* . si* claro 7ue "ienes 7ue evaluar "ambi4n 7ue no
!ases el limi"e e 2ilas* !ero esa* es "u "area+
1-, G+@ Mani!ulano rangos
cas"a a0ora 0emos movio rangos en"ro e la misma 0o3a* !ero e 2orma mu.
sencilla !oemos mover rangos en"re 0o3as* solo 0a. 7ue es"ablecer el es"ino correc"amen"e . el
m4"oo se encargar< el res"o=
"u. Mo8%'Rangos723
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
@+( l5+(+&%$ol !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
o@%s&+no A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 06 0 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3
Els%
MsgBox "El 'ango >'+g%n no %s *o''%*&o"
End #f

End "u.
Observa como el origen lo es"ablecemos en la 0o3a ac"iva* !ero el es"ino lo
re2erenciamos a la !rimer 0o3a el ocumen"o* claro 7ue !uees 0acerlo a cual7uier o"ra* !or
nice o !or nombre como .a lo 0emos a!renio+ No"a 7ue el m4"oo moveAange* lo llamamos
ese la 0o3a ac"iva* !ero "ambi4n lo !uees llamar ese cual7uier 0o3a* lo im!or"an"e es 7ue los
argumen"os* es ecir* el origen . es"ino es"4n correc"os* observa en el siguien"e e3em!lo* como
llamamos al m4"oo moveAange ese la 0o3a el rango es"ino=
"u. Mo8%'Rangos823
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
@+( l5+(+&%$ol !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o>'+g%n-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
o@%s&+no A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 06 0 3
o@%s&+no-g%&"7'%ad"h%%&23-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236
o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3
Els%
MsgBox "El 'ango >'+g%n no %s *o''%*&o"
End #f

End "u.
Tambi4n !oemos mover una columna com!le"a* recuera 7ue una columna no es
m<s 7ue un rango e celas=
"u. Mo8%'Rangos923
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,R%f%'%n*+a(os *o(o o'+g%n la *olu(na E
o>'+g%n A oHo)a!*&+8a-g%&$olu(ns23-g%&B?#nd%x243
,$o(o d%s&+no una *olu(na a la d%'%*ha
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n B 16 0 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3

A!renieno OOo Basic 1--
End "u.
O .a encarreraos* movemos 2ilas "ambi4n=
"u. Mo8%'Rangos1023
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,R%f%'%n*+a(os *o(o o'+g%n la f+la 5
o>'+g%n A oHo)a!*&+8a-g%&Ro^s23-g%&B?#nd%x243
,$o(o d%s&+no la f+la 10
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 06 9 3
oHo)a!*&+8a-(o8%Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3

End "u.
/uano muevas columnas . 2ilas com!le"as* "en en cuen"a las mismas
consieraciones vis"as en los em<s e3em!los* e las cuales las !rinci!ales son 7ue los a"os se
mueven el origen al es"ino sin !regun"ar* es ecir* no 0a. ninguna con2irmaci5n e
sobreescri"ura en caso e 7ue el es"ino no es"e vaco* !or lo 7ue "u "ienes 7ue im!lemen"ar es"a
valiaci5n . "ener cuiao e no salirse e los limi"es e la 0o3a e calculo+
=..2 Insertando ran*os
>n la in"er2az el usuario* cuano inser"amos un rango* recoraras 7ue /alc* nos
mues"ra un cuaro e ialogo !regun"<nonos como es!lazar las em<s celas* es"a misma
consieraci5n 0a. 7ue "ener cuano lo 0acemos !or c5igo* veamos como=
co3a+inser"/ells( /elas As /ellAangeAress* Moo As /ell:nser"Moe)
"u. #ns%'&a'Rangos123
@+( oHo)a!*&+8a !s >.)%*&
@+( o"%l !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,#ns%'&a(os un 'ango d% *%ldas +gual a la s%l%**+Kn a*&ual
#$$ G+@ Mani!ulano rangos
,? (o8%(os las *%ldas ha*+a a.a)o
oHo)a!*&+8a-+ns%'&$%lls2o"%l-g%&Rang%!dd'%ss236 *o(-sun-s&a'-sh%%&-$%ll#ns%'&Mod%-@>U<3
End "u.
>l rango a inser"ar no "iene !or 7ue ser a !ar"ir e la selecci5n ac"ual* !uees crear
una es"ruc"ura /ellAangeAress vaca el "amaKo 7ue 7uieras como en el siguien"e e3em!lo=
"u. #ns%'&a'Rangos223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23

,$'%a(os una %s&'u*&u'a 8a*Ga d% d+'%**+Kn d% un 'ango
oRango A $'%a&%Cno"&'u*&2 "*o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss" 3
,Es&a.l%*%(os los 8alo'%s d%l 'ango6 &'%s f+las 7o' &'%s *olu(nas
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss23-"h%%&
-"&a'&$olu(n A 1
-"&a'&Ro^ A 1
-End$olu(n A 3
-EndRo^ A 3
End U+&h
,#ns%'&a(os ? d%s7la:a(os ha*+a la d%'%*ha
oHo)a!*&+8a-+ns%'&$%lls2oRango6 *o(-sun-s&a'-sh%%&-$%ll#ns%'&Mod%-R#DHH3
End "u.
>s mu. im!or"an"e 7ue es"ablezcas la !ro!iea S0ee" (0o3a) e es"a es"ruc"ura* si
no lo 0aces* el valor !ree"erminao es $* con lo 7ue el rango inser"ao Lsiem!reM lo 0ar< en la
!rimer 0o3a el ocumen"o+ >n es"e seguno e3em!lo 0emos es!lazao las celas a la erec0a*
las em<s o!ciones e es"e m4"oo son inser"ar 2ilas com!le"as o columnas com!le"as* en la
siguien"e "abla resumimos los cua"ro valores !osibles !ara es"e m4"oo=
Constante 0alor
com+sun+s"ar+s0ee"+/ell:nser"Moe+(ONN 1
com+sun+s"ar+s0ee"+/ell:nser"Moe+A:&cT #
com+sun+s"ar+s0ee"+/ell:nser"Moe+AONS @
com+sun+s"ar+s0ee"+/ell:nser"Moe+/O)UMNS F
Puees usar inis"in"amen"e la cons"an"e o el valor e es"a como en el siguien"e
e3em!lo one inser"amos 2ilas com!le"as=
"u. #ns%'&a'Rangos323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A $'%a&%Cno"&'u*&2 "*o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss" 3
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss23-"h%%&
-"&a'&$olu(n A 1
-"&a'&Ro^ A 1
-End$olu(n A 3
-EndRo^ A 3
A!renieno OOo Basic #$1
End U+&h
,#ns%'&a(os f+las *o(7l%&as
oHo)a!*&+8a-+ns%'&$%lls2 oRango6 3 3
End "u.
/uano 7uieras inser"ar 2ilas o columnas com!le"as* !uees usar los m4"oos vis"os
0as"a a0ora o* !uees usar los m4"oos es!ec2icos el con3un"o e 2ilas . columnas como en el
siguien"e e3em!lo one inser"amos # columnas a !ar"ir e la columna >=
"u. #ns%'&a'Rangos423
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,#ns%'&a(os 2 *olu(nas a 7a'&+' d% la *olu(na E
oHo)a!*&+8a-g%&$olu(ns23-+ns%'&B?#nd%x2 46 2 3
End "u.
No"a 7ue a0ora usamos el m4"oo inser"B.:ne;* 7ue es es!eci2ico el con3un"o e
columnas* !or ello !rimero llamaos a ge"/olumns()* el !rimer argumen"o e es"e m4"oo es el
nice e la columna one comenzara la inserci5n . el seguno es el n?mero e columnas 7ue
eseamos inser"ar+ >l m4"oo !ara inser"ar 2ilas es e;ac"amen"e igual* e;ce!"o !or 7ue lo
llamamos ese el con3un"o e 2ilas (ge"Ao8s) como en=
"u. #ns%'&a'Rangos523
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,#ns%'&a(os 5 f+las a 7a'&+' d% la f+la 3
oHo)a!*&+8a-g%&Ro^s23-+ns%'&B?#nd%x2 26 5 3
End "u.
Para "erminar es"e "ema* recuera 7ue no !uees es!lazar celas 2uera el rango
e la 0o3a e calculo* !or lo 7ue "ienes 7ue evaluar 7ue "engas su2icien"e es!acio !ara la
inserci5n* e lo con"rario* "e ar< un error en "iem!o e e3ecuci5n+
=.. Eliminando ran*os
>liminar rangos* es la o!eraci5n inversa a inser"arlos* en es"e caso* "enemos 7ue
eciir 7ue 0acer con las celas a.acen"es al rango* es ecir* como se es!lazar<n* en nues"ro
!rimer e3em!lo* movemos las celas 0acia arriba=
#$# G+@ Mani!ulano rangos
co3a+removeAange( /elas As /ellAangeAress* Moo As /ell(ele"eMoe)
"u. Bo''a'Rangos123
@+( oHo)a!*&+8a !s >.)%*&
@+( o"%l !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,Bo''a(os la s%l%**+Kn a*&ual ? (o8%(os las *%ldas ha*+a a''+.a
oHo)a!*&+8a-'%(o8%Rang%2 o"%l-g%&Rang%!dd'%ss236 *o(-sun-s&a'-sh%%&-$%ll@%l%&%Mod%-C0 3
End "u.
/uano se 0ace cual7uier o!eraci5n e borrao o eliminaci5n* es una buena
!rac"ica e !rogramaci5n 7ue con2irmes es"a acci5n con el usuario* sobre "oo* con a7uellas
acciones 7ue no es !osible es0acer* es casi una regla 7ue lo 0agas+ >n el siguien"e e3em!lo*
es!lazamos 0acia la iz7uiera* es!u4s e con2irmar la eliminaci5n=
"u. Bo''a'Rangos223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( +R%s !s #n&%g%'
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A $'%a&%Cno"&'u*&2 "*o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss" 3
,Es&a.l%*%(os %l 'ango E84J21
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E84J21" 3
,$onf+'(a(os la %l+(+na*+on
+R%s A MsgBox2 "Es&as s%gu'o d% .o''a' %l 'ango"6 4 B 326 "Bo''a' 'ango" 3

,"olo .o''a(os s+ %l usua'+o '%s7ond+o "#
#f +R%s A 6 Hh%n
,Bo''a(os %l 'ango ? (o8%(os las *%ldas ha*+a la +:Fu+%'da
oHo)a!*&+8a-'%(o8%Rang%2 oRango-g%&Rang%!dd'%ss6 *o(-sun-s&a'-sh%%&-$%ll@%l%&%Mod%-5EJH 3
End #f

End "u.
>n la siguien"e "abla !uees ver las !osibiliaes e es"e m4"oo* as como sus
valores 7ue !uees usar en vez e ellas+
A!renieno OOo Basic #$@
Constante 0alor
com+sun+s"ar+s0ee"+/ell(ele"eMoe+UP 1
com+sun+s"ar+s0ee"+/ell(ele"eMoe+)>'T #
com+sun+s"ar+s0ee"+/ell(ele"eMoe+AONS @
com+sun+s"ar+s0ee"+/ell(ele"eMoe+/O)UMNS F
Poemos borrar columnas com!le"as* en el siguien"e e3em!lo usamos el valor e la
cons"an"e en vez e es"a* .a no !eimos con2irmaci5n* !ero "e recomieno siem!re 0acerla+
"u. Bo''a'Rangos323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( +R%s !s #n&%g%'
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A $'%a&%Cno"&'u*&2 "*o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss" 3
,Es&a.l%*%(os %l 'ango B24@2
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B24@2" 3
,Bo''a(os las *olu(nas *o(7l%&as
oHo)a!*&+8a-'%(o8%Rang%2 oRango-g%&Rang%!dd'%ss6 4 3

End "u.
Al igual 7ue con la inserci5n* !ara la eliminaci5n e 2ilas . columnas com!le"as* se
cuen"a con m4"oos al"erna"ivos accesibles ese el con3un"o e 2ilas (ge"Ao8s) . columnas
(ge"/olumns)* veamos como=
"u. Bo''a'Rangos423
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,Bo''a(os 3 f+las a 7a'&+' d% la f+la 10
oHo)a!*&+8a-g%&Ro^s23-'%(o8%B?#nd%x2 96 3 3

,Bo''a(os 2 *olu(nas a 7a'&+' d% la !
oHo)a!*&+8a-g%&$olu(ns23-'%(o8%B?#nd%x2 06 2 3

End "u.
No se "e olvie siem!re con2irmar las eliminaciones+
=..) Copiando ran*os
/o!iar rangos es mu. similar a moverlos* se usan los mismos argumen"os* un rango
origen . una cela es"ino* claro* cambia el m4"oo usao* al igual 7ue cuano movemos* el
es"ino ser< reem!lazao con el origen sin ning?n "i!o e con2irmaci5n* !ero como .a sabes
im!lemen"arla* no "ienes !roblemas con ello* IveraJ
co3a+co!.Aange( (es"ino As /ellAress* Origen As /ellAangeAress)
#$F G+@ Mani!ulano rangos
"u. $o7+a'Rangos123
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,Rango a *o7+a'
o>'+g%n A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14B3" 3
,$%lda d%s&+no
o@%s&+no A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@10" 3
,$o7+a(os %l 'ango
oHo)a!*&+8a-*o7?Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
End "u.
A i2erencia e cuano movemos* el origen !ermanece "al cual . a7u si* si el rango
con"iene 2ormulas* las re2erencias rela"ivas se a3us"ar<n au"om<"icamen"e a la nueva !osici5n*
aem<s e 7ue el rango origen !ermanece con la re2erencia original=
"u. $o7+a'Rangos223
@+( oHo)a!*&+8a !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
o>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
o@%s&+no A oHo)a!*&+8a-g%&$%llB?0os+&+on2 o>'+g%n-g%&Rang%!dd'%ss23-End$olu(n B 16
o>'+g%n-g%&Rang%!dd'%ss23-EndRo^ B 1 3
oHo)a!*&+8a-*o7?Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3

Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o>'+g%n 3

End "u.
Para co!iar en una 0o3a i2eren"e* solo "ienes 7ue es"ablecer el es"ino
correc"amen"e en ic0a 0o3a* el siguien"e e3em!lo* co!iamos el rango B#=(5 e la ul"ima 0o3a el
ocumen"o a la cela A1 e la !rimera=
"u. $o7+a'Rangos323
@+( oHo)a>'+g%n !s >.)%*&
@+( oHo)a@%s&+no !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
oHo)a>'+g%n A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x2 Hh+s$o(7on%n&-g%&"h%%&s23-g%&$oun&23 T 1
3
oHo)a@%s&+no A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x2 0 3
,Rango a *o7+a'
o>'+g%n A oHo)a>'+g%n-g%&$%llRang%B?<a(%2 "B24@5" 3
,$%lda d%s&+no
o@%s&+no A oHo)a@%s&+no-g%&$%llRang%B?<a(%2 "!1" 3
,$o7+a(os %l 'ango
oHo)a@%s&+no-*o7?Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o@%s&+no 3
End "u.
A!renieno OOo Basic #$5
Puees co!iar columnas o 2ilas com!le"as=
"u. $o7+a'Rangos423
@+( oHo)a>'+g%n !s >.)%*&
@+( oHo)a@%s&+no !s >.)%*&
@+( o>'+g%n !s >.)%*&
@+( o@%s&+no !s >.)%*&
,0'+(%' ho)a
oHo)a>'+g%n A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x2 0 3
,Rango a *o7+a' *olu(na B
o>'+g%n A oHo)a>'+g%n-g%&$olu(ns23-g%&B?#nd%x2 1 3
,"%gunda Ho)a
oHo)a@%s&+no A Hh+s$o(7on%n&-g%&"h%%&s23-g%&B?#nd%x2 1 3
o@%s&+no A oHo)a@%s&+no-g%&$%llRang%B?<a(%2 "E1" 3
oHo)a@%s&+no-*o7?Rang%2 o@%s&+no-g%&$%ll!dd'%ss236 o>'+g%n-g%&Rang%!dd'%ss23 3
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-s%l%*&2 o@%s&+no 3
End "u.
cagamos algo mu. in"eresan"e* como sabemos* cuano co!iamos un rango e
celas . es"e rango "iene 2ilas o columnas ocul"as manualmen"e o !or es"ar agru!aas* la co!ia
resul"an"e* con"enr< aun* las 2ilas . columnas ocul"as* con el m4"oo !ara seleccionar solo las
celas visibles (,uer)/isibleCells) a!renio en el ca!i"ulo an"erior . el m4"oo !ara co!iar
rangos* !oemos in"en"ar 0acer nues"ra versi5n e una 0erramien"a 7ue llamaremos L/o!iar solo
visiblesM* I"e !areceJ+ An"es e 7ue sigas le.eno* "e invi"o a 7ue in"en"es resolverlo !or "i mismo
!rimero* es!u4s c0eca mi versi5n . com!<ralas* claro* solo con 2ines i<c"icos !ues"o 7ue
es"amos a!renieno=
"u. $o7+a'"olo1+s+.l%s123
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( o1+s+.l%s !s >.)%*&
@+( oHo)a>'+g%n !s >.)%*&
@+( oHo)a@%s&+no !s >.)%*&
@+( oRango>'+g%n !s >.)%*&
@+( o$%lda@%s&+no !s <%^ *o(-sun-s&a'-&a.l%-$%ll!dd'%ss
@+( *o1 !s 5ong
@+( (@+'
oHo)a>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,R%f%'%n*+a a la s%l%**+Kn a*&ual
o"%l A Hh+s$o(7on%n&-g%&*u''%n&"%l%*&+on23
,"+ %s una sola *%lda '%g'%sa(os la '%g+Kn a*&ual
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
o$u'so' A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2 o"%l 3
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
,O las *%ldas 8+s+.l%s
o1+s+.l%s A o$u'so'-Fu%'?1+s+.l%$%lls23
Els%#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%s>.)" Hh%n
o1+s+.l%s A o"%l
End #f
,s+ no ha? *%ldas 8+s+.l%s
#f #s<ull2 o1+s+.l%s 3 Hh%n
MsgBox "<o ha? *%ldas o*ul&as"
Els%
,!g'%ga(os una nu%8a ho)a
oHo)a@%s&+no A g%&<u%8aHo)a2 Hh+s$o(7on%n&6 oHo)a>'+g%n 3
,>.&%n%(os una (a&'+: *on las d+'%**+on%s d% &odos los 'angos
(@+' A o1+s+.l%s-g%&Rang%!dd'%ss%s23
#$G G+@ Mani!ulano rangos
,#&%'a(os %n *ada d+'%**+Kn
Jo' *o1 A 5Bound2(@+'3 Ho CBound2(@+'3
oRango>'+g%n A (@+'2 *o1 3
,5a *%lda d%s&+no &%nd'a la (+s(a d+'%**+Kn d%l 'ango 7%'o %n la ho)a d%s&+no
o$%lda@%s&+no-"h%%& A oHo)a@%s&+no-g%&Rang%!dd'%ss-"h%%&
o$%lda@%s&+no-$olu(n A oRango>'+g%n-"&a'&$olu(n
o$%lda@%s&+no-Ro^ A oRango>'+g%n-"&a'&Ro^
,$o7+a(os %l 'ango
oHo)a@%s&+no-*o7?Rang%2 o$%lda@%s&+no6 oRango>'+g%n 3
<%x& *o1
,"%l%**+ona(os la nu%8a ho)a *on los da&os *o7+ados
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2 oHo)a@%s&+no 3
MsgBox "Rangos *o7+ados"
End #f
End "u.
,@%8u%l8% una nu%8a ho)a %n @o*u(%n&o6 a la d%'%*ha d%l a'gu(%n&o Ho)a
Jun*&+on g%&<u%8aHo)a2 @o*u(%n&o !s >.)%*&6 Ho)a !s >.)%*& 3 !s >.)%*&
@+( oHo)as !s >.)%*&
@+( *o1 !s #n&%g%'
@+( s<o(.'% !s "&'+ng
oHo)as A @o*u(%n&o-g%&"h%%&s23
s<o(.'% A "Rangos $o7+ados"
@o Uh+l% oHo)as-hasB?<a(%2 s<o(.'% 3
*o1 A *o1 B 1
s<o(.'% A s<o(.'% 9 " " 9 Jo'(a&2*o13
5oo7
oHo)as-+ns%'&<%^B?<a(%2 s<o(.'%6 Ho)a-g%&Rang%!dd'%ss-"h%%&B1 3
g%&<u%8aHo)a A @o*u(%n&o-g%&"h%%&s-g%&B?<a(%2 s<o(.'% 3
End Jun*&+on
Seguro 7ue .a vis"e 7ue no "raba3a mu. bien 7ue igamos* claro* no es naa !rac"ico
7ue use la misma irecci5n el origen en el es"ino !ues los a"os 7uean "oos is!ersos+
6amos a me3orarla* e nuevo* in"en"a corregirla "u . es!u4s con"inuas=
"u. $o7+a'"olo1+s+.l%s223
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( o1+s+.l%s !s >.)%*&
@+( oHo)a>'+g%n !s >.)%*&
@+( oHo)a@%s&+no !s >.)%*&
@+( oRango>'+g%n !s >.)%*&
@+( oRango!n&%'+o' !s >.)%*&
@+( o$%lda@%s&+no !s <%^ *o(-sun-s&a'-&a.l%-$%ll!dd'%ss
@+( *o1 !s 5ong6 J+l !s 5ong6 $ol !s 5ong
@+( (@+'
oHo)a>'+g%n A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o"%l A Hh+s$o(7on%n&-g%&*u''%n&"%l%*&+on23
"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%
$as% ""*$%ll>.)"
o$u'so' A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2 o"%l 3
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
o1+s+.l%s A o$u'so'-Fu%'?1+s+.l%$%lls23
$as% ""*$%llRang%>.)"6 ""*$%llRang%s>.)"
o1+s+.l%s A o"%l-Fu%'?1+s+.l%$%lls23
End "%l%*&
#f #s<ull2 o1+s+.l%s 3 Hh%n
MsgBox "<o ha? *%ldas o*ul&as o no %s un 'ango d% *%ldas"
Els%
J+l A 0
$ol A 0
oHo)a@%s&+no A g%&<u%8aHo)a2 Hh+s$o(7on%n&6 oHo)a>'+g%n 3
A!renieno OOo Basic #$%
(@+' A o1+s+.l%s-g%&Rang%!dd'%ss%s23
,$o7+a(os %l 7'+(%' 'ango
oRango>'+g%n A (@+'2 0 3
o$%lda@%s&+no-"h%%& A oHo)a@%s&+no-g%&Rang%!dd'%ss-"h%%&
,En la *%lda !1
o$%lda@%s&+no-$olu(n A 0
o$%lda@%s&+no-Ro^ A 0
oHo)a@%s&+no-*o7?Rang%2 o$%lda@%s&+no6 oRango>'+g%n 3
,"+ &%n%(os (=s 'angos
#f o1+s+.l%s-g%&$oun&23 Y 1 &h%n
Jo' *o1 A 1 Ho CBound2(@+'3
oRango>'+g%n A (@+'2 *o1 3
oRango!n&%'+o' A (@+'2 *o1T1 3
,1a(os su(ando *ada an*ho ? al&o d% *ada 'ango6 solo *uando *a(.+%n
#f oRango!n&%'+o'-"&a'&$olu(n A oRango>'+g%n-"&a'&$olu(n Hh%n
o$%lda@%s&+no-Ro^ A o$%lda@%s&+no-Ro^ B oRango!n&%'+o'-EndRo^ T
oRango!n&%'+o'-"&a'&Ro^ B 1
Els%
o$%lda@%s&+no-$olu(n A $ol B oRango!n&%'+o'-End$olu(n T
oRango!n&%'+o'-"&a'&$olu(n B 1
o$%lda@%s&+no-Ro^ A J+l
$ol A o$%lda@%s&+no-$olu(n
End #f
oHo)a@%s&+no-*o7?Rang%2 o$%lda@%s&+no6 oRango>'+g%n 3
<%x& *o1
End #f
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%&!*&+8%"h%%&2 oHo)a@%s&+no 3
End #f
End "u.
A0ora si* "raba3a muc0o me3or* !ero* "oava "iene un L!e7ueKoM e"alle* 0a. un caso
!ar"icular one el rango no con"enga celas ocul"as . nues"ra macro no lo in2orme* . igo 7ue es
un e"alle !or 7ue no "e ar< ning?n error . seguir< 2uncionano* !uees consierar evaluarlo o
e3arla as* !ero eso si* "u "area es encon"rar es"e caso !ar"icular+ Tambi4n* !oras me3orar es"a
macro !ara 7ue co!ie solo a"os o resul"aos e 2ormulas* es"o lo !or<s 0acer cuano a7uieras
los conocimien"os el !r5;imo ca!i"ulo+
=.) Manipulando datos
Oa vamos llegano a "emas m<s in"eresan"es . iver"ios* one veremos con
em!ezar a in"erac"uar con las celas e nues"ra 0o3a e calculo+ Para el me3or a!rovec0amien"o
e es"e ca!i"ulo* "ienes 7ue "ener !resen"e los i2eren"es "i!os e a"os 7ue so!or"a /alc+
=.).1 %bteniendo datos
)a 2orma m<s sim!le . irec"a e ob"ener el con"enio e una cela* es usano el
m4"oo ge"S"ring* 7ue "e evuelve el con"enio e la cela* "al . como se ve en la in"er2az el
usuario* es ecir* si el con"enio e la cela es "e;"o* "e lo mues"ra "al cual* si con"iene una
#$, G+F Mani!ulano a"os
2ormula* "e mos"rara el resul"ao e ic0a 2ormula . si es 2ec0a . "iene 2orma"o* "e la evolver<
como se ve en !an"alla=
"u. @a&os123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os %l *on&%n+do d% la *%lda
MsgBox o"%l-g%&"&'+ng23
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Si lo 7ue eseas es evolver el valor e la cela* se usa el m4"oo ge"6alue* si la
cela con"iene "e;"o* es"e m4"oo "e evolver< $* si "iene un valor* ic0o valor* si la cela con"iene
una 2ormula* e!ener< el "i!o e resul"ao e es"a 2ormula* si es "e;"o e nuevo "e evolver< $*
si es un valor* es"e valor* si "iene un error e nuevo ser< $* si la cela con"iene una 2ec0a* "e
evolver< el n?mero e serie e es"a 2ec0a=
"u. @a&os223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os %l 8alo' d% la *%lda
MsgBox o"%l-g%&1alu%23
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Tambi4n !uees ob"ener la 2ormula 7ue "enga la cela con el m4"oo ge"'ormula* si
la cela con"iene "e;"o* "e evolver< es"e "e;"o* si es un valor* ese valor* e una 2ec0a "e evuelve
el n?mero e serie . si es 2ormula* "e evuelve ic0a 2ormula* inclu.eno el signo e igual (l) con
7ue em!ieza "oa 2ormula aun . cuano la 2ormula "enga como resul"ao un erro* "ambi4n* "oma
en cuen"a 7ue si la 2ormula evuel"a con"iene alguna 2unci5n incor!oraa e /alc* como SUMA*
BUS/AA6* e"c* es"e m4"oo "e evolver< el nombre e es"a 2unci5n en ingles* SUM* 6)OOtUP*
e"c+
"u. @a&os323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os la fo'(ula d% la *%lda
MsgBox o"%l-g%&Jo'(ula23
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
A!renieno OOo Basic #$-
Si eseas ob"ener la 2ormula "al . como se ve en la barra e 2ormulas* en"onces usa
la !ro!iea 'ormula)ocal* 7ue se com!or"a e 2orma mu. similar a ge"S"ring* e;ce!"o en las
2ormulas* one "e las evuelve como a!arecen en la barra e 2ormulas* como en=
"u. @a&os423
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os la fo'(ula lo*al d% la *%lda
MsgBox o"%l-Jo'(ula5o*al
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Si 7uieres ver las i2erencias* ca!"ura valores en varias celas* "e;"o* n?meros*
2ec0as . 2ormulas* . !rueba la siguien"e macro* "oma en cuen"a 7ue es"os m4"oos solo los
!uees usar en celas iniviuales* !or ello 0acemos la valiaci5n* en una e las 2ormulas usa la
2unci5n lA)>ATOA:O()* veras claramen"e las i2erencias en"res es"os m4"oos+
"u. @a&os5()
@+( o"%l !s >.)%*&
@+( sH(7 !s "&'+ng
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,Mos&'a(os las d+f%'%n*+as %n&'% los (%&odos
sH(7 A "g%&"&'+ng 4 " 9 o"%l-g%&"&'+ng 9 $h'2133
sH(7 A sH(7 9 "g%&1alu% 4 " 9 o"%l-g%&1alu% 9 $h'2133
sH(7 A sH(7 9 "g%&Jo'(ula 4 " 9 o"%l-g%&Jo'(ula 9 $h'2133
sH(7 A sH(7 9 "Jo'(ula5o*al 4 " 9 o"%l-Jo'(ula5o*al
,Mos&'a(os %l '%sul&ado
MsgBox sH(7
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Tambi4n !uees ob"ener el "i!o e con"enio e la cela con ge"T.!e* 7ue "e
evolver< un en"ero e!enieno el con"enio e la cela* vaca ($)* valor (1)* "e;"o (#) o 2ormula
(@)* e nuevo* es"e m4"oo solo es"a is!onible es una sola cela=
"u. @a&os6()
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
MsgBox o"%l-g%&H?7%23
End "u.
Si la cela con"iene una 2ormula . es"a evuelve un error* !uees saber 7ue error es
con el m4"oo ge">rror* si la cela no con"iene una 2ormula* es"e m4"oo siem!re "e evolver< $+
"u. @a&os723
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
MsgBox o"%l-g%&E''o'23
#1$ G+F Mani!ulano a"os
End "u.
>l error ivisi5n en"re cero* evuelve el error 5@#* es"ablece es"e error en una
2ormula cual7uiera !ara 7ue lo com!ruebes* "ambi4n !uees !robar con el error e cuano a una
2ormula le 2al"an argumen"os* normalmen"e a el error 511+
Poramos aven"urar una !rimera 2orma e usar el m4"oo correc"o* e acuero al
con"enio e la cela=
"u. @a&os823
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
"%l%*& $as% o"%l-g%&H?7%23
$as% 0
MsgBox "5a *%lda %s&a 8a*+a"
$as% 1
MsgBox o"%l-g%&1alu%23
$as% 2
MsgBox o"%l-g%&"&'+ng23
$as% 3
#f o"%l-g%&E''o'23 A 0 Hh%n
MsgBox o"%l-Jo'(ula5o*al
Els%
MsgBox o"%l-g%&E''o'23
End #f
End "%l%*&
End "u.
O si se convier"e en 2unci5n=
Jun*&+on $on&%n+do$%lda2$%lda !s >.)%*&3
@+( &(7
"%l%*& $as% $%lda-g%&H?7%23
$as% 0 4 &(7 A "5a *%lda %s&a 8a*+a"
$as% 1 4 &(7 A $%lda-g%&1alu%23
$as% 2 4 &(7 A $%lda-g%&"&'+ng23
$as% 3
#f $%lda-g%&E''o'23 A 0 Hh%n
&(7 A $%lda-Jo'(ula5o*al
Els%
&(7 A $%lda-g%&E''o'23
End #f
End "%l%*&

$on&%n+do$%lda A &(7

End Jun*&+on
Toma en cuen"a 7ue una cela "e !uee evolver 5@# . es"ar correc"o* es ecir 7ue
sea !or e3em!lo el n?mero e alguna calle o ser el valor e alguna acci5n . seguir sieno correc"o
o ser el error 5@# . como in2ormaci5n* seguir sieno correc"o* as 7ue no "omes la 2unci5n an"erior
como e2ini"iva* sino "an solo como una gua !ara lo 7ue realmen"e necesi"es+
A0ora solo nos res"a !oer llamarla ese la cela=
"u. @a&os923
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
MsgBox $on&%n+do$%lda 2 o"%l 3
A!renieno OOo Basic #11
End "u.
O con un !oco e ingenio ese cual7uier rango e celas=
"u. @a&os1023
@+( o"%l !s >.)%*&
@+( f+l !s 5ong6 *ol !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
"%l%*& $as% o"%l-g%&#(7l%(%n&a&+on<a(%23
$as% ""*$%ll>.)"
MsgBox $on&%n+do$%lda 2 o"%l 3
$as% ""*$%llRang%>.)"
Jo' f+l A 0 Ho o"%l-g%&Ro^s23-g%&$oun&23 T 1
Jo' *ol A 0 Ho o"%l-g%&$olu(ns23-g%&$oun&23 T 1
MsgBox $on&%n+do$%lda 2 o"%l-g%&$%llB?0os+&+on2*ol6f+l3 3
<%x& *ol
<%x& f+l
End "%l%*&

End "u.
Toma en cuen"a 7ue ge"/ellB.Posi"ion* ob"iene una re2erencia a una sola cela* .
es"a* es en 4re2erencia1 a la selecci5n original* "e 7uea e "area* ob"ener lo mismo !ero con
relaci5n a la 0o3a com!le"a* "e o. os !is"as* usa el mismo m4"oo (ge"/ellB.Posi"ion)* !ero
"oma como base e in2ormaci5n !ara los ciclos* la 7ue "e evuelve el m4"oo ge"AangeAress+
>n "oos lo casos an"eriores* los m4"oos usaos solo 2uncionan cuano 0acemos
re2erencia a una sola cela* si 7uieres ob"ener el con"enio e un rango e celas* usaremos el
m4"oo ge"(a"a* 7ue "e evuelve una ma"riz e ma"rices con el con"enio e las celas* !ero
cuiao* ge"(a"a solo "e evuelve las celas con valores* aem<s* en las celas vacas evuelve
un valor un "an"o Le;"raKoM* !uees veri2icarlo con el siguien"e e3em!lo* !rocura seleccionar un
rango !e7ueKo !or 7ue "e mos"rar< el valor e caa cela=
"u. @a&os1123
@+( o"%l !s >.)%*&
@+( (@a&os
@+( (H(7
@+( *o1 !s 5ong6 *o2 !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
,>.&%n%(os ">5> 1!5>RE"
(@a&os A o"%l-g%&@a&a23
Jo' *o1 A 5Bound2(@a&os3 &o CBound2(@a&os3
,!s+gna(os la (a&'+: +n&%'na a una &%(7o'al
(H(7 A (@a&os2*o13
Jo' *o2 A 5Bound2(H(73 &o CBound2(H(73
MsgBox (H(72*o23
<%x&
<%x&
End #f

End "u.
Si 7uieres ob"ener el con"enio sea cual sea* usa la misma es"ruc"ura* !ero en vez
e usar ge"(a"a* usa ge"(a"aArra. como en=
#1# G+F Mani!ulano a"os
"u. @a&os1223
@+( o"%l !s >.)%*&
@+( (@a&os
@+( (H(7
@+( *o1 !s 5ong6 *o2 !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
,>.&%n%(os &odo los da&os
(@a&os A o"%l-g%&@a&a!''a?23
Jo' *o1 A 5Bound2(@a&os3 &o CBound2(@a&os3
(H(7 A (@a&os2*o13
Jo' *o2 A 5Bound2(H(73 &o CBound2(H(73
MsgBox (H(72*o23
<%x&
<%x&
End #f

End "u.
O si lo 7ue 7uieres es el con"enio e las celas* como si 0ubieses usao en caa
una el m4"oo ge"'ormula* usas ge"'ormulaArra.=
"u. @a&os1323
@+( o"%l !s >.)%*&
@+( (@a&os
@+( (H(7
@+( *o1 !s 5ong6 *o2 !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%llRang%>.)" Hh%n
,>.&%n%(os &odo los da&os *o(o s+ s% usa'a g%&Jo'(ula 7%'o %n &odo %l 'ango
(@a&os A o"%l-g%&Jo'(ula!''a?23
Jo' *o1 A 5Bound2(@a&os3 &o CBound2(@a&os3
(H(7 A (@a&os2*o13
Jo' *o2 A 5Bound2(H(73 &o CBound2(H(73
MsgBox (H(72*o23
<%x&
<%x&
End #f

End "u.
(e la combinaci5n e los m4"oos vis"os en es"e "ema* !uees acceer a cual7uier
in2ormaci5n e una cela o un rango e celas* veamos a0ora como in"roucir in2ormaci5n+
=.).2 Introduciendo datos
)os m4"oos !ara in"roucir a"os en celas* son m<s o menos los mismos 7ue !ara
ob"enerlos* !ero en vez e ob"enerlos (ge") los es"ablecemos (se")+
Para el caso e caenas e "e;"o* usamos se"S"ring* "oma en cuen"a 7ue es"e
m4"oo reem!lazar< el con"enio e la cela sin !regun"ar"e naa+
"u. #n&'odu*+'123
@+( o"%l !s >.)%*&
A!renieno OOo Basic #1@
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os una *ad%na %n la *%lda
o"%l-s%&"&'+ng2 "<ad+% %s&a (=s 7%'d+do Fu% Fu+%n no sa.% a dond% 8a" 3
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Para valores usamos se"6alue* el mismo moo 7ue se"S"ring* sim!lemen"e
reem!lazar< el con"enio e la cela sin consul"ar"e+
"u. #n&'odu*+'223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os un 8alo' %n la *%lda
o"%l-s%&1alu%2 34 3
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Oa lo 0abr<s in"uio* !ara las 2ormulas !oemos usar se"'ormula* la 2ormula ebe
es"ar como una caena e "e;"o . ebe ser una 2ormula v<lia+
"u. #n&'odu*+'323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os una fo'(ula
o"%l-s%&Jo'(ula2 "A!1B!5" 3
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
Si in"rouces una 2ormula no v<lia* es"e m4"oo no "e ar< ning?n error* !ero si lo
ob"enr<s en la in"er2az el usuario* como en el siguien"e e3em!lo=
"u. #n&'odu*+'423
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os una fo'(ula no 8al+da
o"%l-s%&Jo'(ula2 "A$2T$3B" 3
End #f
End "u.
#1F G+F Mani!ulano a"os
Si 0ace uso e 2unciones incor!oraas e O!enO22ice+org* "ienes 7ue usar el nombre
en ingles e la 2unci5n a usar* "ambi4n* los argumen"os eben es"ar correc"amen"e es"ablecios*
as como los "i!os e es"os !ara 7ue no "e evuelva ning?n error+
"u. #n&'odu*+'523
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os una fo'(ula *on fun*+on
o"%l-s%&Jo'(ula2 "A"CM2!14!103" 3
End #f
End "u.
Si !re2ieres usar los nombres e las 2unciones en es!aKol* en vez e es"e m4"oo*
usa la !ro!iea 'ormula)ocal* el siguien"e e3em!lo 0ace lo mismo 7ue el an"erior=
"u. #n&'odu*+'623
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(%23 A ""*$%ll>.)" Hh%n
,#ns%'&a(os una fo'(ula *on fun*+Kn
o"%l-Jo'(ula5o*al A "A"CM!2!14!103"
End #f
End "u.
>n el A!enice /* "e mues"ro una lis"a e e7uivalencias e las @%5 2ormulas 7ue
incor!ora /alc* en"re es!aKol e ingles* as* !uees usar el m4"oo 7ue 7uieras+
/uano 7ueramos in"roucir valores en rangos e celas* 0a. 7ue "ener la
!recauci5n e es"ablecer el rango es"ino* Le;ac"amen"eM el mismo anc0o . al"o e la ma"riz
origen* e lo con"rario "e ar< un error en "iem!o e e3ecuci5n+
"u. #n&'odu*+'723
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( (@a&os243
(@a&os203 A !''a?2162633
(@a&os213 A !''a?2465663
(@a&os223 A !''a?2768693
(@a&os233 A !''a?2106116123
(@a&os243 A !''a?2136146153

oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,El 'ango dond% s% +ns%'&a'an los 8alo'%s6 "d%.%"
,s%' d%l (+s(o &a(a\o %n an*ho ? al&o d% la (a&'+:
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14$5"3
,#ns%'&a(os la (a&'+: *o(7l%&a
oRango-s%&@a&a2 (@a&os 3
End "u.
Tambi4n* "oma no"a e 7ue con el m4"oo se"(a"a* solo !uees in"roucir valores* si
la ma"riz lleva alguna caena e "e;"o* es"e m4"oo la reem!lazara !or $* !ara valores . caenas*
ebes usar se"(a"aArra.=
A!renieno OOo Basic #15
"u. #n&'odu*+'823
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( (@a&os243
(@a&os203 A !''a?2"<o"6"<o(.'%"6"H%l"3
(@a&os213 A !''a?216"Dlo'+a"6123456783
(@a&os223 A !''a?216"0aola"6234567893
(@a&os233 A !''a?236"5+d+a"6345678913
(@a&os243 A !''a?246"5+:%&&%"6876543213

oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,El 'ango dond% s% +ns%'&a'an los 8alo'%s6 "d%.%"
,s%' d%l (+s(o &a(a\o %n an*ho ? al&o d% la (a&'+:
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14$5"3
,#ns%'&a(os la (a&'+: *o(7l%&a
oRango-s%&@a&a!''a?2 (@a&os 3
End "u.
Si "us a"os a in"roucir inclu.en 2ormulas* es me3or 7ue uses se"'ormulaArra.=
"u. #n&'odu*+'923
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( (@a&os243
(@a&os203 A !''a?2"<o"6"<o(.'%"6"H%l"3
(@a&os213 A !''a?216"Dlo'+a"6"AR!<@23"3
(@a&os223 A !''a?216"0aola"6"A!3"3
(@a&os233 A !''a?236"5+d+a"6"A"CM2!24!43"3
(@a&os243 A !''a?246"5+:%&&%"6"AR!<@23"3

oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14$5"3
,#ns%'&a(os la (a&'+: *o(7l%&a
oRango-s%&Jo'(ula!''a?2 (@a&os 3
End "u.
=.). &orrando datos
Para borrar a"os e celas usamos el m4"oo clear/on"en"s* es"e m4"oo re7uiere
un en"ero inic<nole el "i!o e con"enio 7ue eseamos borrar* !or e3em!lo valores (1)* "e;"os (F)
o 2ormulas (1G)* es"e m4"oo es"a !resen"e en los "res "i!os e rangos vis"os* !or lo 7ue solo
"ienes 7ue asegurar"e 7ue e2ec"ivamen"e sea un rango e celas+
>n el siguien"e e3em!lo* se borran solo las celas con valores* "e;"os . 2ormulas* e
"res rangos i2eren"es+
"u. Bo''ando123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14$5"3
,Bo''a(os solo los 8alo'%s
oRango-*l%a'$on&%n&s2 1 3

#1G G+F Mani!ulano a"os
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"@24E10"3
,Bo''a(os solo los &%x&o
oRango-*l%a'$on&%n&s2 4 3
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"D14I100"3
,Bo''a(os solo las fo'(ulas
oRango-*l%a'$on&%n&s2 16 3
End "u.
Puees sumar los valores e los "i!os a borrar* en el siguien"e e3em!lo* se borra los
"e;"os . las 2ormulas el rango seleccionao=
"u. Bo''ando223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,Bo''a(os los &%x&os 243 B fo'(ulas 2163
o"%l-*l%a'$on&%n&s2 20 3
End "u.
)os valores !ermi"ios !ara es"e m4"oo* es"<n conicionaos !or las cons"an"es el
gru!o com+sun+s"ar+s0ee"+/ell'lags* cu.os valores se lis"an en la siguien"e "abla=
Constante 0alor
com+sun+s"ar+s0ee"+/ell'lags+6A)U> 1
com+sun+s"ar+s0ee"+/ell'lags+(AT>T:M> #
com+sun+s"ar+s0ee"+/ell'lags+STA:N& F
com+sun+s"ar+s0ee"+/ell'lags+ANNOTAT:ON ,
com+sun+s"ar+s0ee"+/ell'lags+'OAMU)A 1G
com+sun+s"ar+s0ee"+/ell'lags+cAA(ATTA @#
com+sun+s"ar+s0ee"+/ell'lags+STO)>S GF
com+sun+s"ar+s0ee"+/ell'lags+OBi>/T 1#,
com+sun+s"ar+s0ee"+/ell'lags+>(:TATTA #5G
com+sun+s"ar+s0ee"+/ell'lags+'OAMATT>( 51#
Puees usar e 2orma inis"in"a las cons"an"es o los valores e es"as* as como
cual7uier combinaci5n e es"as+ >l siguien"e e3em!lo borra L"ooM* "e e3a la selecci5n como
nueva+
"u. Bo''ando323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,Bo''a(os &odo
o"%l-*l%a'$on&%n&s2 1023 3
End "u.
A!renieno OOo Basic #1%
=.).) 3lenando series de datos
)lenar series es un m4"oo mu. iver"io e in"roucir a"os en nues"ra 0o3a e
calculo* e;is"en os 2ormas e 0acerlo* en general la 2orma au"om<"ica 2uncionara* si se
es"ablecen correc"amen"e los valores iniciales* observa la siguien"e imagen* en la cela A1
"enemos solo un valor . en la columna / como 7ueremos 7ue 7uee nues"ra serie+
>l c5igo !ara lograr es"o es el siguien"e* observa 7ue sencillo=
"u. 5l%nando"%'+%s123
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14!15"3
,5l%na(os ha*+a a.a)o
oRango-f+ll!u&o2 06 1 3
End "u.
>l m4"oo 2illAu"o* solo re7uiere os argumen"os* el !rimero es !ara inicarle la
irecci5n el llenao en nues"ro e3em!lo* aba3o (TOQBOTTOM l $) . un en"ero 7ue le inica*
cuan"as celas el rango "omara como LguasM !ara e"erminar el algori"mo e llenao+ >n la
siguien"e "abla es"<n las cua"ro !osibiliaes el argumen"o Lirecci5nM e es"e m4"oo+
Constante 0alor
com+sun+s"ar+s0ee"+'ill(irec"ion+TOQBOTTOM $
com+sun+s"ar+s0ee"+'ill(irec"ion+TOQA:&cT 1
com+sun+s"ar+s0ee"+'ill(irec"ion+TOQTOP #
com+sun+s"ar+s0ee"+'ill(irec"ion+TOQ)>'T @
Si 7uisi4ramos llenar el rango con n?meros !ares* lo 0aramos as=
"u. 5l%nando"%'+%s223
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
#1, G+F Mani!ulano a"os
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!14!15"3
,Es&a.l%*%(os los 8alo'%s gu+as
oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3-s%&1alu%2 2 3
oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!2"3-s%&1alu%2 4 3
,5l%na(os ha*+a a.a)o6 no&a Fu% aho'a &o(a(os dos *%ldas *o(o gu+as
oRango-f+ll!u&o2 06 2 3

End "u.
Por su!ues"o no solo con n?meros es !osible* el siguien"e c5igo es"ablece el rango
A1=)1 con los meses el aKo+
"u. 5l%nando"%'+%s323
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1451"3
,Es&a.l%*%(os %l 8alo' gu+a
oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3-s%&"&'+ng2 "%n%'o" 3
,5l%na(os a la d%'%*ha
oRango-f+ll!u&o2 16 1 3

End "u.
>s"o es !osible !or 7ue es"a lis"a viene e 2orma !ree"erminaa en O!enO22ice+org*
es"a . o"ras lis"as* las !uees !ersonalizar en el men? Herramientas | Opciones* en"ro e la
rama O!enO22ice+org /alc* subrama Orenar lis"as+
(one m<s me gus"a el llenao e series* es en la 2orma "rans!aren"e e co!iar o
llenar un rango con una 2ormula eseaa* !or e3em!lo* observa la siguien"e imagen
>l 2in es es"ablecer la 2ormula !ara calcular la ea e caa !ersona* !ara 2ines
i<c"icos aremos !or buena la ea* solo res"ano el aKo ac"ual e la e nacimien"o* observa
7ue los a"os "erminan en la 2ila 1$$1 !ero eso no im!or"a* !ueen "erminar en la 1$$$ o la 7ue
sea !ues es"o lo e"erminaremos !or c5igo* e la siguien"e 2orma=
A!renieno OOo Basic #1-
"u. 5l%nando"%'+%s423
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( o$u'so' !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3
,Es&a.l%*%(os la 7'+(%' fo'(ula
oHo)a!*&+8a-g%&$%llRang%B?<a(%2"@2"3-s%&Jo'(ula2 "AOE!R2<>U233T$2" 3
,$'%a(os un *u'so' a 7a'&+' d% la 7'+(%' *%lda
o$u'so' A oHo)a!*&+8a-*'%a&%$u'so'B?Rang%2 oRango 3
,Ex7and+(os a la '%g+on a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23

,$ons&'u+(os %l 'ango a ll%na'
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@24@" 9 $"&'2o$u'so'-g%&Ro^s23-g%&$oun&233 3
,5l%na(os ha*+a a.a)o
oRango-f+ll!u&o2 06 1 3

End "u.
Para es"ablecer la 2ormula* como .a lo vimos* !uees usar "ambi4n la !ro!ieaes
'ormula)ocal* nues"ra 2ormula e e3em!lo 7ueara as=
oHo)a!*&+8a-g%&$%llRang%B?<a(%2"@2"3-Jo'(ula5o*al A "A!_>2!H>R!233T$2"
Observa como ob"enemos la ul"ima 2ila el rango usao con la a.ua el cursor . el
m4"oo o/ursor+ge"Ao8s()+ge"/oun"()* . con una sola lnea m<s* llenamos "oo el rango+
>n el A!enice /* "e mues"ro una lis"a e e7uivalencias e las @%5 2ormulas 7ue
incor!ora /alc* en"re es!aKol e ingles* as !uees usar el m4"oo 7ue 7uieras+
=.).! &uscar y reempla9ar
)a b?s7uea . reem!lazo en O!enO22ice+org es una 0erramien"a mu. !oerosa* si
bien "iene "an"as varian"es como las 7ue !uees ver en9 "ditar | !uscar ) reemplazar* nos
limi"aremos a las o!ciones m<s comunes . generales* 7ue<no"e e "area la inves"igaci5n el
res"o+ Usaremos !ara nues"ras !ruebas la siguien"e "abla e a"os* 7ue* no es res"ric"iva* !uees
usar la 7ue gus"es* !ero es"a !e7ueKa nos !ermi"e com!robar r<!iamen"e los resul"aos !ara
com!robar 7ue 2unciona correc"amen"e* es!u4s* !uees usar lis"aos el "amaKo 7ue 7uieras .
los recursos e "u e7ui!o "e lo !ermi"an=
/P /ombre (<o Edad
1 egar 1-%5 @@
# gloria 1-%G @#
@ an"onio 1-G5 F@
F liia 1-GG F#
5 !aola 1-%F @F
G vanessa 1-%G @#
% lize""e 1-%5 @@
##$ G+F Mani!ulano a"os
, egar 1-G- @-
- gloria 1-%1 @%
1$ an"onio 1-G- @-
11 liia 1-%@ @5
1# !aola 1-%5 @@
1@ vanessa 1-%5 @@
1F lize""e 1-G% F1
15 egar 1-%5 @@
1G gloria 1-G5 F@
1% an"onio 1-G% F1
1, liia 1-,$ #,
>n las b?s7ueas* se usa un Lescri!"or e b?s7ueaM 7ue no es o"ra cosa 7ue una
es"ruc"ura one le inicamos las carac"ers"icas e la b?s7uea . lo 7ue es"amos buscano . un
lugar !ara buscar* 7ue es el rango one 7ueremos 0acer la b?s7uea* !or su!ues"o !uees
buscar en "oa la 0o3a* incluso en "oas las 0o3as* la 2orma m<s sencilla e una b?s7uea es la
siguien"e=
"u. Bus*a'123
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( oEn*on&'ado !s >.)%*&
@+( o"@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
,Es&a.l%*%(os %l 'ango dond% .us*a'%(os
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3
,$'%a(os %l d%s*'+7&o' d% .usFu%da
o"@ A oHo)a!*&+8a-*'%a&%"%a'*h@%s*'+7&o'
,Es&a.l%*%(os lo Fu% %s&a(os .us*ando
o"@-s%&"%a'*h"&'+ng2 "33" 3
,R%al+:a(os la .usFu%da d% H>@!" las *o+n*+d%n*+as
oEn*on&'ado A oBus*a'En-f+nd!ll2 o"@ 3
,"+ no ha? *o+n*+d%n*+as oEn*on&'ado A <ull
#f <o& #s<ull2 oEn*on&'ado 3 Hh%n
,"+ %n*u%n&'a algo lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 oEn*on&'ado 3
Els%
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
End #f
End "u.
O nues"ra !rimera b?s7uea nos evuelve el mensa3e LNo se encon"raron
coincienciasM* I!or7ue* si a!aren"emen"e si "enemos valores @@ en nues"ros a"osJ* la res!ues"a
es 7ue la b?s7uea !ree"erminaa se 0ace buscano en"ro e las 2ormulas* . "oos los @@ 7ue
ves en la lis"a son el Lresul"aoM e una 2ormula* ic0a 2ormula es= lAuO(AcOAA())-/#* a0ora*
es"ablece el valor buscao en LaM . realiza la b?s7ueaP o(".set(earc1(tring< QaQ >.
A!renieno OOo Basic ##1
A0ora nos !asa al rev4s* evolvemos emasiaos resul"aos* IveraJ* la raz5n es
la misma* la b?s7uea !ree"erminaa se 0ace !or 2ormulas* observa 7ue selecciono "oas las
celas e la columna B 7ue "ienen la le"ra LaM . "oas las celas e la columna / . (* la 2ormula
e la columna ( .a la vimos . con"iene la le"ra buscaa* la 2ormula e la columna / es=
lA)>ATOA:O+>NTA>(1-G591-,$)* como vez* "ambi4n "ienen la le"ra LaM en"re su "e;"o* !or ello* la
b?s7uea "e evuelve "oo* lo cual es correc"o* la b?s7uea es"a bien* lo 7ue "enemos 7ue 0acer
es iscriminar un !oco m<s con los cri"erios e b?s7uea* no necesariamen"e "iene 7ue ser m<s
res"ric"iva* sino acore a lo 7ue Les"as buscanoM* . claro* lo 7ue es!eras evolver* regresemos a
nues"ro !rimer e3em!lo . agreguemos una !ro!iea a la b?s7uea* a0ora* le iremos 7ue
bus7ue !or valores* !ara 7ue bus7ue en el Lresul"aoM e las 2ormulas* no Len"roM e las
2ormulas* es"o lo logramos con la !ro!iea= searc0T.!e+
"u. Bus*a'323
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( oEn*on&'ado !s >.)%*&
@+( o"@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3

,$'%a(os %l d%s*'+7&o' d% .usFu%da
o"@ A oHo)a!*&+8a-*'%a&%"%a'*h@%s*'+7&o'
,Bus*a(os 7o' 8alo'%s
o"@-s%a'*hH?7% A 1
,Es&a.l%*%(os lo Fu% %s&a(os .us*ando
o"@-s%&"%a'*h"&'+ng2 "33" 3
,R%al+:a(os la .usFu%da d% H>@!" las *o+n*+d%n*+as
oEn*on&'ado A oBus*a'En-f+nd!ll2 o"@ 3
,"+ no ha? *o+n*+d%n*+as oEn*on&'ado A <ull
#f <o& #s<ull2 oEn*on&'ado 3 Hh%n
,"+ %n*u%n&'a algo lo s%l%**+ona(os
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 oEn*on&'ado 3
Els%
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
End #f
End "u.
### G+F Mani!ulano a"os
Muc0o me3or IveraJ* a0ora si* solo las celas con el valor @@ son seleccionaas*
!rueba a es"ablecer la b?s7uea con la le"ra LaM o cual7uiera 7ue "u 7uieras . observa los
resul"aos* es mu. im!or"an"e 7ue se!as 7ue el resul"ao es una colecci5n e rangos* aun*
cuano . solo "e evuelva un solo rango* es"e* 2ormar< !ar"e e ic0a colecci5n* en el "ema
Ae2erencia a varios rangos* "ra"amos como mane3ar es"e "i!o e rangos+
/omo siguien"e !rueba* es"ablece la b?s7uea en oS(+se"Searc0S"ring( HliH ) .
observa el resul"ao=
No"a 7ue las b?s7ueas las !uee 0acer en !ar"es el "e;"o* !ero !oemos
res"ringirla a !alabras com!le"as con la !ro!iea searc0Nors* como en=
"u. Bus*a'323
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( oEn*on&'ado !s >.)%*&
@+( o"@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3

o"@ A oHo)a!*&+8a-*'%a&%"%a'*h@%s*'+7&o'
o"@-s%a'*hH?7% A 1
,Bus*a(os 7o' 7ala.'as *o(7l%&as
o"@-s%a'*hUo'ds A H'u%
o"@-s%&"%a'*h"&'+ng2 "l+" 3
oEn*on&'ado A oBus*a'En-f+nd!ll2 o"@ 3
#f <o& #s<ull2 oEn*on&'ado 3 Hh%n
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 oEn*on&'ado 3
Els%
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
End #f
End "u.
)a b?s7uea an"erior "e "iene 7ue evolver HNo se encon"raron coincienciasH* !or
7ue no 0a. !alabras com!le"as 7ue sean LliM* !rueba a reem!lazar la caena buscaa !or el
nombre 7ue m<s e gus"e e los e;is"en"es en nues"ra lis"a* !or e3em!lo Llize""eM . ob"enremos=
A!renieno OOo Basic ##@
Por 7ue es"amos 0acieno la b?s7uea !or !alabras com!le"as+ Poemos 0acerla
aun m<s res"ric"iva* si es"ablecemos 7ue is"inga en"re ma.?sculas . min?sculas con la !ro!iea
Searc0/aseSensi"ive e la siguien"e manera=
"u. Bus*a'423
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( oEn*on&'ado !s >.)%*&
@+( o"@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3

o"@ A oHo)a!*&+8a-*'%a&%"%a'*h@%s*'+7&o'
o"@-s%a'*hH?7% A 1
o"@-s%a'*hUo'ds A Jals%
,@+s&+ngu+(os (a?us*ulas d% (+nus*ulas
o"@-"%a'*h$as%"%ns+&+8% A H'u%
o"@-s%&"%a'*h"&'+ng2 "!" 3
oEn*on&'ado A oBus*a'En-f+nd!ll2 o"@ 3
#f <o& #s<ull2 oEn*on&'ado 3 Hh%n
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-s%l%*&2 oEn*on&'ado 3
Els%
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
End #f
End "u.
Observa 7ue 0emos vuel"o a es"ablecer searc0Nors en 'alse !ara 7ue encuen"re
!ar"es e las !alabras+ >n la b?s7uea an"erior* ?nicamen"e "e "iene 7ue regresar la cela /1 7ue
con"iene la !alabra LAKoM+ :ncluso* !uees realizar b?s7ueas en"ro e las no"as e las celas si
es"ableces la !ro!iea searc0T.!e l #+
>l reem!lazo es la con"inuaci5n e la b?s7uea* es ecir* !ara !ara reem!lazar algo*
!rimero se "iene 7ue buscar* veamos un e3em!lo sencillo . es!u4s la e;!licaci5n* con"inuamos
0acieno uso e nues"ra "abla usaa en la b?s7uea+
"u. R%%(7la:a'123
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( lR%%(7la:ados !s 5ong
##F G+F Mani!ulano a"os
@+( oR@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3

,$'%a(os %l d%s*'+7&o' d% '%%(7la:o
oR@ A oHo)a!*&+8a-*'%a&%R%7la*%@%s*'+7&o'
,H%x&o a .us*a'
oR@-s%&"%a'*h"&'+ng2 "Aa\o" 3
,R%%(7la:ado 7o'
oR@-s%&R%7la*%"&'+ng2 "A(%s" 3
,El (%&odo d%8u%l8% %l nu(%'o d% '%%(7la:os Fu% &u8+%'on %x+&o
lR%%(7la:ados A oBus*a'En-'%7la*%!ll2 oR@ 3

#f lR%%(7la:ados A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
Els%
MsgBox ""% '%al+:a'on " 9 lR%%(7la:ados 9 " '%%(7la:os"
End #f
End "u.
Observa 7ue a0ora* en ves e un escri!"or e b?s7uea (crea"eSearc0(escri!"or)*
creamos un escri!"or e reem!lazo (crea"eAe!lace(escri!"or)* es"ablecemos el valor buscao
(se"Searc0S"ring) . el valor !or el 7ue se reem!lazara (se"Ae!laceS"ring)* es"e m4"oo
(re!laceAll) evuelve un en"ero largo (long) con el n?mero "o"al e reem!lazos 7ue "uvieron 4;i"o*
si es cero no encon"r5 coinciencias+ >n la columna ( e nues"ros a"os e e3em!lo* "enamos la
2ormula lAuO(AcOAA())-/#* es!u4s e e3ecu"ar la macro an"erior* eberamos "ener en es"a
columna la 2ormula lM>S(AcOAA())-/#* como lo !oemos com!robar en la siguien"e imagen=
A0ora* reem!lazaremos !alabras com!le"as* con el siguien"e c5igo* mi amigo >gar
no me reclamar< naa si lo cambio !or Nisole* e 0ec0o me 2elici"ar<=
"u. R%%(7la:a'223
@+( oHo)a!*&+8a !s >.)%*&
@+( oBus*a'En !s >.)%*&
@+( lR%%(7la:ados !s 5ong
@+( oR@ !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'23-g%&!*&+8%"h%%&23
oBus*a'En A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!14@19" 3

oR@ A oHo)a!*&+8a-*'%a&%R%7la*%@%s*'+7&o'
oR@-s%&"%a'*h"&'+ng2 "%dga'" 3
oR@-s%&R%7la*%"&'+ng2 "n+]ol%" 3
,5% +nd+*a(os Fu% .usFu% 7ala.'as *o(7l%&as
oR@-s%a'*hUo'ds A H'u%

lR%%(7la:ados A oBus*a'En-'%7la*%!ll2 oR@ 3

#f lR%%(7la:ados A 0 Hh%n
MsgBox "<o s% %n*on&'a'on *o+n*+d%n*+as"
A!renieno OOo Basic ##5
Els%
MsgBox ""% '%al+:a'on " 9 lR%%(7la:ados 9 " '%%(7la:os"
End #f
End "u.
A veces* es convenien"e 0acer !rimero una b?s7uea . com!robar 7ue es"a correc"a
!ara es!u4s 0acer el reem!lazo* si "us b?s7ueas es"<n bien es"ablecias* LcasiM !uees es"ar
seguro e 7ue el reem!lazo lo es"ar<+
=.).= 5rabajando con notas
)as no"as* en las celas e una 0o3a e calculo* son mu. 2<ciles e mane3ar* en el
siguien"e e3em!lo* inser"amos una nueva no"a en la cela >%=
"u. <o&as123
@+( oHo)a!*&+8a !s >.)%*&
@+( o<o&as !s >.)%*&
@+( o@+'$%lda !s <%^ *o(-sun-s&a'-&a.l%-$%ll!dd'%ss
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,>.&%n%(os la *ol%**+Kn d% no&as d% la ho)a a*&+8a
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
,5a *%lda dond% +ns%'&a'%(os la no&a
o@+'$%lda-$olu(n A 4
o@+'$%lda-Ro^ A 6
,#ns%'&a(os la no&a
o<o&as-+ns%'&<%^2 o@+'$%lda6 "0'%su7u%s&o a7'o.ado" 3
End "u.
Para saber cuan"as no"as 0a. en la 0o3a ac"iva=
"u. <o&as223
@+( oHo)a!*&+8a !s >.)%*&
@+( o<o&as !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,>.&%n%(os la *ol%**+Kn d% no&as d% la ho)a a*&+8a
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
,Mos&'a(os %l &o&al d% no&as %n la ho)a
MsgBox o<o&as-g%&$oun&23
End "u.
Para mos"rar la irecci5n e caa una e las celas con no"as . su con"enio=
"u. <o&as323
@+( oHo)a!*&+8a !s >.)%*&
@+( o<o&as !s >.)%*&
@+( o<o&a !s >.)%*&
@+( *o1 !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
#f o<o&as-g%&$oun&23 Y 0 Hh%n
Jo' *o1 A 0 Ho o<o&as-g%&$oun& T 1
##G G+F Mani!ulano a"os
,>.&%n%(os una no&a
o<o&a A o<o&as-g%&B?#nd%x2 *o1 3
,Mos&'a(os su 7os+*+Kn ? su *on&%n+do
MsgBox @+'%**+on$%lda2 o<o&a-g%&0os+&+on 3 9 "4 " 9 o<o&a-g%&"&'+ng23
<%x& *o1
Els%
MsgBox "<o ha? no&as %n %s&a ho)a"
End #f
End "u.
Jun*&+on @+'%**+on$%lda2 @+'$%lda !s >.)%*& 3 !s "&'+ng
@+( o"J! !s >.)%*&
@+( (@a&os
,<os a7o?a(os %n la fun*+Kn d% $al* @#RE$$#>< 2!@@RE""3
o"J! A *'%a&%Cno"%'8+*%2 "*o(-sun-s&a'-sh%%&-Jun*&+on!**%ss" 3
,$ons&'u+(os la (a&'+: d% da&os 7a'a la fun*+Kn
(@a&os A !''a?2 @+'$%lda-Ro^B16 @+'$%lda-$olu(nB16 4 3
@+'%**+on$%lda A o"J!-*allJun*&+on2"!@@RE"""6(@a&os233
End Jun*&+on
Puees acceer a una cela !rimero . es!u4s a su no"a !ara moi2icarla=
"u. <o&as423
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3
,!**%d%(os a la no&a d% la *%lda
o<o&a A o$%lda-g%&!nno&a&+on
,5% *a(.+a(os su *on&%n+do
o<o&a-s%&"&'+ng2 "$a(.+o d% &%x&o %n no&a" 3
End "u.
Si la cela re2erenciaa no "iene una no"a* el cambio no se ver< re2le3ao en la
in"er2az el usuario* !or lo 7ue "ienes 7ue asegurar"e 7ue la cela con"ienen una no"a* !uees
usar la longi"u el con"enio e la no"a !ara saberlo=
"u. <o&as523
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3
,!**%d%(os a la no&a d% la *%lda
o<o&a A o$%lda-g%&!nno&a&+on
#f 5%n2 o<o&a-g%&"&'+ng23 3 A 0 Hh%n
MsgBox "5a *%lda <> &+%n% no&a"
Els%
MsgBox "5a *%lda &+%n% no&a"
End #f
End "u.
Tambi4n !uee recorrer el con3un"o e no"as . com!arar la irecci5n=
A!renieno OOo Basic ##%
"u. <o&as623
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&as !s >.)%*&
@+( o<o&a !s >.)%*&
@+( *o1 !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"E7"3
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
#f o<o&as-g%&$oun&23 Y 0 Hh%n
Jo' *o1 A 0 Ho o<o&as-g%&$oun& T 1
o<o&a A o<o&as-g%&B?#nd%x2 *o1 3
,$o(7a'a(os las d+'%**+on%s
#f o<o&a-g%&0os+&+on-$olu(n A o$%lda-g%&$%ll!dd'%ss-$olu(n !nd o<o&a-g%&0os+&+on-Ro^ A
o$%lda-g%&$%ll!dd'%ss-Ro^ Hh%n
MsgBox "5a *%lda &+%n% no&a"
Ex+& "u.
End #f
<%x& *o1
MsgBox "5a *%lda <> &+%n% no&a"
Els%
MsgBox "<o ha? no&as %n %s&a ho)a"
End #f
End "u.
Poemos 0acer visible una no"a=
"u. <o&as723
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"E7"3
o<o&a A o$%lda-g%&!nno&a&+on
,5a ha*%(os 8+s+.l%
o<o&a-s%&#s1+s+.l%2 Jals% 3
End "u.
(e nuevo* si la cela no "iene no"a* el c5igo an"erior no 0ar< naa* "am!oco "e ar<
ning?n error* el siguien"e e3em!lo "e in"ercambia la visibilia e las no"as e la 0o3a* es ecir* si
es"a ocul"a la mues"ra . si es"a visible la ocul"a=
"u. <o&as823
@+( oHo)a!*&+8a !s >.)%*&
@+( o<o&as !s >.)%*&
@+( o<o&a !s >.)%*&
@+( *o1 !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
#f o<o&as-g%&$oun&23 Y 0 Hh%n
Jo' *o1 A 0 Ho o<o&as-g%&$oun& T 1
o<o&a A o<o&as-g%&B?#nd%x2 *o1 3
,#n&%'*a(.+a(os su 8+s+.+l+dad
o<o&a-s%&#s1+s+.l%2 <o& o<o&a-g%&#s1+s+.l% 3
<%x& *o1
Els%
MsgBox "<o ha? no&as %n %s&a ho)a"
End #f
##, G+F Mani!ulano a"os
End "u.
No"a como 0acemos el in"ercambio* !oemos saber si la no"a e la cela es visible
(get+s/isible)* es"a !ro!iea nos evuelve 2also (5alse) o veraero (.rue) seg?n es"e o no
visible la no"a* con el o!eraor e negaci5n (No") inver"imos es"e valor . !or consiguien"e la
visibilia+
Para borrar una no"a* es !reciso saber el nice e es"a* !or lo 7ue 0a. 7ue i"erar
en"re el con3un"o e no"as=
"u. <o&as923
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&as !s >.)%*&
@+( o<o&a !s >.)%*&
@+( *o1 !s 5ong
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"!1"3
o<o&as A oHo)a!*&+8a-g%&!nno&a&+ons23
#f o<o&as-g%&$oun&23 Y 0 Hh%n
Jo' *o1 A 0 Ho o<o&as-g%&$oun& T 1
o<o&a A o<o&as-g%&B?#nd%x2 *o1 3
,$o(7a'a(os las d+'%**+on%s
#f o<o&a-g%&0os+&+on-$olu(n A o$%lda-g%&$%ll!dd'%ss-$olu(n !nd o<o&a-g%&0os+&+on-Ro^ A
o$%lda-g%&$%ll!dd'%ss-Ro^ Hh%n
,Bo''a(os la no&a 7o' su Gnd+*%
o<o&as-'%(o8%B?#nd%x2 *o1 3
Ex+& "u.
End #f
<%x& *o1
MsgBox "5a *%lda <> &+%n% no&a"
Els%
MsgBox "<o ha? no&as %n %s&a ho)a"
End #f
End "u.
Tambi4n es !osible acceer a la au"o2orma (S$ape) e la no"a !ara mani!ularla=
"u. <o&as1023
@+( oHo)a!*&+8a !s >.)%*&
@+( o$%lda !s >.)%*&
@+( o<o&a !s >.)%*&
@+( oJo'(a !s >.)%*&
@+( oHa( !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o$%lda A oHo)a!*&+8a-g%&$%llRang%B?<a(%2"E7"3
,!**%d%(os a la no&a
o<o&a A o$%lda-g%&!nno&a&+on
,5a ha*%(os 8+s+.l%
o<o&a-s%&#s1+s+.l%2 H'u% 3
,!**%d%(os a la fo'(a
oJo'(a A o<o&a-g%&!nno&a&+on"ha7%
,>.&%n%(os %l &a(a\o a*&ual
oHa( A oJo'(a-g%&"+:%
,5o du7l+*a(os
oHa(-U+d&h A oHa(-U+d&h 2
oHa(-H%+gh& A oHa(-H%+gh& 2
,Es&a.l%*%(os %l nu%8o &a(a\o
oJo'(a-s%&"+:%2 oHa( 3
A!renieno OOo Basic ##-
,$a(.+a(os %l *olo' d% fondo d% fo'(a al%a&o'+a
oJo'(a-J+ll$olo' A RDB2Rnd232556Rnd232556Rnd232553
End "u.
>s"a au"o2orma* "iene ecenas e !ro!ieaes !ara mani!ularse* !or lo 7ue
volveremos a ellas en el ca!"ulo corres!onien"e a au"o2ormas+ Por a0ora* "ienes "oos los
elemen"os !ara mani!ular las no"as e celas a "u an"o3o+ (e "area* crea una macro 7ue nos 0aga
un in2orme* en una 0o3a nueva* e "oas las no"as e;is"en"es en la 0o3a ac"iva* nos "iene 7ue
evolver la irecci5n com!le"a . su con"enio* IvaleJ+
=.! Dando 2ormato
No se si es"ar<s e acuero conmigo* !ero a veces* ano 2orma"o a los a"os se
consume una gran can"ia e "iem!o . .a sabes* uno 7ue es bas"an"e 2lo3o es"a encan"ao 7ue
se 0aga e 2orma au"om<"ica* veamos las o!ciones m<s comunes e 2orma"o !or c5igo+ >n la
ma.ora e los e3em!los "ra"aremos e "raba3ar sobre la selecci5n* !ero no se "e olvie 7ue
siem!re es bueno com!robar 7ue es"as "raba3ano en una 0o3a e calculo* as como en un rango
e celas cuano sea necesario* es ecir* casi siem!re+
=.!.1 Formato de celdas
Primero las carac"ers"icas m<s usuales* "i!o e 2uen"e* "amaKo* negri"as* cursiva .
subra.ao=
"u. Jo'(a&o$%ldas123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

U+&h o"%l
,H+7o d% l%&'a
-$ha'Jon&<a(% A "5+.%'a&+on "ans"
,Ha(a\o d% l%&'a
-$ha'H%+gh& A 20
,<%g'+&as
-$ha'U%+gh& A 150
,$u's+8a o +&al+*a
-$ha'0os&u'% A 2
,"u.'a?ado
-$ha'Cnd%'l+n% A 1
End U+&h
End "u.
Para saber la lis"a com!le"a e 2uen"es (/0ar'on"Name) 7ue "ienes is!onibles en
O!enO22ice+org* usa las macros is!onibles en= )is"ar 2uen"es en un arc0ivo e /alc
#@$ G+5 (ano 2orma"o
>l "amaKo e la 2uen"e (/0arceig0") se es"ablece en !un"os* recorano 7ue un
!un"o es igual a 11%# e !ulgaa* a!ro;imaamen"e $+@5#, mm+
>l es"ilo negri"as se es"ablece !or cual7uiera e las siguien"e cons"an"es* e las
cuales* e;ce!"o los e;"remos* no 0a. muc0as varian"es en"re ellas=
Constante 0alor
com+sun+s"ar+a8"+'on"Neig0"+(ONTtNON $
com+sun+s"ar+a8"+'on"Neig0"+Tc:N 5$
com+sun+s"ar+a8"+'on"Neig0"+U)TAA):&cT G$
com+sun+s"ar+a8"+'on"Neig0"+):&cT %5
com+sun+s"ar+a8"+'on"Neig0"+S>M:):&cT -$
com+sun+s"ar+a8"+'on"Neig0"+NOAMA) 1$$
com+sun+s"ar+a8"+'on"Neig0"+S>M:BO)( 11$
com+sun+s"ar+a8"+'on"Neig0"+BO)( 15$
com+sun+s"ar+a8"+'on"Neig0"+U)TAABO)( 1%5
com+sun+s"ar+a8"+'on"Neig0"+B)A/t #$$
Al es"ilo cursiva o i"<lica le corres!onen las siguien"e cons"an"es=
Constante 0alor
com+sun+s"ar+a8"+'on"Slan"+NON> $
com+sun+s"ar+a8"+'on"Slan"+OB):eU> 1
com+sun+s"ar+a8"+'on"Slan"+:TA):/ #
com+sun+s"ar+a8"+'on"Slan"+(ONTtNON @
com+sun+s"ar+a8"+'on"Slan"+A>6>AS>QOB):eU> F
com+sun+s"ar+a8"+'on"Slan"+A>6>AS>Q:TA):/ 5
>l "i!o e subra.ao es"a e"erminao !or las cons"an"es=
Constante 0alor
com+sun+s"ar+a8"+'on"Unerline+NON> $
com+sun+s"ar+a8"+'on"Unerline+S:N&)> 1
com+sun+s"ar+a8"+'on"Unerline+(OUB)> #
com+sun+s"ar+a8"+'on"Unerline+(OTT>( @
com+sun+s"ar+a8"+'on"Unerline+(ONTtNON F
com+sun+s"ar+a8"+'on"Unerline+(ASc 5
com+sun+s"ar+a8"+'on"Unerline+)ON&(ASc G
com+sun+s"ar+a8"+'on"Unerline+(ASc(OT %
A!renieno OOo Basic #@1
Constante 0alor
com+sun+s"ar+a8"+'on"Unerline+(ASc(OT(OT ,
com+sun+s"ar+a8"+'on"Unerline+SMA))NA6> -
com+sun+s"ar+a8"+'on"Unerline+NA6> 1$
com+sun+s"ar+a8"+'on"Unerline+(OUB)>NA6> 11
com+sun+s"ar+a8"+'on"Unerline+BO)( 1#
com+sun+s"ar+a8"+'on"Unerline+BO)((OTT>( 1@
com+sun+s"ar+a8"+'on"Unerline+BO)((ASc 1F
com+sun+s"ar+a8"+'on"Unerline+BO)()ON&(ASc 15
com+sun+s"ar+a8"+'on"Unerline+BO)((ASc(OT 1G
com+sun+s"ar+a8"+'on"Unerline+BO)((ASc(OT(OT 1%
com+sun+s"ar+a8"+'on"Unerline+BO)(NA6> 1,
Aecuera 7ue !uees usar "an"o las cons"an"es como el valor e es"as* seg?n "u
gus"o . cri"erio+ Algunos e los valores e es"as cons"an"es* los !uees es"ablecer !ero no veras
ning?n e2ec"o a!aren"e+
Algunas o"ras o!ciones e 2orma"o e 2uen"e son=
"u. Jo'(a&o$%ldas223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

U+&h o"%l
,Es7a*+os s+n su.'a?a'
-$ha'Uo'dMod% A H'u%
,Ha*hado d% fu%n&%
-$ha'$'oss%d>u& A H'u%
,$on&o'no d% fu%n&%
-$ha'$on&ou'%d A H'u%
End U+&h

End "u.
/uano se subra.a la 2uen"e . la !ro!iea /0arNorMoe se es"ablece en
veraera (True)* "e e3a los es!acios en"re !alabras sin subra.ar+ )as o"ras os !ro!ieaes creo
7ue son bas"an"e au"oe;!lica"ivas+
A0ora* veamos algo mu. iver"io* el color* es"ablezcamos el color e la 2uen"e . el
subra.ao e es"a=
"u. Jo'(a&o$%ldas323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

U+&h o"%l
,$olo' d% la fu%n&% a:ul
-$ha'$olo' A RDB2 0606255 3
,Es&+lo d% su.'a?ado
-$ha'Cnd%'l+n% A 1
,$olo' d% su.'a?ado 'o)o
-$ha'Cnd%'l+n%$olo' A RDB2255606063
#@# G+5 (ano 2orma"o
,"+ s% (u%s&'a %l *olo'
-$ha'Cnd%'l+n%Has$olo' A H'u%
End U+&h

End "u.
/on la !ro!iea /0ar/olor . la a.ua e la 2unci5n A&B* es"ablecemos el color e
la 2uen"e* !ara el subra.ao* !rimero es"ablecemos el es"ilo (/0arUnerline)* es!u4s el color e
es"e (/0arUnerline/olor) . !or ul"imo es"ablecemos si 7ueremos 7ue se mues"re el color
(/0arUnerlinecas/olor)* si es"a !ro!iea se es"ablece en 2also (2alse)* el color el subra.ao
ser< el mismo color 7ue el e la 2uen"e+
/on la siguien"e macro* a caa cela el rango seleccionao se le es"ablecer< un
color e 2uen"e . e subra.ao alea"orio+
"u. Jo'(a&o$%ldas423
@+( o"%l !s >.)%*&
@+( *ol !s 5ong
@+( f+l !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
U+&h o"%l
Jo' *ol A 0 Ho o"%l-g%&$olu(ns-g%&$oun& T 1
Jo' f+l A 0 Ho o"%l-g%&Ro^s-g%&$oun& T 1
U+&h -g%&$%llB?0os+&+on2 *ol6 f+l 3
-$ha'$olo' A RDB2 Rnd232556Rnd232556Rnd23255 3
-$ha'Cnd%'l+n% A 1
-$ha'Cnd%'l+n%$olo' A RDB2 Rnd232556Rnd232556Rnd232553
-$ha'Cnd%'l+n%Has$olo' A H'u%
End U+&h
<%x&
<%x&
End U+&h
End #f

End "u.
)a alineaci5n el con"enio e la cela* se es"ablece con las !ro!ieaes 6er"ius"i2.
!ara el sen"io ver"ical . coriius"i2. !ara el sen"io 0orizon"al e la siguien"e 2orma=
"u. Jo'(a&o$%ldas523
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!l+n%a(os %n (%d+o 8%'&+*al(%n&%
o"%l-1%'&[us&+f? A 2
,!l+n%a(os *%n&'ado ho'+:on&al(%n&%
o"%l-Ho'+[us&+f? A 2
End "u.
)os valores !osibles !ara caa !ro!iea son=
Propiedad 0ert5ustify 0alor
com+sun+s"ar+"able+/ell6er"ius"i2.+STAN(AA( $
com+sun+s"ar+"able+/ell6er"ius"i2.+TOP 1
com+sun+s"ar+"able+/ell6er"ius"i2.+/>NT>A #
A!renieno OOo Basic #@@
Propiedad 0ert5ustify 0alor
com+sun+s"ar+"able+/ell6er"ius"i2.+BOTTOM @
Propiedad 6ori5ustify 0alor
com+sun+s"ar+"able+/ellcoriius"i2.+STAN(AA( $
com+sun+s"ar+"able+/ellcoriius"i2.+)>'T 1
com+sun+s"ar+"able+/ellcoriius"i2.+/>NT>A #
com+sun+s"ar+"able+/ellcoriius"i2.+A:&cT @
com+sun+s"ar+"able+/ellcoriius"i2.+B)O/t F
com+sun+s"ar+"able+/ellcoriius"i2.+A>P>AT 5
/on la combinaci5n e es"os valores* "enemos muc0as !osibiliaes e alineaci5n
e una cela+ )a cons"an"e com+sun+s"ar+"able+/ellcoriius"i2.+A>P>AT* es mu. in"eresan"e !or
7ue "e re!i"e el valor e la cela 0as"a llenar el anc0o e ella* !rueba a es"ablecer es"a !ro!iea
en una cela cu.o con"enio sea un !un"o !ara 7ue no"es su com!or"amien"o+
Si 7ueremos a3us"ar el "e;"o au"om<"icamen"e en la cela* usamos=
"u. Jo'(a&o$%ldas623
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!)us&% d% &%x&o
o"%l-#sH%x&U'a77%d A H'u%
End "u.
Si 7ueremos reucir el "e;"o 0as"a 7ue 7ue!a en la cela* usamos=
"u. Jo'(a&o$%ldas723
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,R%du**+on d% &%x&o
o"%l-"h'+n]HoJ+& AH'u%

End "u.
Si 7ueremos cambiar la orien"aci5n el "e;"o=
"u. Jo'(a&o$%ldas823
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,>'+%n&a*+on 8%'&+*al d%l &%x&o
o"%l->'+%n&a&+on A 3

End "u.
)os valores !ara es"a !ro!iea son=
#@F G+5 (ano 2orma"o
Propiedad Orientation 0alor
com+sun+s"ar+"able+/ellOrien"a"ion+STAN(AA( $
com+sun+s"ar+"able+/ellOrien"a"ion+TOPBOTTOM 1
com+sun+s"ar+"able+/ellOrien"a"ion+BOTTOMTOP #
com+sun+s"ar+"able+/ellOrien"a"ion+STA/t>( @
O !oemos es"ablecer el <ngulo e ro"aci5n=
"u. Jo'(a&o$%ldas923
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

o"%l-Ro&a&%!ngl% A 9000

End "u.
>l valor el <ngulo es"a ao en cen"4simas e <ngulo* es ecir* en el e3em!lo
an"erior es"ablecemos el <ngulo en -$v (-$$$) !ara 1,$v !oemos 1,$$$ . as sucesivamen"e+
Toma en cuen"a 7ue algunas e las !ro!ieaes vis"as 0as"a a0ora* se au"oe;clu.en
mu"uamen"e* !or lo 7ue "ienes 7ue asegurar"e 7ue no se con"ra!onen* e los os e3em!los
siguien"e* solo el seguno es correc"o=
"u. Jo'(a&o$%ldas1023
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

o"%l-Ho'+[us&+f? A 2
o"%l-#sH%x&U'a77%d A H'u%
,Ha(a\o d% sang'+a
o"%l-0a'a#nd%n& A 1000

End "u.
"u. Jo'(a&o$%ldas1123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

o"%l-Ho'+[us&+f? A 1
o"%l-#sH%x&U'a77%d A H'u%
,Ha(a\o d% sang'+a
o"%l-0a'a#nd%n& A 1000

End "u.
Tambi4n !oemos es"ablecer el color e 2ono e las celas=
"u. Jo'(a&o$%ldas1223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,$olo' d%l fondo d% la *%lda 2g'+s3
o"%l-$%llBa*]$olo' A RDB2200620062003

End "u.
)a siguien"e macro "e colorea caa cela e la selecci5n* "an"o la 2uen"e como el
2ono e la cela e un color alea"orio=
A!renieno OOo Basic #@5
"u. Jo'(a&o$%ldas1323
@+( o"%l !s >.)%*&
@+( *ol !s 5ong
@+( f+l !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
U+&h o"%l
Jo' *ol A 0 Ho o"%l-g%&$olu(ns-g%&$oun& T 1
Jo' f+l A 0 Ho o"%l-g%&Ro^s-g%&$oun& T 1
U+&h -g%&$%llB?0os+&+on2 *ol6 f+l 3
-$ha'$olo' A RDB2 Rnd232556Rnd232556Rnd23255 3
-$%llBa*]$olo' A RDB2 Rnd232556Rnd232556Rnd23255 3
End U+&h
<%x&
<%x&
End U+&h
End #f

End "u.
)os bores e las celas "ienen muc0as !osibiliaes* veamos algunas=
"u. Jo'(a&o$%ldas1423
@+( o"%l !s >.)%*&
@+( oBo'd%5+n%a !s <%^ *o(-sun-s&a'-&a.l%-Bo'd%'5+n%
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,Es&a.l%*%(os las *a'a*&%'+s&+*as d% la l+n%a
U+&h oBo'd%5+n%a
,El *olo' 2'o)o3
-$olo' A RDB225560603
,El an*ho d% la l+n%a %x&%'+o'
-#nn%'5+n%U+d&h A 50
,El an*ho d% la l+n%a +n&%'+o'
->u&%'5+n%U+d&h A 50
,5a d+s&an*+a %n&'% las l+n%as
-5+n%@+s&an*% A 20
End U+&h
,Es&a.l%*%(os los .o'd%s
U+&h o"%l
-Ho7Bo'd%' A oBo'd%5+n%a ,"u7%'+o'
-Bo&&o(Bo'd%' A oBo'd%5+n%a ,#nf%'+o'
-5%f&Bo'd%' A oBo'd%5+n%a ,#:Fu+%'do
-R+gh&Bo'd%' A oBo'd%5+n%a ,@%'%*ho
End U+&h
End "u.
>l anc0o e las lineas . la is"ancia en"re ellas es"a aa en cen"4simas e
milme"ros* si es"ablecemos solo una e las os lneas* veras una linea sim!le+ Si eseas
es"ablecer "ambi4n las lneas iagonales* usa la !ro!iea (iagonalT)BA !ara la lnea 7ue va
ese la es7uina su!erior iz7uiera a la in2erior erec0a . (iagonalB)TA !ara la 7ue va e la
es7uina in2erior iz7uiera a la su!erior erec0a* "ienes 7ue es"ablecerles la misma es"ruc"ura e
lnea (com+sun+s"ar+"able+Borer)ine) vis"a en los e3em!los+
>l c5igo an"erior "e es"ablecer< el bore e caa cela el rango seleccionao* si
7uieres es"ablecer el bore e solo los e;"remos el rango* "iene 7ue usar la es"ruc"ura
TableBorer=
"u. Jo'(a&o$%ldas1523
@+( o"%l !s >.)%*&
#@G G+5 (ano 2orma"o
@+( oBo'd%5+n%a !s <%^ *o(-sun-s&a'-&a.l%-Bo'd%'5+n%
@+( oBo'd%Ha.la !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%Bo'd%'
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,Es&a.l%*%(os las *a'a*&%'Gs&+*as d% la l+n%a
U+&h oBo'd%5+n%a
,El *olo' 2a:ul3
-$olo' A RDB206062553
,El an*ho d% la l+n%a +n&%'+o'
->u&%'5+n%U+d&h A 75
End U+&h
,Es&a.l%*%(os las *a'a*&%'Gs&+*as d% la &a.la
U+&h oBo'd%Ha.la
-Ho75+n% A oBo'd%5+n%a ,"u7%'+o'
-#sHo75+n%1al+d A H'u%
-Bo&&o(5+n% A oBo'd%5+n%a ,#nf%'+o'
-#sBo&&o(5+n%1al+d A H'u%
-5%f&5+n% A oBo'd%5+n%a ,#:Fu+%'do
-#s5%f&5+n%1al+d A H'u%
-R+gh&5+n% A oBo'd%5+n%a ,@%'%*ho
-#sR+gh&5+n%1al+d A H'u%
End U+&h

,Es&a.l%*%(os los .o'd%s
o"%l-Ha.l%Bo'd%' A oBo'd%Ha.la

End "u.
)as !ro!ieaes :sTo!)ine6ali* :sBo""om)ine6ali* :s)e2")ine6ali .
:sAig0")ine6ali* "ienes 7ue es"ablecerlas en veraero ("rue) si 7uieres 7ue se vea la lnea+
Para es"ablecer los margenes e la cela* usamos=
"u. Jo'(a&o$%ldas1623
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

,0a'a %s&a.l%*%' los (a'g%n%s d% la *%lda
U+&h o"%l
-0a'aHo7Ma'g+n A 500 ,!''+.a
-0a'aBo&&o(Ma'g+n A 500 ,!.a)o
-0a'a5%f&Ma'g+n A 800 ,#:Fu+%'da
-0a'aR+gh&Ma'g+n A 800 ,@%'%*ha
End U+&h
End "u.
Para ar un 2orma"o !ree"erminao a la cela* usamos la !ro!iea Numer'orma"*
la cual es necesario es"ablecer como un en"ero largo (long) corres!onien"e a la clave el 2orma"o
7ue nos in"erese* !or e3em!lo=
"u. Jo'(a&o$%ldas1723
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Es&a.l%*%(os la s%l%**+on %n %l fo'(a&o Es&anda'
o"%l-<u(.%'Jo'(a& A 0

End "u.
A!renieno OOo Basic #@%
>l numero e clave no es secuencial* !or lo 7ue "enemos 7ue saber e an"emano la
clave el 2orma"o 7ue nos in"eresa* !ara ello* usa la macro 7ue "e mues"ro en9 )is"ar 2orma"os en
un arc0ivo e /alc+
A0ora* veamos como combinar . se!arar celas+ Para ello* usamos el m4"oo
mer,e* con el argumen"o veraero ("rue)* como en el siguien"e e3em!lo=
"u. Jo'(a&o$%ldas1823
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,$o(.+na(os las *%ldas s%l%**+onadas
o"%l-(%'g%2 H'u% 3

End "u.
>s"e m4"oo solo es"a !resen"e en un rango e celas* no en una colecci5n e
rangos as 7ue valialo cuano lo uses+ Si es"ableces el argumen"o en 2also (2alse)* se!arara las
celas e la selecci5n+ >s"e m4"oo es sencillo !ero ebes e "omar en cuen"a algunas
consieraciones+ Si seleccionas un rango .a combinao* 3un"o con un <rea 7ue no* es"e m4"oo
no 0ar< naa* claro* !or c5igo es"o. 0ablano* !ero 0as la !rueba en la in"er2az el usuario* es
ecir* manualmen"e . observa 7ue !asa* a0ora* "ra"emos e emularlo con c5igo+++
"u. Jo'(a&o$%ldas1923
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,"%7a'a(os las *%ldas s%l%**+onadas
o"%l-(%'g%2 Jals% 3
,5as *o(.+na(os
o"%l-(%'g%2 H'u% 3

End "u.
Si se !uee* IveraJ* !rimero las se!aramos . es!u4s las combinamos+ )a
siguien"e consieraci5n 7ue ebes "omar en cuen"a* es saber 7ue !asa cuano las celas se
combinan* !ara ello* 0aremos unas !ruebas .a no con la selecci5n sino con rangos con nombre*
la macro siguien"e "e al"ernara en"re combinar . se!arar la el rango seleccionao* no"a como
consul"amos la !ro!iea ge":sMerge !ara saber si el rango es"a combinao+
"u. Jo'(a&o$%ldas2023
@+( oRango !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23

oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B24@10" 3
,#n8%'&+(os la *o(.+na*+on
oRango-(%'g%2 <o& oRango-g%&#sM%'g%d 3

End "u.
A0ora* en la siguien"e macro* "ienes 7ue !oner muc0a a"enci5n* no"a el rango 7ue
es"amos combinano* las celas en las cuales veri2icamos si es"<n combinaas* el valor 7ue nos
evuelve el consul"ar su !ro!iea ge":sMerge . observa 0as"a cuano nos 2unciona el m4"oo
!ara se!arar las celas+
"u. Jo'(a&o$%ldas2123
@+( oRango !s >.)%*&
#@, G+5 (ano 2orma"o
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E154H20" 3
oRango-(%'g%2 H'u% 3

,<o&a Fu% la *%lda D19 fo'(a 7a'&% d%l 'ango *o(.+ando
,*onsul&a(os la 7'o7+%dad ? &'a&a(os d% s%7a'a'
Msg.ox oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "D19" 3-g%&#sM%'g%d23
oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "D19" 3-(%'g%2 Jals% 3

Msg.ox oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "J17" 3-g%&#sM%'g%d23
,H'a&a(os d% s%7a'a' las *%ldas
oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "D19" 3-(%'g%2 Jals% 3

Msg.ox oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E16" 3-g%&#sM%'g%d23
oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "D19" 3-(%'g%2 Jals% 3
,!ho'a s+6 nos d+*% Fu% %s&a *o(.+nada ?
,f+nal(%n&% log'a(os s%7a'a'las
Msg.ox oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E15" 3-g%&#sM%'g%d23
oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E15" 3-(%'g%2 Jals% 3

End "u.
I)o no"as"eJ* cuano se combinan celas* "oas* e;ce!"o la e la es7uina su!erior
iz7uiera el rango* se marcan como LnoM combinaas* en"onces* eso nos obliga a buscar .
encon"rar es"a cela a !ar"ir e o"ra cuano in"en"emos se!arar celas* !ara 0acer es"o* nos
au;iliaremos e un cursor cu.o uso .a lo 0emos vis"o+
"u. Jo'(a&o$%ldas2223
@+( oRango !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( o$u'so' !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E154H20" 3
oRango-(%'g%2 H'u% 3
,1%'+f+*a(os Fu% %s&% *o(.+nada
MsgBox oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "E15" 3-g%&#sM%'g%d23
,$'%a(os un *u'so' a 7a'&+' d% una *%lda Fu% no s%a la d%
,la %sFu+na su7%'+o +:Fu+%'da
o$u'so' A oHo)a!*&+8a-*'%a&%$u'so'B?Rang%2 oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "D19" 3 3
,Ex7and+(os %l *u'so' al a'%a *o(.+nada
o$u'so'-*olla7s%HoM%'g%d!'%a23
,"%7a'a(os las *%ldas
o$u'so'-(%'g%2 Jals% 3

End "u.
>s"a vez* a !ar"ir e o"ra cela* e;!animos el cursor a la regi5n combinaa .
!uimos se!arar 2<cilmen"e+
Toma en cuen"a 7ue !asa con las celas 7ue "ienen con"enio cuano se combinan*
veri2icalo en la in"er2az el usuario . "ra"a e an"ici!ar es"e caso+
/omo ul"imo "ema e es"e ca!i"ulo* veamos como !ro"eger . es!ro"eger celas*
recuera 7ue es"a !ro"ecci5n solo es e2ec"iva si la 0o3a e calculo es"a !ro"egia
"u. 0'o&%g%'$%ldas123
@+( oRango !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
A!renieno OOo Basic #@-
@+( o0$ !s <%^ "*o(-sun-s&a'-u&+l-$%ll0'o&%*&+on"
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "[274530" 3
U+&h o0$
,@%&%'(+na s+ la *%lda %s&a .loFu%ada 7a'a (od+f+*a's%
-#s5o*]%d A H'u%
,@%&%'(+na s+ s% o*ul&an las fo'(ulas6 solo 8%'as %l '%sul&ado
-#sJo'(ulaH+dd%n A H'u%
,@%&%'(+na s+ s% o*ul&a %l *on&%n+do d% las *%ldas
-#sH+dd%n A H'u%
,0a'a o*ul&a' solo 7a'a la +(7'%s+Kn
-#s0'+n&H+dd%n A H'u%
End U+&h
oRango-$%ll0'o&%*&+on A o0$
oHo)a!*&+8a-0'o&%*&2""3
End "u.
Para es!ro"eger las celas* es su2icien"e con es!ro"eger la 0o3a* e "oos moos
!uees es0abili"ar las o!ciones e !ro"ecci5n con solo es"ablecer las o!ciones e !ro"ecci5n en
2also ('alse)* !or su!ues"o* no siem!re "ienen 7ue es"ar "oas seleccionaas* "u e"erminaras el
nivel e acceso en caa uno e "us !ro.ec"o* !or e3em!lo=
"u. 0'o&%g%'$%ldas223
@+( oRango !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( o0$ !s <%^ "*o(-sun-s&a'-u&+l-$%ll0'o&%*&+on"
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "[274530" 3
,@%s7'o&%g%(os la ho)a
oHo)a!*&+8a-un0'o&%*&2""3
U+&h o0$
,@%&%'(+na s+ la *%lda %s&a .loFu%ada 7a'a (od+f+*a's%
-#s5o*]%d A H'u%
,@%&%'(+na s+ s% o*ul&an las fo'(ulas6 solo 8%'as %l '%sul&ado
-#sJo'(ulaH+dd%n A H'u%
,@%&%'(+na s+ s% o*ul&a %l *on&%n+do d% las *%ldas
-#sH+dd%n A H'u%
,0a'a o*ul&a' solo 7a'a la +(7'%s+Kn
-#s0'+n&H+dd%n A H'u%
End U+&h
oRango-$%ll0'o&%*&+on A o0$
End "u.
=.!.2 Formato de 2ilas y columnas
Para es"ablecer la al"ura e las 2ilas* usamos la !ro!iea ceig0"* el valor se
es"ablece en cen"4simas e milme"ros* !or lo 7ue !ara "ener una 2ila e $+5$ cm le asignamos un
valor e 5$$ como en el siguien"e e3em!lo=
"u. Jo'(a&oJ+las123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Es&a.l%*%(os %l al&o d% las f+las s%l%**+onadas
#F$ G+5 (ano 2orma"o
o"%l-g%&Ro^s-H%+gh& A 500

End "u.
/uano "ra"as e es"ablecer la al"ura e las 2ilas en cero ($)* si bien no "e ar<
ning?n error* "am!oco veras ning?n cambio* aun* es"ablecieno el valor en la unia veras 7ue la
2ila sigue sieno no"able+ Si lo 7ue eseas es ocul"arla* es me3or usar la !ro!iea
corres!onien"e* !ara es"e caso* :s6isible* como en=
"u. Jo'(a&oJ+las223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,>*ul&a(os las f+las s%l%**+onadas
o"%l-g%&Ro^s-#s1+s+.l% A Jals%
End "u.
>s"a !ro!iea se es"ablece en 2also (2alse) !ara ocul"ar la 2ila . en veraero ("rue)
!ara mos"rarla* el siguien"e e3em!lo "e al"ernara en ocul"ar . mos"rar con2orme la e3ecu"es=
"u. Jo'(a&oJ+las323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!l&%'na(os %n&'% 8+s+.l% ? o*ul&a
o"%l-g%&Ro^s-#s1+s+.l% A <o& o"%l-g%&Ro^s-#s1+s+.l%
End "u.
)as 2ilas* a7uieren una !ro!iea !ar"icular cuano se les a!lica un 2il"ro* es"a
!ro!iea se llama :s'il"ere* . "e evolver< veraero ("rue)* cuano la 2ila consul"aa es"e ocul"a
como consecuencia e un 2il"ro* "oma no"a e 7ue LsoloM cuano es"e ocul"a !or un 2il"ro* si "u la
ocul"as con :s6isible* es"a !ro!iea (:s'il"ere) seguir< sieno 2alsa (2alse)* !rueba a 0acer un
2il"ro en "u 0o3a ac"iva . !rocura 7ue la 2ila consul"aa (ge"B.:ne;(:nice)) es"e 2il"raa+
"u. Jo'(a&oJ+las423
@+( oHo)a!*&+8a !s >.)%*&

oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,$onsul&a(os s+ la f+la 3 %s&a f+l&'ada
MsgBox oHo)a!*&+8a-g%&Ro^s-g%&B?+nd%x223-#sJ+l&%'%d
End "u.
Tambi4n !oemos es"ablecer el al"o o!"imo e las 2ilas con la !ro!iea
O!"imalceig0"* ebe es"ar en veraero ("rue) !ara 7ue "enga e2ec"o+
"u. Jo'(a&oJ+las523
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Es&a.l%*%(os %l al&o o7&+(o d% las f+las s%l%**+onadas
o"%l-g%&Ro^s->7&+(alH%+gh& A H'u%

End "u.
A!renieno OOo Basic #F1
A las 2ilas "ambi4n es !osible cambiarles el color e 2ono* es"o nos !ermi"e
es"ablecer el color e "oa la 2ila+
"u. Jo'(a&oJ+las623
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Es&a.l%*%(os %l *olo' d% fondo d% las *%ldas d% la f+la *o(7l%&a
o"%l-g%&Ro^s-$%llBa*]$olo' A RDB2200620062003

End "u.
)a siguien"e macro "e cambiara el color e las 2ilas im!ares e la selecci5n+
"u. Jo'(a&oJ+las723
@+( o"%l !s >.)%*&
@+( *o1 !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

Jo' *o1 A 0 Ho o"%l-g%&Ro^s-g%&$oun&23 T 1 "&%7 2
,Es&a.l%*%(os un *olo' al%a&o'+o 7a'a las f+las +(7a'%s d% la s%l%**+on
o"%l-g%&Ro^s-g%&B?#nd%x2 *o1 3-$%llBa*]$olo' A RDB2 Rnd232556Rnd232556Rnd23255 3
<%x&

End "u.
A las columnas "ambi4n les !oemos es"ablecer el anc0o+
"u. Jo'(a&o$olu(nas123
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,Es&a.l%*%(os %l an*ho d% las *olu(nas s%l%**+onadas
o"%l-g%&$olu(ns-U+d&h A 1000
End "u.
O ocul"arlas+
"u. Jo'(a&o$olu(nas223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,>*ul&a(os las *olu(nas s%l%**+onadas
o"%l-g%&$olu(ns-#s1+s+.l% A Jals%

End "u.
A3us"ar al con"enio+
"u. Jo'(a&o$olu(nas323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!)us&a(os al *on&%n+do
o"%l-g%&$olu(ns->7&+(alU+d&h A H'u%

End "u.
)as columnas no "ienen una !ro!iea :s'il"ere* !or 7ue como sabes* no 0a. 2il"ros
0orizon"ales* !ero con un !oco e ingenio . usano la !ro!iea :s6isible* !uees crear"e "u
#F# G+5 (ano 2orma"o
versi5n e 2il"ros 0orizon"ales+ Tam!oco !uees usar la !ro!iea /ellBacs/olor !ara es"ablecer
el color e 2ono* !ero "ambi4n !oemos im!lemen"ar nues"ras versi5n* a7u una !rimera
a!ro;imaci5n+
"u. Jo'(a&o$olu(nas423
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,<os a7o?a(os %n un *u'so'
o$u'so' A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2 o"%l 3
o$u'so'-%x7andHoEn&+'%$olu(ns23
o$u'so'-$%llBa*]$olo' A RDB2210621062103

End "u.
)a siguien"e macro* es"ablecer< el anc0o e las columnas en 1 cm* es!u4s el al"o
e las 2ilas "ambi4n en 1 . colorear< al"ernaamen"e 2ilas . columnas !ara 0acer un lino mosaico+
"u. Jo'(a&oJ+las$olu(nas123
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( *o1 !s 5ong
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23

o"%l-g%&Ro^s-H%+gh& A 1000
o"%l-g%&$olu(ns-U+d&h A 1000

Jo' *o1 A 0 Ho o"%l-g%&Ro^s-g%&$oun&23 T 1 "&%7 2
o"%l-g%&Ro^s-g%&B?#nd%x2 *o1 3-$%llBa*]$olo' A RDB2 23062306230 3
<%x&
Jo' *o1 A 0 Ho o"%l-g%&$olu(ns-g%&$oun&23 T 1 "&%7 2
o$u'so' A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2 o"%l-g%&$%llB?0os+&+on2*o1603 3
o$u'so'-%x7andHoEn&+'%$olu(ns23
o$u'so'-$%llBa*]$olo' A RDB2230623062303
<%x&

End "u.
)as 2ilas . columnas cuen"an con algunas !ro!ieaes involucraas en la im!resi5n
e los ocumen"os* !or lo 7ue se ver<n en el ca!i"ulo corres!onien"e a im!resi5n+
=.!. Estilos y auto2ormato
/omo buen usuario e O!enO22ice+org 7ue somos* sabemos 7ue una e sus
carac"ers"icas m<s ricas es"a en sus Les"ilosM* es ecir* en la !osibilia e agru!ar ba3o un
nombre* una serie e carac"ers"icas e 2orma"o . 7ue !oemos a!licar con un solo clic+ (en"ro e
las 0o3as e c<lculo* "enemos os es"ilos !er2ec"amen"e e2inios* los es"ilos e cela 7ue
veremos en es"e ca!i"ulo . los es"ilos e !<gina 7ue se ver<n en el siguien"e+ Para ver los es"ilos
e cela ac"uales* usamos la siguien"e macro=
"u. Es&+los123
@+( o@o* !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los$%lda !s >.)%*&
@+( o"%l !s >.)%*&
A!renieno OOo Basic #F@
,!**%d%(os al do*u(%n&o a*&ual
o@o* A Hh+s$o(7on%n&
,!**%d%(os a &odos los %s&+los
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
,!**%d%(os a los %s&+los d% *%lda
oEs&+los$%lda A oEs&+los-g%&B?<a(%2"$%ll"&?l%s"3
,Mos&'a(os sus no(.'%s
MsgBox [o+n2 oEs&+los$%lda-g%&El%(%n&<a(%s236 $h'2133 3
End "u.
Si no "ienes ning?n es"ilo e cela !ersonalizao* crea uno con el 2orma"o 7ue
7uieras ("ecla '11)* vuelve a correr la macro . "ienes 7ue ver lis"ao el nuevo es"ilo+
>n nues"ro e3em!lo* 0emos agregao un nuevo es"ilo e cela 7ue se llama
L(omingosM* los es"ilos e cela* los !oemos es"ablecer a una cela* un rango e celas* un
gru!o e rangos e una 2orma sumamen"e sencilla* veamos como=
"u. Es&+los223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!7l+*a(os %l %s&+lo d% *%lda @o(+ngos a la s%l%**+Kn a*&ual
o"%l-$%ll"&?l% A "@o(+ngos"
End "u.
6eamos la i2erencia en"re a!licar 2orma"o irec"o a las celas . usar un es"ilo* en la
siguien"e macro* 2orma"eamos la selecci5n con las carac"ers"icas inicaa en caa lnea=
"u. Es&+los323
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
U+&h o"%l
#FF G+5 (ano 2orma"o
,H+7o d% l%&'a
-$ha'Jon&<a(% A "<+(.us "ans 5"
,Ha(a\o d% l%&'a
-$ha'H%+gh& A 15
,<%g'+&as
-$ha'U%+gh& A 150
,$u's+8a o +&al+*a
-$ha'0os&u'% A 2
,!l+n%a(os %n (%d+o 8%'&+*al(%n&%
-1%'&[us&+f? A 2
,!l+n%a(os *%n&'ado ho'+:on&al(%n&%
-Ho'+[us&+f? A 2
,$olo' d% fondo d% la *%lda
-$%llBa*]$olo' A RDB2204620462043
,$olo' d% la fu%n&%
-$ha'$olo' A RDB206062553
End U+&h
End "u.
A0ora* crea un es"ilo con es"as mismas carac"ers"icas* !ara nues"ro e3em!lo le
llamaremos LAesal"ao1M . !roceamos a a!licar a la selecci5n=
"u. Es&+los423
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
o"%l-$%ll"&?l% A "R%sal&ado1"
End "u.
No !uee ser m<s 2<cil* !ero (siem!re 0a. un !ero)* si el es"ilo e cela no e;is"e* el
c5igo no "e ar< ning?n error* sim!lemen"e no 0ar< naa* el nombre el es"ilo* ebe es"ar escri"o
"al cual se io e al"a inclu.eno* ma.?sculas . min?sculas* "ambi4n* como sucee en la in"er2az
el usuario* cuano se borra un es"ilo e cela !ersonalizao* 7ue son los ?nicos 7ue !uees
eliminar* las celas 7ue "engan es"e es"ilo* !asar<n a "ener el es"ilo e cela !ree"erminao* !or
ello* es recomenable* veri2icar 7ue el es"ilo e;is"a . en caso e 7ue no e;is"a* crearlo* al crearlo*
es recomenable veri2icar 7ue no e;is"a .a el nombre !ro!ues"o* !ues si in"en"as agregar un
nombre .a e;is"en"e* "e ar< un error en "iem!o e e3ecuci5n+ 6eamos un e3em!lo=
"u. Es&+los523
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los$%lda !s >.)%*&
@+( oEs&+lo<u%8o !s >.)%*&
,!**%d%(os al do*u(%n&o a*&ual
o@o* A Hh+s$o(7on%n&
,!**%d%(os a la s%l%**+Kn
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,!**%d%(os a &odos los %s&+los
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
,!**%d%(os a los %s&+los d% *%lda
oEs&+los$%lda A oEs&+los-g%&B?<a(%2"$%ll"&?l%s"3
,1%'+f+*a(os Fu% %l %s&+lo %x+s&a
#f oEs&+los$%lda-hasB?<a(%2 "R%sal&ado1" 3 Hh%n
o"%l-$%ll"&?l% A "R%sal&ado1"
Els%
,"+ no %x+s&% lo *'%a(os
oEs&+lo<u%8o A o@o*-*'%a&%#ns&an*%2 "*o(-sun-s&a'-s&?l%-$%ll"&?l%" 3
,5o ag'%ga(os a la *ol%**+Kn d% %s&+los
oEs&+los$%lda-+ns%'&B?<a(%2 "R%sal&ado1"6 oEs&+lo<u%8o 3
A!renieno OOo Basic #F5
,Es&a.l%*%(os su fo'(a&o
U+&h oEs&+lo<u%8o
-$ha'Jon&<a(% A "<+(.us "ans 5"
-$ha'H%+gh& A 15
-$ha'U%+gh& A 150
-$ha'0os&u'% A 2
-1%'&[us&+f? A 2
-Ho'+[us&+f? A 2
-$%llBa*]$olo' A RDB2204620462043
-$ha'$olo' A RDB206062553
End U+&h
,O lo a7l+*a(os
o"%l-$%ll"&?l% A "R%sal&ado1"
End #f
End "u.
Para borrar un es"ilo* usamos el m4"oo removeB.Name e la siguien"e manera*
recorano 7ue al borrar el es"ilo* L"oasM* las celas 7ue "engan ic0o es"ilo* regresaran al es"ilo
!ree"erminao* !eri4nose "oo el 2orma"o+
"u. Es&+los623
@+( o@o* !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los$%lda !s >.)%*&
@+( oEs&+lo<u%8o !s >.)%*&
,!**%d%(os al do*u(%n&o a*&ual
o@o* A Hh+s$o(7on%n&
,!**%d%(os a &odos los %s&+los
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
,!**%d%(os a los %s&+los d% *%lda
oEs&+los$%lda A oEs&+los-g%&B?<a(%2"$%ll"&?l%s"3
,1%'+f+*a(os Fu% %l %s&+lo %x+s&a
#f oEs&+los$%lda-hasB?<a(%2 "@o(+ngos" 3 Hh%n
#f MsgBox2"MEs&as s%gu'o d% .o''a' %l %s&+loN"6366"Bo''a %s&+lo"3 A 6 &h%n
,Pu+&a(os %l %s&+lo
oEs&+los$%lda-'%(o8%B?<a(%2 "@o(+ngos" 3
MsgBox "Es&+lo d% *%lda .o''ado"
Els%
MsgBox "<> s% .o''o n+ng;n %s&+lo"
End #f
Els%
MsgBox "El %s&+lo no %x+s&%"
End #f
End "u.
>l mane3o e au"o2orma"o* es mu. similar al e es"ilos* la i2erencia* es 7ue el
au"o2orma"o siem!re se a!lica a un rango e celas* mnimo* e "res columnas !or "res 2ilas* es"e
servicio es"a is!onible "an"o en 0o3as e calculo como en "ablas e Nri"er* !ara ver los
au"o2orma"os is!onibles usamos=
"u. !u&ofo'(a&o123
@+( o!u&oJo'(a&os !s >.)%*&
o!u&oJo'(a&os A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-sh%%&-Ha.l%!u&oJo'(a&s"3
,Mos&'a(os sus no(.'%s
MsgBox [o+n2 o!u&oJo'(a&os-g%&El%(%n&<a(%s236 $h'2133 3
End "u.
Para a!licar un au"o2orma"o se usa el m4"oo au"o'orma" e la siguien"e manera=
#FG G+5 (ano 2orma"o
"u. !u&ofo'(a&o223
@+( o"%l !s >.)%*&
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
o"%l-au&oJo'(a&2"1%'d%"3
End "u.
Toma en cuen"a 7ue el rango seleccionao* LebeM ser un ob3e"o Sc/ellAangeOb3* es
ecir* un rango e celas* si bien* !or c5igo* !or<s a!licarlo a una sola cela !ero "e 2orma"ear<
un mnimo e "res 2ila !or "res columnas* si seleccionas varios rangos e celas* "e ar< un error
!ues ese ob3e"o no im!lemen"a el m4"oo au"o'orma"* lo me3or* como siem!re* es valiar 7ue la
selecci5n es correc"a* si usas es"a "4cnica+ >l nombre el au"o2orma"o* como en los es"ilos* ebe
ser e;ac"amen"e como se llamo al crearlo* !ero a i2erencia e los es"ilos* si escribes mal el
nombre* "e ar< un error en "iem!o e e3ecuci5n* !or ello* es me3or valiar 7ue e;is"a* an"es e
usarlo* como en el siguien"e e3em!lo=
"u. !u&ofo'(a&o323
@+( o!u&oJo'(a&os !s >.)%*&
@+( o"%l !s >.)%*&
@+( s<o(.'%!J !s "&'+ng
s<o(.'%!J A "1%'d%Ro)o"
o!u&oJo'(a&os A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-sh%%&-Ha.l%!u&oJo'(a&s"3
,8%'+f+*a(os Fu% %x+s&a %l au&ofo'(a&o
#f o!u&oJo'(a&os-hasB?<a(%2 s<o(.'%!J 3 Hh%n
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,<os as%gu'a(os Fu% la s%l%**+on s%a un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
,d% (+n+(o &'%s f+las 7o' &'%s *olu(nas
#f o"%l-g%&$olu(ns-g%&$oun& Y 2 !nd o"%l-g%&Ro^s-g%&$oun& Y 2 Hh%n
o"%l-au&oJo'(a&2 s<o(.'%!J 3
Els%
MsgBox "El 'ango d%.% s%' d% (+n+(o6 3 *olu(nas 7o' 3 f+las"
End #f
Els%
MsgBox "<o %s un 'ango d% *%ldas"
End #f
Els%
MsgBox "El au&ofo'(a&o no %x+s&%"
End #f
End "u.
Para eliminar un au"o2orma"o* usamos el m4"oo removeB.Name como en=
"u. !u&ofo'(a&o423
@+( o!u&oJo'(a&os !s >.)%*&
o!u&oJo'(a&os A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-sh%%&-Ha.l%!u&oJo'(a&s"3
,1%'+f+*a(os Fu% %x+s&a
#f o!u&oJo'(a&os-hasB?<a(%2 "1%'d%Ro)o" 3 Hh%n
#f MsgBox2"MEs&as s%gu'o d% .o''a' %l au&ofo'(a&oN"6366"Bo''a au&ofo'(a&o"3 A 6 Hh%n
,Pu+&a(os %l au&ofo'(a&o
o!u&oJo'(a&os-'%(o8%B?<a(%2 "1%'d%Ro)o" 3
MsgBox "!u&ofo'(a&o .o''ado"
Els%
MsgBox "<> s% .o''o nada"
End #f
Els%
MsgBox "El au&ofo'(a&o no %x+s&%"
End #f
End "u.
A!renieno OOo Basic #F%
A i2erencia e los es"ilos e cela* cuano borras un au"o2orma"o* las celas
es"ablecias con es"e* !ermanecen con ic0o 2orma"o* lo ?nico es 7ue el au"o2orma"o borrao* .a
no es"ar< is!onible !ara usarse* !or lo 7ue "enemos 7ue crearlo e nuevo+ Para crear un
au"o2orma"o* !rimero 0a. 7ue saber (. en"ener) como es"a es"ruc"urao* observa la siguien"e
"abla=
1
a
Columna
1
a
Columna
de datos
2
a
Columna
de datos
:ltima Columna
Encabe9ado
1a Fila
$ 1 # @
1a Fila
de datos
F 5 G %
2a Fila
de datos
, - 1$ 11
+ie de 5abla
:ltima Fila
1# 1@ 1F 15
Un au"o2orma"o* no es m<s 7ue una colecci5n e 2orma"os e celas iniviuales* caa
cruce e columna . 2ila re!resen"a un es"ilo e cela* 7ue* como !or<s no"ar* "enemos 1G es"ilos
i2eren"es 7ue !oemos es"ablecer+ /omo .a lo mencionamos* el <rea mnima !ara usar un
au"o2orma"o* es e @ ; @ celas* si "u rango "iene m<s <rea* el 2orma"o e las columnas e a"os
se ira u!licano . al"ernano* lo mismo !asar< con las 2ilas en el sen"io ver"ical+ Observa la
siguien"e imagen* en la !ar"e su!erior* es"<n nues"ros a"os sin 2orma"o (L!elonesM icen en mi
!ueblo)* . en la !ar"e in2erior* como es 7ue 7ueremos 7ue 7uee* como !or<s no"ar* so. una
nulia !ara el iseKo* as 7ue no "e !ongas mu. es"ric"o+
Para crear el au"o2orma"o an"erior* usamos la siguien"e macro* "e recuero 7ue el
2orma"o e caa cela (cam!o) el au"o2orma"o* "iene las mismas carac"ers"icas e 2orma"o e las
celas vis"as an"eriormen"e (aun7ue no es !osible a!licar "oos los 2orma"os !resen"es
normalmen"e en celas)* !or lo 7ue no comen"ar4 esa !ar"e* vamos a 2orma"ear 1G celas* as 7ue
ser< una macro un !oco m<s larga e las 7ue 0emos venio !robano* !ero mu. sencilla !or 7ue
se re!i"e bas"an"e el c5igo* veamos=
#F, G+5 (ano 2orma"o
"u. $'%a'!u&oJo'(a&o23
@+( o!u&oJo'(a&os !s >.)%*&
@+( o<u%8o!J !s >.)%*&
@+( s<o(.'%!J !s "&'+ng
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( oBo'd%5+n%a !s <%^ *o(-sun-s&a'-&a.l%-Bo'd%'5+n%
@+( oBo'd%Ha.la !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%Bo'd%'
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
o<u%8o!J A o@o*-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-Ha.l%!u&oJo'(a&"3
o!u&oJo'(a&os A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-sh%%&-Ha.l%!u&oJo'(a&s"3
s<o(.'%!J A "M+Jo'(a&o<u%8o"
,1%'+f+*a(os Fu% no %x+s&a
#f <o& o!u&oJo'(a&os-hasB?<a(%2 s<o(.'%!J 3 Hh%n
,5o ag'%ga(os a la *ol%**+Kn d% !u&oJo'(a&os
o!u&oJo'(a&os-+ns%'&B?<a(%2 s<o(.'%!J6 o<u%8o!J 3
,5% da(os fo'(a&o a *ada *%lda
U+&h oBo'd%5+n%a
-$olo' A 255
->u&%'5+n%U+d&h A 60
End U+&h
U+&h oBo'd%Ha.la
-Ho75+n% A oBo'd%5+n%a
-#sHo75+n%1al+d A H'u%
-Bo&&o(5+n% A oBo'd%5+n%a
-#sBo&&o(5+n%1al+d A H'u%
-5%f&5+n% A oBo'd%5+n%a
-#s5%f&5+n%1al+d A H'u%
-R+gh&5+n% A oBo'd%5+n%a
-#sR+gh&5+n%1al+d A H'u%
End U+&h
,$%lda 0
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2036 167116806 167772156 "5+.%'a&+on "ans"6 136
oBo'd%Ha.la6 1506 26 2 3
,$%lda 1
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2136 167116806 167772156 "5+.%'a&+on "ans"6 136
oBo'd%Ha.la6 1506 26 2 3
,$%lda 2
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2236 167116806 167772156 "5+.%'a&+on "ans"6 136
oBo'd%Ha.la6 1506 26 2 3
,$%lda 3
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2336 167116806 167772156 "5+.%'a&+on "ans"6 136
oBo'd%Ha.la6 1506 26 2 3
,$%lda 4
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2436 134217726 26215936 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 36 2 3
,$%lda 5
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2536 134217726 06 "5+.%'a&+on "ans"6 106
oBo'd%Ha.la6 1006 06 2 3
,$%lda 6
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2636 134217726 06 "5+.%'a&+on "ans"6 106
oBo'd%Ha.la6 1006 06 2 3
,$%lda 7
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2736 26215936 167772156 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 06 2 3
,$%lda 8
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2836 134217726 26215936 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 36 2 3
,$%lda 9
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x2936 167640576 06 "5+.%'a&+on "ans"6 106
oBo'd%Ha.la6 1506 06 2 3
,$%lda 10
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21036 167640576 06 "5+.%'a&+on "ans"6 106
oBo'd%Ha.la6 1506 06 2 3
A!renieno OOo Basic #F-
,$%lda 11
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21136 26215936 167772156 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 06 2 3
,$%lda 12
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21236 26215936 167772156 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 36 2 3
,$%lda 13
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21336 26215936 167772156 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 06 2 3
,$%lda 14
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21436 26215936 167772156 "5+.%'a&+on "ans"6 126
oBo'd%Ha.la6 1506 06 2 3
,$%lda 15
$all Jo'(a&%a'$a(7o!J2 o<u%8o!J-g%&B?#nd%x21536 134217726 06 "5+.%'a&+on "ans"6 106
oBo'd%Ha.la6 1506 06 2 3
,@% fo'(a 7'%d%&%'(+nada +n*lu+(os &odos las o7*+on%s
U+&h o<u%8o!J
-#n*lud%<u(.%'Jo'(a& A H'u%
-#n*lud%Ba*]g'ound A H'u%
-#n*lud%Bo'd%' A H'u%
-#n*lud%Jon& A H'u%
-#n*lud%[us&+f? A H'u%
-#n*lud%<u(.%'Jo'(a& A H'u%
-#n*lud%U+d&h!ndH%+gh& A H'u%
End U+&h
,"olo lo a7l+*a(os s+ la s%l%**+Kn %s un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o"%l-au&oJo'(a&2 s<o(.'%!J 3
End #f
Els%
,"+ %x+s&% %l fo'(a&o lo a7l+*anos
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o"%l-au&oJo'(a&2 s<o(.'%!J 3
End #f
End #f
End "u.
,0u%d%s ag'%ga' &odas las 7'o7+%dad%s Fu% *ons+d%'%s
"u. Jo'(a&%a'$a(7o!J2$a(7o !s >.)%*&6 $olo'Jondo !s 5ong6 $olo'Ju%n&% !s 5ong6 Ju%n&% !s "&'+ng6
Ha(Ju%n&% !s #n&%g%'6 Bo'd%s !s >.)%*&6 <%g'+&as !s #n&%g%'6 H[ !s B?&%6 1[ !s B?&%3
U+&h $a(7o
-$%llBa*]$olo' A $olo'Jondo
-$ha'$olo' A $olo'Ju%n&%
-$ha'Jon&<a(% A Ju%n&%
-$ha'H%+gh& A Ha(Ju%n&%
-Ha.l%Bo'd%' A Bo'd%s
-$ha'U%+gh& A <%g'+&as
-Ho'+[us&+f? A H[
-1%'&[us&+f? A 1[
End U+&h
End "u.
)a macro an"erior "iene unas !e7ueKas i2erencias con la imagen mos"raa al inicio
e ella* "u "area es no"ar las i2erencias* as mismo* "iene una !e7ueKa e2iciencia 7ue "ambi4n
"ienes 7ue encon"rar* no es"a i2cil* solo "ienes 7ue ser un !oco observaor+ Observa 7ue
0acemos uso e una subru"ina (macro) e a!o.o !ara arle 2orma"o a caa cam!o el
au"o2orma"o* solo es"o. consierano las !ro!ieaes m<s re!resen"a"ivas* !or su!ues"o* !uees
#5$ G+5 (ano 2orma"o
com!lemen"arla con "oas las 7ue necesi"es !ues es"os cam!os "ienen m<s e cuaren"a
!ro!ieaes+
=.!.) Formato de pF*ina
>l 2orma"o e !<gina* siem!re "iene 7ue es"ablecerse !or meio e un es"ilo e
!<gina* es"e* en con3un"o con o"ra serie e !ro!ieaes e la 0o3a one es"4s "raba3ano* "e ar<
con"rol com!le"o sobre el 2orma"o e !<gina+ )a siguien"e macro "e mues"ra en un cuaro e
mensa3e* la lis"a e 2orma"os e !<gina e;is"en"es en el ocumen"o ese el cual se e3ecu"a=
"u. Jo'(a&o0ag+na123
@+( o@o* !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
,!**%d%(os al do*u(%n&o a*&ual
o@o* A Hh+s$o(7on%n&
,!**%d%(os a &odos los %s&+los
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
,!**%d%(os a los %s&+los d% 7=g+na
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
,Mos&'a(os sus no(.'%s
MsgBox [o+n2 oEs&+los0ag+na-g%&El%(%n&<a(%s236 $h'2133 3
End "u.
6eri2ica 7ue e2ec"ivamen"e sean los es"ilos 7ue "ienes* ve a "u 0o3a . !resiona la "ecla
'11 !ara abrir el cuaro e ialogo L"stilo ) 5ormatoM* selecciona los es"ilos e !<gina* la lis"a
ebera ser igual a la 7ue "e evuelve la macro an"erior+
Para saber 7ue es"ilo e !<gina "enemos en nues"ra 0o3a ac"iva* usamos=
"u. Jo'(a&o0ag+na223
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,1%'+f+*a(os %l no(.'% d%l %s&+lo a*&ual
MsgBox oHo)a!*&+8a-0ag%"&?l%
A!renieno OOo Basic #51
End "u.
Para a!licar el es"ilo e !<gina 7ue 7uieras* usamos la siguien"e macro=
"u. Jo'(a&o0ag+na323
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
sEs&+lo A "R%7o'&"
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
,1%'+f+*a(os Fu% %l no(.'% d%l %s&+lo %x+s&a
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
,"+ %x+s&% lo a7l+*a(os
oHo)a!*&+8a-0ag%"&?l%2 sEs&+lo 3
Els%
MsgBox "<o s% a7l+*o n+ng;n %s&+lo d% 7=g+na"
End #f
End "u.
/on el siguien"e e3em!lo* mos"ramos algunas !ro!ieaes el es"ilo e !<gina
!ree"erminao+
"u. Jo'(a&o0ag+na423
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
@+( oE0 !s >.)%*&
sEs&+lo A "@%faul&"
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
oE0 A oEs&+los0ag+na-g%&B?<a(%2 sEs&+lo 3
,!n*ho ? al&o d% la 7=g+na
MsgBox oE0-U+d&h 9 " T " 9 oE0-H%+gh&
,Ma'g%n su7%'+o' % +nf%'+o'
MsgBox oE0-Ho7Ma'g+n 9 " T " 9 oE0-Bo&&o(Ma'g+n
,Ma'g%n +:Fu+%'do ? d%'%*ho
MsgBox oE0-5%f&Ma'g+n 9 " T " 9 oE0-R+gh&Ma'g+n
End #f
End "u.
Para borrar un es"ilo* usamos el m4"oo remo%e!)2ame e la siguien"e manera=
"u. Jo'(a&o0ag+na523
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
#5# G+5 (ano 2orma"o
sEs&+lo A "1+d%o&%*a"
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
#f MsgBox2"MEs&as s%gu'o d% .o''a' %l %s&+lo d% 7=g+naN"6 363 A 6 Hh%n
,Bo''a(os %l %s&+lo
oEs&+los0ag+na-'%(o8%B?<a(%2 sEs&+lo 3
MsgBox "Es&+lo .o''ado"
Els%
MsgBox "El %s&+lo no s% .o''o"
End #f
Els%
MsgBox "<o %x+s&% %l %s&+lo d% 7=g+na"
End #f
End "u.
Ten cuiao con la macro an"erior* en"ro e la in"er2az el usuario* los es"ilos
Ae!or"e (Ae!or") . Pree"erminao ((e2aul") no se !ueen borrar* !ero !or c5igo si 7ue se
!uee* si llegas a borrar L"oosM los es"ilos* .a no !or<s 0ace uso el men? 5ormato | (gina* si
no me crees . "e gus"a e;!erimen"ar como a mi* borra "oos los es"ilos !ara veri2icarlo* !ero*
aun7ue los borres* las 0o3as nuevas* al es"ar basaas en la !lan"illa !ree"erminaa* "enr<n e
nuevo los es"ilos !ree"erminaos* claro* si los borras e la !lan"illa* si 7ue "e 7uear<s sin es"ilos*
no obs"an"e* !uees volver a crearlos* como en el siguien"e e3em!lo=
"u. Jo'(a&o0ag+na623
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
@+( oE0 !s >.)%*&
sEs&+lo A "1+d%o&%*a"
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
oHo)a!*&+8a-0ag%"&?l%2 sEs&+lo 3
Els%
,$'%a(os un nu%8o %s&+lo
oE0 A o@o*-*'%a&%#ns&an*%2 "*o(-sun-s&a'-s&?l%-0ag%"&?l%" 3
,5o ag'%ga(os a la *ol%**+Kn d% %s&+los
oEs&+los0ag+na-+ns%'&B?<a(%2 sEs&+lo6 oE0 3
,5% da(os fo'(a&o
U+&h oE7
-U+d&h A 27940 ,!n*ho
-H%+gh& A 21590 ,!l&o
-Ho7Ma'g+n A 2000 ,Ma'g%n su7%'+o'
-Bo&&o(Ma'g+n A 2000 ,Ma'g%n +nf%'+o'
-5%f&Ma'g+n A 1000 ,Ma'g%n +:Fu+%'do
-R+gh&Ma'g+n A 1000 ,Ma'g%n d%'%*ho
-#s5ands*a7% A H'u% ,>'+%n&a*+Kn d% la 7=g+na 2ho'+:on&al3
-$%n&%'Ho'+:on&all? A H'u% ,$%n&'ado ho'+:on&al d%l *on&%n+do
-"*al%Ho0ag%sE A 1 ,Cna 7=g+na d% an*ho
-"*al%Ho0ag%sO A 0 ,5as Fu% salgan d% al&o
End U+&h
End #f
End "u.
A!renieno OOo Basic #5@
Observa las carac"ers"icas inicaas en"ro e la misma macro* como icen en mi
!ueblo -ni es"<n "oas las 7ue son* ni son "oas las 7ue es"<n-+ )as carac"ers"icas es"ablecias
son las mismas el men? 5ormato | (gina* 7ue* como !or<s no"ar* son bas"an"es* veamos las
m<s comunes+
>l anc0o (Ni"0) . al"o (ceig0") e la !<gina* se re2iere al "amaKo el !a!el* 0a. 7ue
es"ablecerlos en cen"4simas e milme"ro* es ecir* caa 1$$ uniaes es igual a 1 milme"ro*
es"as !ro!ieaes* "ienes 7ue usarlas correc"amen"e en combinaci5n con la !ro!iea Orien"aci5n
(:s)ansca!e)* es ecir* si es"ableces es"a !ro!iea en veraero (True) es ecir 0orizon"al*
en"onces el anc0o ebe ser ma.or 7ue el al"o* si la es"ableces en 2also ('alse) es ecir ver"ical* el
al"o ebe ser ma.or !ara 7ue lo veas correc"amen"e+ >n el siguien"e e3em!lo* la !rimer 2orma es
correc"a* la seguna no=
U+&h oE7
-U+d&h A 27940 ,!n*ho
-H%+gh& A 21590 ,!l&o
-#s5ands*a7% A H'u% ,>'+%n&a*+Kn d% la 7=g+na 2ho'+:on&al3
End U+&h
U+&h oE7
-U+d&h A 27940 ,!n*ho
-H%+gh& A 21590 ,!l&o
-#s5ands*a7% A Jals% ,>'+%n&a*+Kn d% la 7=g+na 28%'&+*al3
End U+&h
)os margenes "ambi4n es"<n en cen"4simas e milme"ros . se ven a2ec"aos !or el
iseKo e !<gina (PageS".le)a.ou")* es ecir* si es"ableces las !<ginas erec0a e iz7uiera igual
o si las re2le3as* es"e valor es"a e"erminao !or la enumeraci5n PageS".le)a.ou"* cu.os !osibles
valores son los siguien"es=
Propiedad Pa,e4tyleLayout 0alor 0alor en )nterfa2
com+sun+s"ar+s".le+PageS".le)a.ou"+A)) $ (erec0a e iz7uiera
#5F G+5 (ano 2orma"o
Propiedad Pa,e4tyleLayout 0alor 0alor en )nterfa2
com+sun+s"ar+s".le+PageS".le)a.ou"+)>'T 1 Solo iz7uiera
com+sun+s"ar+s".le+PageS".le)a.ou"+A:&cT # Solo erec0a
com+sun+s"ar+s".le+PageS".le)a.ou"+M:AAOA>( @ Ae2le3ao
Puees es"ablecer el valor o la cons"an"e como en el siguien"e e3em!lo=
oE0-0ag%"&?l%5a?ou& A 0
oE0-0ag%"&?l%5a?ou& A *o(-sun-s&a'-s&?l%-0ag%"&?l%5a?ou&-M#RR>RE@
>l 'orma"o* se re2iere al es"ilo e numeraci5n 7ue se usar< cuano se es"ablece la
numeraci5n e !<ginas en el encabezao o en el !ie e !<gina* sus valores van el $ al 5 . se
corres!onen al oren mos"rao en la in"er2az el usuario=
oE0-<u(.%'+ngH?7% A 4
>n Orien"aci5n e la 0o3a* lo correc"a seria* cen"rao el con"enio* !ues eso es lo
7ue realmen"e 0acen es"as !ro!ieaes* !ara el sen"io 0orizon"al (/en"ercorizon"all.) . ver"ical
(/en"er6er"icall.)* son valores booleanos+
oE0-$%n&%'Ho'+:on&all? A H'u%
oE0-$%n&%'1%'&+*all? A Jals%
>n la 2ic0a Bore* "enemos=
A!renieno OOo Basic #55
Para es"ablecer el bore e la !<gina* usamos al es"ruc"ura !order0ine* .a vis"a en
o"ros ca!"ulos* en el siguien"e e3em!lo* es"ablecemos el bore e caa lao e un color i2eren"e=
@+( oBo'd%5+n%a !s <%^ *o(-sun-s&a'-&a.l%-Bo'd%'5+n%
U+&h oBo'd%5+n%a
-$olo' A RDB220060603
-#nn%'5+n%U+d&h A 100 ,5Gn%a +n&%'+o'
->u&%'5+n%U+d&h A 50 ,5Gn%a %x&%'+o'
-5+n%@+s&an*% A 100 ,@+s&an*+a %n&'% lGn%as
End U+&h
oE0-Ho7Bo'd%' A oBo'd%5+n%a
oBo'd%5+n%a-$olo' A RDB206200603
oE0-Bo&&o(Bo'd%' A oBo'd%5+n%a
oBo'd%5+n%a-$olo' A RDB206062003
oE0-5%f&Bo'd%' A oBo'd%5+n%a
oBo'd%5+n%a-$olo' A RDB2200620062003
oE0-R+gh&Bo'd%' A oBo'd%5+n%a
Si 7uieres ver solo una lnea* es"ablece solo una e las lneas* .a sea la in"erior
(:nner)ineNi"0) o la e;"erior (Ou"er)ineNi"0) . no es"ablezcas la is"ancia en"re ellas
()ine(is"ance)* e nuevo* las uniaes son cen"4simas e milme"ros+ )a o!ci5n -istancia al te*to*
se re2iere a la is"ancia en"re los bores . el con"enio* si 7uieres la mis"a is"ancia !ara los cua"ro
bores* como si es"uviera ac"ivaa la casilla e veri2icaci5n Sincronizar* usa la !ro!iea
!order-istance* si 7uieres un is"ancia i2eren"e !ara caa lao* usa las siguien"es !ro!ieaes=
,0a'a s+n*'on+:a' &odos los .o'd%s a -5 ((
oE0-Bo'd%'@+s&an*% A 500
,0a'a %s&a.l%*%' *ada .o'd% d+f%'%n&%
oE0-Ho7Bo'd%'@+s&an*% A 500
oE0-Bo&&o(Bo'd%'@+s&an*% A 1000
oE0-5%f&Bo'd%'@+s&an*% A 1500
oE0-R+gh&Bo'd%'@+s&an*% A 2000
#5G G+5 (ano 2orma"o
)a sombra se es"ablece con la !ro!iea S0ao8'orma"* 7ue es una es"ruc"ura
com+sun+s"ar+"able+S0ao8'orma"* con las siguien"e !ro!ieaes=
U+&h o"o(.'a
-5o*a&+on A 4 ,@ond% %s&a la so(.'a
-"hado^U+d&h A 1000 ,!n*ho d% la so(.'a
-#sH'ans7a'%n& A Jals% ,"+ %s &'ans7a'%n&%
-$olo' A RDB2180618061803 ,$olo'
End U+&h
oE7-"hado^Jo'(a& A o"o(.'a
)a !ro!iea )oca"ion* es"a e"erminaa !or la siguien"e enumeraci5n=
Propiedad 4hado7Location 0alor 0alor en )nterfa2
com+sun+s"ar+"able+S0ao8)oca"ion+NON> $ Ninguna
com+sun+s"ar+"able+S0ao8)oca"ion+TOPQ)>'T 1 Arriba a la iz7uiera
com+sun+s"ar+"able+S0ao8)oca"ion+TOPQA:&cT # Arriba a la erec0a
com+sun+s"ar+"able+S0ao8)oca"ion+BOTTOMQ)>'T @ Aba3o a la iz7uiera
com+sun+s"ar+"able+S0ao8)oca"ion+BOTTOMQA:&cT F Aba3o a la erec0a
Si es"ableces la !ro!iea e "rans!arencia (:sTrans!aren") en veraero (True)* la
sombra no se vera+
)a siguien"e 2ic0a se llama 'ono* veamos su !ro!iea 7ue es mu. sencilla=
oE0-Ba*]$olo' A RDB2200622062403
Tambi4n !oemos es"ablecer una imagen e 2ono* a7u !uees ver a mi novia
Marion /o"illar=
A!renieno OOo Basic #5%
)a ru"a e la imagen la es"ablecemos con !ac7Grap$ic3R0* es im!or"an"e 7ue le
!ases la ru"a en 2orma"o UA)* . !or su!ues"o 7ue la imagen e;is"a* si no* no "e ar< un error !ero
no "e mos"rar< naa* cuia muc0o el "amaKo e las im<genes inser"aas en ocumen"os* si se
usara solo en !an"alla* 7ue es lo usual* no re7uieres ni un gran "amaKo ni una gran resoluci5n+
,Es&a.l%*%(os la 'u&a d% la +(ag%n
oE0-Ba*]D'a7h+*CR5 A $on8%'&HoCR52 "/ho(%/(au/(a'+on-)7g" 3
,O la 7os+*+Kn dond% la Fu%'%(os
oE0-Ba*]D'a7h+*5o*a&+on A 5
)a !osici5n (Bacs&ra!0ic)oca"ion) !uee "omar valores e 1 a 11* e acuero a la
siguien"e imagen* en la o!ci5n drea* "e cubrir< la 0o3a com!le"a con la imagen+
Nos sal"amos el encabezao . !ie e !<gina 7ue !or su com!le3ia veremos al
2inal* . veamos la ul"ima 2ic0a9 co3a* 7ue "iene las siguien"es !ro!ieaes=
#5, G+5 (ano 2orma"o
>l oren e im!resi5n (Oren e !<gina) lo es"ablecemos con la !ro!iea9
(rint-o8n5irst* valor booleano 7ue e7uivale a=
6eraero (True) l (e arriba 0acia aba3o* es!u4s 0acia la erec0a
'also ('alse) l (e iz7uiera a erec0a . 0acia aba3o
oE0-0'+n&@o^nJ+'s& A H'u%
>l valor e (rimer n9m& de pgina* es"a re!resen"ao !or la !ro!iea
5irst(age2umber* valor "i!o en"ero (in"eger) 7ue es"ablece un inicio e numeraci5n e !<gina
i2eren"e e uno+ Ten cuiao si lo usas en con3un"o con el "o"al e 0o3as* !ues "e !uee ar
resul"aos algo e;"raKos* como mos"rar"e co3a 5 e @+
oE0-J+'s&0ag%<u(.%' A 8
)as siguien"es !ro!ieaes solo e"erminan 7ue o!ciones se im!rimir<n . cuales no*
en caa lnea "e mues"ro su e7uivalencia en la in"er2az el usuario=
U+&h oE0
-0'+n&!nno&a&+ons A Jals% ,#(7'+(+' las no&as d% *%ldas
-0'+n&$ha'&s A H'u% ,#(7'+(+' los D'=f+*os
-0'+n&@'a^+ng A H'u% ,#(7'+(+' los >.)%&os d% d+.u)o
-0'+n&Jo'(ulas A Jals% ,#(7'+(+' las fo'(ulas6 %n 8%: d%l '%sul&ado
-0'+n&D'+d A Jals% ,#(7'+(+' la *uad'G*ula d% las *%ldas
-0'+n&H%ad%'s A Jals% ,#(7'+(+' %n*a.%:ados d% f+las ? *olu(nas
-0'+n&>.)%*&s A H'u% ,#(7'+(+' >.)%&os % +(=g%n%s
-0'+n&`%'o1alu%s A H'u% ,#(7'+(+' los 8alo'%s *%'o
End U+&h
)a escala e im!resi5n nos !uee resolver mu. 2<cilmen"e !roblemas e im!resi5n*
la !rimera o!ci5n es aumen"ar o isminuirla seg?n nues"ras necesiaes con la !ro!iea
(ageScale* un valor "i!o en"ero (in"eger) en"re 1$ . F$$* si lo es"ableces 2uera e es"os limi"es* se
a3us"ar< al valor mnimo o m<;imo m<s cercano* "oma en cuen"a 7ue es"e !orcen"a3e e cambio*
solo es visible en la vis"a !reliminar . a la 0ora e im!rimir* en "u in"er2az e usuario no veras
ning?n cambio e "amaKo+
A!renieno OOo Basic #5-
oE0-0ag%"*al% A 80 ,!)us&a(os al 80e d% %s*ala
)a seguna o!ci5n es a3us"ar a un e"erminao n?mero e !<ginas* "ienes 7ue
consierar un a3us"e 5!"imo en"re can"ia e a"os . es"e valor* !ues si "ienes muc0os a"os .
es"ableces un valor e !<ginas mu. !e7ueKo* el 2ac"or e escala se reucir< "an"o 7ue los a"os
no ser<n legibles+
,!)us&a(os a &'%s 7=g+nas d% +(7'%s+Kn
oE0-"*al%Ho0ag%s A 3
Por ul"imo la 7ue m<s me gus"a* !uees es"ablecer un e"erminao n?mero e
!<ginas e anc0o !or o"ro e al"o* !or e3em!lo=
,Es&a.l%*%(os la +(7'%s+Kn %n &'%s d% an*ho 7o' dos d% al&o
oE7-"*al%Ho0ag%sE A 3
oE7-"*al%Ho0ag%sO A 2
Pero es"as !ro!ieaes* son mu. ?"iles en eso granes lis"aos e a"os* mu.
comunes one "ienes muc0as 2ilas . un e"erminao n?mero e columnas 7ue caben en el
anc0o e una 0o3a* .a sea ver"ical u 0orizon"al* si es"ableces el anc0o en 1 . el al"o en $* es"amos
2orzano a usar e;ac"amen"e una e anc0o !or las LnecesariasM e al"o+
,Es&a.l%*%(os la +(7'%s+Kn %n una d% an*ho 7o' las Fu% salgan d% al&o
oE7-"*al%Ho0ag%sE A 1
oE7-"*al%Ho0ag%sO A 0
A0ora si* .a casi !ara "erminar* veamos como moi2icar el encabezao . el !ie e
!<gina e nues"ro es"ilo e !<gina+ )o !rimero 7ue 0a. 7ue 0acer* es ac"ivarlos o esac"ivarlos
seg?n nues"ras necesiaes=
#G$ G+5 (ano 2orma"o
/omo son mu. similares las o!ciones e encabezao . !ie e !<gina* "e ir4
mos"rano sus !ro!ieaes* una 3un"o a o"ra+ Para ac"ivarlos o esac"ivarlos usamos=
,!*&+8a(os %l %n*a.%:ado
oE7-H%ad%'>n A H'u%
,? d%sa*&+8a(os %l 7+% d% 7=g+na
oE7-Joo&%'>n A Jals%
)a o!ci5n Contenido a la iz,uierda:derec$a igual* nos !ermi"e* si es"a esac"ivaa*
es"ablecer las o!ciones e encabezao o !ie e !<gina* e 2orma i2eren"e !ara las !<ginas !ares
e im!ares e nues"ra im!resi5n* es"a o!ci5n* 3un"o con la e -ise;o de pgina vis"a
an"eriormen"e* nos !ermi"en con2igurar nues"ra im!resi5n como si e un libro se "ra"ar<+ Para
ac"ivarla o esac"ivarla usamos=
,5o d%sa*&+8a(os %n %l %n*a.%:ado
oE0-H%ad%'#s"ha'%d A Jals%
,5o a*&+8a(os %n %l 7+% d% 7=g+na
oE0-Joo&%'#s"ha'%d A H'u%
(es!u4s "enemos las o!ciones !ara es"ablecer los margenes en cen"4simas e
milme"ros* es"e margen es is"in"o e ine!enien"e el margen e la !<gina+
,Es&a.l%*%(os los (a'g%n%s d%l %n*a.%:ado %n 3 *(
oE0-H%ad%'R+gh&Ma'g+n A 3000
oE0-H%ad%'5%f&Ma'g+n A 3000
,Es&a.l%*%(os los (a'g%n%s d%l 7+% d% 7=g+na %n 2 *(
oE0-Joo&%'R+gh&Ma'g+n A 2000
oE0-Joo&%'5%f&Ma'g+n A 2000
)a !ro!iea "spacio* se re2iere a la is"ancia en"re en el encabezao o !ie e
!<gina . el con"enio el ocumen"o=
,!)us&a(os la d+s&an*+a d%l %n*a.%:ado al *u%'7o d%l do*u(%n&o
oE0-H%ad%'Bod?@+s&an*% A 500
,!)us&a(os la d+s&an*+a d%l 7+% d% 7=g+na al *u%'7o d%l do*u(%n&o
oE0-Joo&%'Bod?@+s&an*% A 1000
)a !ro!iea Altura* es la al"ura el encabezao o !ie e !<gina* es ecir* el es!acio
is!onible !ara in"roucir in2ormaci5n* !ero "oma en cuen"a 7ue en"ro e es"e valor* es"a
consieraa la is"ancia en"re el encabezao o !ie e !<gina . el cuer!o el ocumen"o* !or lo
7ue si 7uieres una is"ancia absolu"a* ebes e sumarle ic0o valor* como en=
,!)us&a(os la al&u'a d%l %n*a.%:ado su(ando %l %s7a*+o al *u%'7o
oE0-H%ad%'H%+gh& A 2000 B oE0-H%ad%'Bod?@+s&an*%
,O d%l 7+% d% 7=g+na
oE0-Joo&%'H%+gh& A 1000 B oE0-Joo&%'Bod?@+s&an*%
)a !ro!iea Ajuste dinmico de la altura* nos !ermi"e aa!"ar la al"ura al con"enio
el encabezao o !ie e !<gina* si es"a ac"ivaa* la meia in"roucia en la !ro!iea an"erior
no ser< "omaa en cuen"a* es"a !ro!iea es mu. ?"il si es"ablecemos !or c5igo el con"enio e
los encabezaos o !ies e !<gina+ Para ac"ivarla o esac"ivarla* usamos=
,Es&a.l%*%(os la al&u'a d+n=(+*a 7a'a %l %n*a.%:ado
oE0-H%ad%'@?na(+* A H'u%
,5a d%sa*&+8a(os 7a'a %l 7+% d% 7=g+na
A!renieno OOo Basic #G1
oE0-Joo&%'@?na(+* A Jals%
:gual 7ue en el es"ilo e la !<gina* en el encabezao como en el !ie e !<gina*
"enemos las o!ciones e es"ablecer* un bore* una sombra* un color e 2ono o una imagen* la
2orma es la misma* lo 7ue cambia* es a a las !ro!ieaes a 7ue se es"ablecen es"as=
,$onf+gu'a(os %l &+7o d% .o'd%
U+&h oBo'd%5+n%a
-$olo' A RDB206150603
-#nn%'5+n%U+d&h A 0 ,5Gn%a +n&%'+o'
->u&%'5+n%U+d&h A 80 ,5Gn%a %x&%'+o'
End U+&h
,Es&a.l%*%(os %l (+s(o 7a'a &odos
oE0-H%ad%'Ho7Bo'd%' A oBo'd%5+n%a
oE0-H%ad%'Bo&&o(Bo'd%' A oBo'd%5+n%a
oE0-H%ad%'5%f&Bo'd%' A oBo'd%5+n%a
oE0-H%ad%'R+gh&Bo'd%' A oBo'd%5+n%a
,$a(.+a(os %l *olo' 7a'a %l .o'd% d%l 7+% d% 7=g+na
U+&h oBo'd%5+n%a
-$olo' A RDB21506150603
End U+&h
,Es&a.l%*%(os %l (+s(o 7a'a &odos
oE0-Joo&%'Ho7Bo'd%' A oBo'd%5+n%a
oE0-Joo&%'Bo&&o(Bo'd%' A oBo'd%5+n%a
oE0-Joo&%'5%f&Bo'd%' A oBo'd%5+n%a
oE0-Joo&%'R+gh&Bo'd%' A oBo'd%5+n%a
Para la sombra a!lica igual 7ue en es"ilo e !<gina=
,$onf+gu'a(os la so(.'a
U+&h o"o(.'a
-5o*a&+on A 4 ,@ond% %s&a la so(.'a
-"hado^U+d&h A 500 ,!n*ho d% la so(.'a
-$olo' A RDB2150616061703 ,$olo'
End U+&h
,0a'a %l %n*a.%:ado
oE0-H%ad%'"hado^Jo'(a& A o"o(.'a
,0a'a %l 7+% d% 7=g+na
oE0-Joo&%'"hado^Jo'(a& A o"o(.'a
O el color e 2ono+
,Es&a.l%*%(os %l *olo' d% fondo d%l %n*a.%:ado d% fo'(a al%a&o'+a
oE0-H%ad%'Ba*]$olo' A RDB 2 Rnd232556Rnd232556Rnd23255 3
,#gual 7a'a %l 7+% d% 7=g+na
oE0-Joo&%'Ba*]$olo' A RDB 2 Rnd232556Rnd232556Rnd23255 3
Para agregar una imagen* usamos=
,Es&a.l%*%(os la 'u&a d% la +(ag%n
oE0-H%ad%'Ba*]D'a7h+*CR5 A $on8%'&HoCR52 "/ho(%/(au/a''+.a-)7g" 3
,O la 7os+*+Kn dond% la Fu%'%(os
oE0-H%ad%'Ba*]D'a7h+*5o*a&+on A 10
,!ho'a %n %l 7+% d% 7=g+na
oE0-Joo&%'Ba*]D'a7h+*CR5 A $on8%'&HoCR52 "/ho(%/(au/a.a)o-)7g" 3
,O la 7os+*+Kn dond% la Fu%'%(os
oE0-Joo&%'Ba*]D'a7h+*5o*a&+on A 10
Para 7ui"ar una imagen agregaa* "ienes 7ue es"ablecer es"a !ro!iea en vaca+
#G# G+5 (ano 2orma"o
oE0-H%ad%'Ba*]D'a7h+*CR5 A ""
>l con"enio 7ue !uee llevar el encabezao o el !ie e !<gina* es mu. rico* !uees
es"ablecer* e 2orma ine!enien"e* el "i!o e le"ra . su es"ilo e las "res <reas is!onibles* como
se ilus"ra en la siguien"e imagen=
6eamos como con"rolar el con"enio e es"as secciones+ )o !rimero 7ue "enemos
7ue "ener !resen"e* es la o!ci5n vis"a an"eriormen"e9 Contenido a la iz,uierda:derec$a igual& si
es"a !ro!iea es"a seleccionaa* en"onces solo "enemos 7ue moi2icar el con"enio e un lao*
!ero si es"a esac"ivaa* en"onces "enemos 7ue es"ablecer* "an"o el encabezao o !ie e !<gina*
"an"o e las !<ginas !ares como e las im!ares* es"as !ro!ieaes son=
Aig0"Pageceaer/on"en" Para el encabezao e las !<ginas erec0as
)e2"Pageceaer/on"en" Para el encabezao e las !<ginas iz7uieras
Aig0"Page'oo"er/on"en" Para el !ie e !<gina e las !<ginas erec0as
)e2"Page'oo"er/on"en" Para el !ie e !<gina e las !<ginas iz7uieras
Para nues"ro e3em!lo* ao 7ue son las mismas o!ciones !ara uno . o"ro* aremos
!or 0ec0o 7ue las !ro!ieaes (ceaer:sS0are . 'oo"er:sS0are) es"<n seleccionaas* e es"e
moo* solo moi2icamos las !ro!ieaes e las !<ginas erec0as* 7ue ser<n iguales a las e la
iz7uiera* !ero no "e con2unas* aun mani!ulano solo las e las !<ginas erec0as* "enemos
acceso a las "res secciones mos"raas en la imagen an"erior* veamos como=
,Mos&'a(os %l *on&%n+do d% la +:Fu+%'da d%l %n*a.%:ado
MsgBox oE0-R+gh&0ag%H%ad%'$on&%n&-5%f&H%x&-"&'+ng
,@%l *%n&'o
MsgBox oE0-R+gh&0ag%H%ad%'$on&%n&-$%n&%'H%x&-"&'+ng
,O d% la d%'%*ha
MsgBox oE0-R+gh&0ag%H%ad%'$on&%n&-R+gh&H%x&-"&'+ng
6amos a cambiar el "e;"o e mos"rao en el e3em!lo an"erior e las seis secciones
acceibles* "res !ara el encabezao . "res !ara el !ie e !<gina* e la siguien"e manera=
A!renieno OOo Basic #G@
"u. Jo'(a&o0ag+na823
@+( o@o* !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
@+( oE0 !s >.)%*&
@+( o$on&%n+do !s >.)%*&
@+( oH%x&o !s >.)%*&
sEs&+lo A "1+d%o&%*a"
o@o* A Hh+s$o(7on%n&
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
oE0 A oEs&+los0ag+na-g%&B?<a(%2 sEs&+lo 3
oE0-H%ad%'>n A H'u%
oE0-Joo&%'>n A H'u%
,!**%d%(os al *on&%n+do d%l %n*a.%:ado
o$on&%n+do A oE0-R+gh&0ag%H%ad%'$on&%n&23
,!**%d%(os a la 7a'&% +:Fu+%'da
oH%x&o A o$on&%n+do-5%f&H%x&23
,$a(.+a(os %l &%x&o
oH%x&o-"&'+ng A "Es&a %s la +:Fu+%'da" 9 $h'2133 9 "%n %l %n*a.%:ado"
,O %l *olo'
oH%x&o-H%x&-$ha'$olo' A RDB225560603
,R%as+gna(os %l *on&%n+do 7a'a 8%' los *a(.+os
oE0-R+gh&0ag%H%ad%'$on&%n& A o$on&%n+do
,5o (+s(o 7a'a %l *%n&'o d%l %n*a.%:ado
oH%x&o A o$on&%n+do-$%n&%'H%x&23
oH%x&o-"&'+ng A "Es&% %s %l *%n&'o" 9 $h'2133 9 "%n %l %n*a.%:ado"
oH%x&o-H%x&-$ha'$olo' A RDB206255603
oE0-R+gh&0ag%H%ad%'$on&%n& A o$on&%n+do
,O la d%'%*ha
oH%x&o A o$on&%n+do-R+gh&H%x&23
oH%x&o-"&'+ng A "Es&a %s la d%'%*ha" 9 $h'2133 9 "%n %l %n*a.%:ado"
oH%x&o-H%x&-$ha'$olo' A RDB206062553
oE0-R+gh&0ag%H%ad%'$on&%n& A o$on&%n+do
,!ho'a (od+f+*a(os %l 7+% d% 7=g+na
o$on&%n+do A oE0-R+gh&0ag%Joo&%'$on&%n&23
oH%x&o A o$on&%n+do-5%f&H%x&23
oH%x&o-"&'+ng A "Es&a %s la +:Fu+%'da" 9 $h'2133 9 "%n %l 7+% d% 7=g+na"
oH%x&o-H%x&-$ha'$olo' A RDB206062553
oE0-R+gh&0ag%Joo&%'$on&%n& A o$on&%n+do
oH%x&o A o$on&%n+do-$%n&%'H%x&23
oH%x&o-"&'+ng A "Es&% %s %l *%n&'o" 9 $h'2133 9 "%n %l 7+% d% 7=g+na"
oH%x&o-H%x&-$ha'$olo' A RDB206255603
oE0-R+gh&0ag%Joo&%'$on&%n& A o$on&%n+do
oH%x&o A o$on&%n+do-R+gh&H%x&23
oH%x&o-"&'+ng A "Es&a %s la d%'%*ha" 9 $h'2133 9 "%n %l 7+% d% 7=g+na"
oH%x&o-H%x&-$ha'$olo' A RDB225560603
oE0-R+gh&0ag%Joo&%'$on&%n& A o$on&%n+do
End #f
End "u.
/omo sabes* 0a. una serie e cam!os !ree"erminaos 7ue !oemos incluir en
cual7uier <rea e un encabezao o e un !ie e !<gina* cam!os como* la 2ec0a* la 0ora* el
n?mero e !<gina . el "o"al e !<ginas* veamos como inser"arlos+
#GF G+5 (ano 2orma"o
"u. Jo'(a&o0ag+na923
@+( o@o* !s >.)%*&
@+( oEs&+los !s >.)%*&
@+( oEs&+los0ag+na !s >.)%*&
@+( sEs&+lo !s "&'+ng
@+( oE0 !s >.)%*&
@+( o$on&%n+do !s >.)%*&
@+( oH%x&o !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( o$a(7o !s >.)%*&
sEs&+lo A "1+d%o&%*a"
o@o* A Hh+s$o(7on%n&
oEs&+los A o@o*-g%&"&?l%Ja(+l+%s23
oEs&+los0ag+na A oEs&+los-g%&B?<a(%2"0ag%"&?l%s"3
#f oEs&+los0ag+na-hasB?<a(%2 sEs&+lo 3 Hh%n
oE0 A oEs&+los0ag+na-g%&B?<a(%2 sEs&+lo 3
oE0-H%ad%'>n A H'u%
oE0-Joo&%'>n A H'u%
,!**%d%(os al *on&%n+do d%l 7+% d% 7=g+na
o$on&%n+do A oE0-R+gh&0ag%Joo&%'$on&%n&23
,$'%a(os una +ns&an*+a d%l *a(7o <o(.'% d%l a'*h+8o
o$a(7o A o@o*-*'%a&%#ns&an*% 2"*o(-sun-s&a'-&%x&-H%x&J+%ld-J+l%<a(%"3
,5+(7+a(os las &'%s s%**+on%s
o$on&%n+do-5%f&H%x&-"&'+ng A ""
o$on&%n+do-$%n&%'H%x&-"&'+ng A ""
o$on&%n+do-R+gh&H%x&-"&'+ng A ""
,$'%a(os un *u'so' %n %sa s%**+Kn
o$u'so' A o$on&%n+do-5%f&H%x&-*'%a&%H%x&$u'so'23
,<os (o8%(os al f+nal
o$u'so'-go&oEnd2 Jals% 3
,#ns%'&a(os %l *a(7o
o$on&%n+do-5%f&H%x&-+ns%'&H%x&$on&%n& 2o$u'so'6 o$a(7o6 H'u%3
,$'%a(os %l *a(7o <;(%'o d% 7=g+na
o$a(7o A o@o*-*'%a&%#ns&an*% 2"*o(-sun-s&a'-&%x&-H%x&J+%ld-0ag%<u(.%'"3
,$'%a(os un *u'so' %n la s%**+Kn *%n&'al
o$u'so' A o$on&%n+do-$%n&%'H%x&-*'%a&%H%x&$u'so'23
o$u'so'-go&oEnd2 Jals% 3 ,<os (o8%(os
o$u'so'-"&'+ng A "0=g+na " ,#ns%'&a(os un &%x&o
o$u'so'-go&oEnd2 Jals% 3 ,<os (o8%(os
,#ns%'&a(os %l *a(7o
o$on&%n+do-$%n&%'H%x&-+ns%'&H%x&$on&%n& 2o$u'so'6 o$a(7o6 H'u%3
o$u'so'-go&oEnd2 Jals% 3 ,<os (o8%(os
o$u'so'-"&'+ng A " d% " ,#ns%'&a(os (=s &%x&o
o$u'so'-go&oEnd2 Jals% 3 ,<os (o8%(os
,$'%a(os %l *a(7o6 Ho&al d% 7=g+nas
o$a(7o A o@o*-*'%a&%#ns&an*% 2"*o(-sun-s&a'-&%x&-H%x&J+%ld-0ag%$oun&"3
,5o +ns%'&a(os
o$on&%n+do-$%n&%'H%x&-+ns%'&H%x&$on&%n& 2o$u'so'6 o$a(7o6 H'u%3
,$'%a(os %l *a(7o d% J%*ha
o$a(7o A o@o*-*'%a&%#ns&an*% 2"*o(-sun-s&a'-&%x&-H%x&J+%ld-@a&%H+(%"3
o$a(7o-#s@a&% A H'u% ,Es una f%*ha
,$'%a(os un *u'so' %n la s%**+Kn d%'%*ha
o$u'so' A o$on&%n+do-R+gh&H%x&-*'%a&%H%x&$u'so'23
o$u'so'-go&oEnd2 Jals% 3 ,<os (o8%(os
,#ns%'&a(os %l *a(7o
o$on&%n+do-R+gh&H%x&-+ns%'&H%x&$on&%n& 2o$u'so'6 o$a(7o6 H'u%3
,!*&ual+:a(os %l *on&%n+do d%l 7+% d% 7=g+na
oE0-R+gh&0ag%Joo&%'$on&%n& A o$on&%n+do
End #f
End "u.
A!renieno OOo Basic #G5
=.!.! Formato condicional
>l 2orma"o conicional nos !ermi"e* e acuero al resul"ao e una e;!resi5n o
2ormula* 2orma"ear una cela con i2eren"es es"ilos* es"o es im!or"an"e* solo !uees a!licar es"ilos
e celas e;is"en"es* !or lo 7ue asegura"e e "ener algunos e !rueba+ Puees es"ablecer e una
a "res coniciones* 7ue se evaluar<n una a una* veamos una !rimer conici5n sencilla=
"u. Jo'(a&o$ond+*+onal123
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ$ !s >.)%*&
@+( ($ond+*+on%s233 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "!1" 3
,!**%d%(os al fo'(a&o *ond+*+onal
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
,5+(7+a(os *ualFu+%' fo'(a&o %x+s&%n&%6 s+ no lo ha*%s6 las *ond+*+on%s
,s% ag'%ga'=n *o(o s%gunda o &%'*% *ond+*+Kn s%g;n *o''%s7onda
oJ$-*l%a'23
,Es&a.l%*%(os las *ond+*+on%s d%l fo'(a&o
($ond+*+on%s203-<a(% A ">7%'a&o'"
,El o7%'ado' A
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-EPC!5
($ond+*+on%s213-<a(% A "Jo'(ula1"
,El 8alo' d% la fo'(ula 16 %s d%*+'6 s+ la *%lda A 100
($ond+*+on%s213-1alu% A "100"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
,En *aso d% Fu% s% *u(7la la *ond+*+on%s6 a7l+*a(os %l %s&+lo R%sal&ado16
,'%*u%'da Fu% d%.%s d% *'%a'lo 7'%8+a(%n&%
($ond+*+on%s223-1alu% A "R%sal&ado1"
,!g'%ga(os las *ond+*+on%s al fo'(a&o
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
End "u.
Acabamos e agregar* a la cela A1* la conici5n e 7ue* si el valor e la cela es
igual a 1$$* le es"ablezca el es"ilo e cela Aesal"ao1* si el es"ilo no e;is"e* no "e ar< ning?n
error* sim!lemen"e no a!licar< ning?n 2orma"o* veri2i7uemos 7ue la agrego correc"amen"e=
#GG G+5 (ano 2orma"o
A0ora in"en"emos* agregar os coniciones en vez e una* !or e3em!lo* a la cela
/1* si es igual a 5$ un es"ilo . si es ma.or a 5$ o"ro es"ilo* 7ue 7ueara as=
"u. Jo'(a&o$ond+*+onal223
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ$ !s >.)%*&
@+( ($ond+*+on%s233 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "$1" 3
,!**%d%(os al fo'(a&o *ond+*+onal
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
oJ$-*l%a'23
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-EPC!5
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "50"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A "Ro)a"
oJ$-add<%^ 2 ($ond+*+on%s23 3
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-DRE!HER
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "50"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A "!:ul"
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
End "u.
Observa la ma"riz e !ro!ieaes m/oniciones* es"a 2orma e es"ablecer !ares e
!ro!ieaes con un nombre (Name) . un valor (6alue)* .a la 0emos usao an"eriormen"e !or lo
7ue no "e ebe ser esconocia* la !ro!iea o!eraor (O!era"or)* es una enumeraci5n 7ue
!uee "ener los siguien"e valores=
com(sun(star(sheet(ConditionOperator 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NON> $ Ninguna
com+sun+s"ar+s0ee"+/oni"ionO!era"or+>eUA) 1 :gual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NOTQ>eUA) # (is"in"a e
com+sun+s"ar+s0ee"+/oni"ionO!era"or+&A>AT>A @ Ma.or 7ue
com+sun+s"ar+s0ee"+/oni"ionO!era"or+&A>AT>AQ>eUA) F Ma.or o igual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+)>SS 5 Menor 7ue
com+sun+s"ar+s0ee"+/oni"ionO!era"or+)>SSQ>eUA) G Menor o igual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+B>TN>>N % >n"re
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NOTQB>TN>>N , No en"re
com+sun+s"ar+s0ee"+/oni"ionO!era"or+'OAMU)A - 'ormula
A!renieno OOo Basic #G%
6eamos como es"ablecer las coniciones !ara evaluar en"re un !ar e valores=
"u. Jo'(a&o$ond+*+onal323
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ$ !s >.)%*&
@+( ($ond+*+on%s233 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B14B10" 3
,!**%d%(os al fo'(a&o *ond+*+onal
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
oJ$-*l%a'23
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE<
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "0"
($ond+*+on%s223-<a(% A "Jo'(ula2"
($ond+*+on%s223-1alu% A "5"
($ond+*+on%s233-<a(% A ""&?l%<a(%"
($ond+*+on%s233-1alu% A "R%7'o.ado"
oJ$-add<%^ 2 ($ond+*+on%s23 3
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE<
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "6"
($ond+*+on%s223-<a(% A "Jo'(ula2"
($ond+*+on%s223-1alu% A "8"
($ond+*+on%s233-<a(% A ""&?l%<a(%"
($ond+*+on%s233-1alu% A ""uf+*+%n&%"
oJ$-add<%^ 2 ($ond+*+on%s23 3
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE<
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "9"
($ond+*+on%s223-<a(% A "Jo'(ula2"
($ond+*+on%s223-1alu% A "10"
($ond+*+on%s233-<a(% A ""&?l%<a(%"
($ond+*+on%s233-1alu% A "Ex*%l%n&%"
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
End "u.
Observa 7ue a0ora 0emos usao la !ro!iea 'ormula1 . 'ormula# !ara ar el
in"ervalo e valores 7ue nos in"eresa evaluar* en"re $ . 5* en"re G . , . !or ul"imo en"re - . 1$*
"ambi4n observa 7ue a0ora* en vez e a!licar el 2orma"o conicional a una sola cela* lo 0emos
0ec0o a un rango e celas* en es"e caso* LB1=B1$+
(one realmen"e me !arece* se ve la nobleza el 2orma"o conicional* es con el uso
e 2ormulas* !ues nos a un margen am!lsimo !ara es"ablecer las coniciones* !or e3em!lo*
su!ongamos 7ue "enemos un rango e celas con 2ec0as . 7ueremos 7ue los s<baos .
omingos se is"ingan e los em<s as* crea os es"ilos e cela nuevos* uno !ara los s<baos
. o"ro !ara los omingos* creamos su 2orma"o conicional con el siguien"e e3em!lo=
#G, G+5 (ano 2orma"o
"u. Jo'(a&o$ond+*+onal423
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ$ !s >.)%*&
@+( ($ond+*+on%s233 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "#24[32" 3
,!**%d%(os al fo'(a&o *ond+*+onal
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
oJ$-*l%a'23
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-J>RMC5!
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "UEEI@!O2!13A7"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A ""a.ados"
oJ$-add<%^ 2 ($ond+*+on%s23 3
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-J>RMC5!
($ond+*+on%s213-<a(% A "Jo'(ula1"
($ond+*+on%s213-1alu% A "UEEI@!O2!13A1"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A "@o(+ngos"
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
End "u.
Observa como 0emos es"ablecio el valor (6alue) e la !ro!iea 'ormula1*
es"amos 0acieno uso e una 2unci5n incor!oraa (:AS>M (N>>t(AO) e /alc* 7ue nos
evuelve el a e la semana 7ue corres!ona a la 2ec0a !asaa como argumen"o9 (omingol1*
)unesl#* e"c* no"a como* al ser una 2unci5n e /alc* si es"a lleva argumen"os* 2orzosamen"e 0a.
7ue !ro!orcion<rselos* observa 7ue nues"ro rango em!ieza en :# . a la 2unci5n le es"amos
!asano la cela A1* no "e con2unas* le ecimos 7ue es la cela A1 !or 7ue la re2erencia es
Lrela"ivaM* el valor 7ue 7ueremos evaluar* es el e la misma cela :#* :@* e"c* el 2orma"o
conicional* a3us"ar< correc"amen"e las re2erencias a caa cela* !or su!ues"o* com!ruebalo+
6amos a crear un 2orma"o conicional un !oco m<s elaborao* !ero m<s iver"io+
Observa el !ar e lis"as en la imagen siguien"e=
A!renieno OOo Basic #G-
)a "area* es 0acer un 2orma"o conicional 7ue nos resal"e los meses 7ue 2al"an en
una . o"ra lis"a+ Por su!ues"o* an"es e ver la soluci5n* "ra"a e resolverlo !or "i mismo* !rimero "e
mues"ro la imagen con el resul"ao* !ara 7ue veas 7ue es !osible* es!u4s viene la macro con la
soluci5n 7ue no "ienes 7ue ver 0as"a 7ue in"en"es resolverlo* con2o en "i+ Observa como 0emos
sa"is2ec0o la conici5n* es"<n resal"aos con 2ono gris* 2uen"e azul . negri"as* los meses 7ue LnoM
es"<n en caa lis"a* !or su!ues"o* es"o 2unciona con cual7uier !ar e lis"as+
A0ora la soluci5n=
"u. Jo'(a&o$ond+*+onal523
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s >.)%*&
@+( oJ$ !s >.)%*&
@+( ($ond+*+on%s233 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "B24B9" 3
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
oJ$-*l%a'23
,$ond+*+on%s 7a'a la 7'+(%' l+s&a
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-J>RMC5!
($ond+*+on%s213-<a(% A "Jo'(ula1"
,>.s%'8a *o(o aho'a usa(os '%f%'%n*+a a.solu&as
($ond+*+on%s213-1alu% A "$>C<H#J2d@d24d@d9f!13A0"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A "Jal&an&%"
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
,0a'a la s%gunda l+s&a
oRango A oHo)a!*&+8a-g%&$%llRang%B?<a(%2 "@24@9" 3
oJ$ A oRango-g%&0'o7%'&?1alu%2"$ond+&+onalJo'(a&"3
oJ$-*l%a'23
($ond+*+on%s203-<a(% A ">7%'a&o'"
($ond+*+on%s203-1alu% A *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-J>RMC5!
($ond+*+on%s213-<a(% A "Jo'(ula1"
,>.s%'8a *o(o aho'a usa(os '%f%'%n*+a a.solu&as
($ond+*+on%s213-1alu% A "$>C<H#J2dBd24dBd9f!13A0"
($ond+*+on%s223-<a(% A ""&?l%<a(%"
($ond+*+on%s223-1alu% A "Jal&an&%"
oJ$-add<%^ 2 ($ond+*+on%s23 3
,R%%s&a.l%*%(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o
#%$ G+5 (ano 2orma"o
oRango-s%&0'o7%'&?1alu%2 "$ond+&+onalJo'(a&"6 oJ$ 3
End "u.
O con es"o "erminamos el "ema e los 2orma"os* 7ue* "e 0abr<s ao cuen"a* muc0as
veces consume muc0o m<s c5igo 7ue o"ras necesiaes+
WW'eliz !rogramaci5nVV
=.= Imprimiendo
)a im!resi5n en O!enO22ice+org es sumamen"e sencilla* !ero ebes e recorar los
elemen"os 7ue es"<n im!licaos en ella* !or e3em!lo* el <rea e im!resi5n* la im!resora
is!onible* el es"ilo e !<gina es"ablecio* en"re o"ros elemen"os 7ue veremos en es"e ca!"ulo+
>l m4"oo usao !ara im!rimir es print . se usa e la siguien"e manera=
"u. #(7'+(+%ndo123
@+( (>7*23
Hh+s$o(7on%n&-0'+n&2 (>7*23 3
End "u.
Observa 7ue sim!le* !ero VcuiaoW* la lnea an"erior !ora enviar"e a im!rimir una
gran can"ia e 0o3as* e!enieno e la con2iguraci5n ac"ual 7ue "engas* usala con cuiao
!ero me3or aun* con"rola "oas las o!ciones e im!resi5n 7ue a!reneremos a7u+
Para mos"rar el nombre e la im!resora ac"iva* usamos=
"u. #(7'+(+%ndo223
@+( (@#23
,Mos&'a(os %l no(.'% d% la +(7'%so'a a*&+8a
(@# A Hh+s$o(7on%n&-g%&0'+n&%'23
MsgBox (@#203-1alu%
End "u.
>l nombre mos"rao e!ener< el nombre regis"rao e "u im!resora en "u S+O+*
!ara cambiar la im!resora a usar* usamos=
"u. #(7'+(+%ndo323
,Ma&'+: 7a'a %l d%s*'+7&o' d% +(7'%s+Kn
@+( (@#223 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
@+( (>7*23
A!renieno OOo Basic #%1
,$a(.+a(os la +(7'%so'a 7a'a +(7'+(+'
(@#203-<a(% A "<a(%"
(@#203-1alu% A "H0/0"$/2200"
,$a(.+a(os la o'+%n&a*+Kn 0 A 1%'&+*al6 1 A Ho'+:on&al
(@#213-<a(% A "0a7%'>'+%n&a&+on"
(@#213-1alu% A 1
,Es&a.l%*%(os las o7*+on%s d% la +(7'%so'a
Hh+s$o(7on%n&-s%&0'+n&%'2 (@# 3
,En8+a(os a +(7'+(+'
Hh+s$o(7on%n&-0'+n&2 (>7*23 3
End "u.
Si la im!resora no es"a regis"raa con ic0o nombre* el lengua3e no "e ar< ni
mos"rar< un error* as 7ue asegura"e e usar el nombre correc"o+ Si bien !oemos cambiar la
orien"aci5n el !a!el !ara im!rimir ese es"e escri!"or* mi recomenaci5n es 7ue solo uses el
escri!"or e im!resi5n !ara cambiar e im!resora* . "oas las em<s o!ciones las es"ablezcas
en un es"ilo e !<gina one "enemos m<s ri7ueza e o!ciones . !ar<me"ros+
>n las o!ciones e im!resi5n "ienes algunas carac"ers"icas !ara con"rolar la
can"ia e co!ias* el oren . las !<ginas 7ue eseamos im!rimir=
"u. #(7'+(+%ndo423
,Ma&'+: 7a'a las o7*+on%s d% +(7'%s+Kn
@+( (>7*223 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
@+( (@#223 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
(@#203-<a(% A "<a(%"
(@#203-1alu% A "H0/5as%'[%&"
(@#213-<a(% A "0a7%'>'+%n&a&+on"
(@#213-1alu% A *o(-sun-s&a'-8+%^-0a7%'>'+%n&a&+on-0>RHR!#H
(@#223-<a(% A "0a7%'Jo'(a&"
(@#223-1alu% A *o(-sun-s&a'-8+%^-0a7%'Jo'(a&-5EHHER
Hh+s$o(7on%n&-s%&0'+n&%'2 (@# 3
,El n;(%'o d% *o7+as
(>7*203-<a(% A "$o7?$oun&"
(>7*203-1alu% A 1
,"+ s% +(7'+(%n %n )u%gos
(>7*213-<a(% A "$olla&%"
(>7*213-1alu% A H'u%
,5as 7=g+nas a +(7'+(+'
(>7*223-<a(% A "0ag%s"
(>7*223-1alu% A "1"
,En8+a(os a +(7'+(+'
Hh+s$o(7on%n&-0'+n&2 (>7*23 3
End "u.
(e es"as o!ciones* la !ro!iea Pa,es* se !uee es"ablecer e las siguien"es
maneras=
Una sola !<gina 1
6arias !<ginas @*,*1#
Un rango e !<ginas 5-1$
/ombinaci5n e las an"eriores F*%*1$-15
#%# G+G :m!rimieno
Asegura"e e !asarle el valor a es"a !ro!iea como una caena e "e;"o* es ecir*
en"re comillas . el valor e la !ro!iea /o!./oun"* como un valor en"ero* si no* "e ar< un error
al 7uerer es"ablecer las o!ciones e im!resi5n+
Observa 7ue en escri!"or e im!resi5n* 0emos es"ablecio el 2orma"o el !a!el*
!ara nues"ro e3em!lo en "amaKo car"a ()>TT>A)* e nuevo* si no "ienes !roblemas con "u
im!resi5n* el "amaKo el !a!el es me3or es"ablecerlo en el es"ilo e !<gina* en mi e;!eriencia*
algunas im!resoras LrebelesM* se niegan a "omar el 2orma"o e !a!el es"ablecio en el 2orma"o e
!<gina* !or ello* se "iene 7ue es"ablecer en el escri!"or e im!resi5n* "e sugiero 0acer "us
!ruebas res!ec"ivas . si no es necesario* solo es"ablece el "amaKo en el es"ilo e !<gina+ )os
valores 7ue !uee "omar es"a !ro!iea son=
com(sun(star(vie7(PaperFormat 0alor 0alor en )nterfa2
com+sun+s"ar+vie8+Pa!er'orma"+A@ $ A@
com+sun+s"ar+vie8+Pa!er'orma"+AF 1 AF
com+sun+s"ar+vie8+Pa!er'orma"+A5 # A5
com+sun+s"ar+vie8+Pa!er'orma"+B5 @ B5
com+sun+s"ar+vie8+Pa!er'orma"+)>TT>A F /ar"a
com+sun+s"ar+vie8+Pa!er'orma"+)>&A) 5 O2icio
com+sun+s"ar+vie8+Pa!er'orma"+TAB)O:( G (oble car"a
com+sun+s"ar+vie8+Pa!er'orma"+US>A % Usuario
No"a 7ue 0as"a a0ora* 0emos usao el ob3e"o T0is/om!onen"* es ecir* el ob3e"o
ese one se llama a la macro* el m4"oo Print es"a !resen"e ese cual7uier arc0ivo e /alc*
!or lo 7ue !uees invocarlo ese cual7uiera+ >n las 0o3as e calculo* "enemos la !osibilia e
e2inir <reas e im!resi5n* 7ue no son m<s 7ue rangos e celas con un nombre* !ero con
algunas carac"ers"icas 7ue los 0acen es!eciales* !or e3em!lo* la !osibilia e re!e"ir una o
varias 2ila o columnas en caa 0o3a e la im!resi5n+ )as o!ciones e las <reas e im!resi5n 7ue
a!reneremos a usar . mani!ular* son las mismas !resen"es en el men? 5ormato | +mprimir
Rangos <=+
Para ob"ener las <reas e im!resi5n ac"uales usamos=
"u. #(7'+(+%ndo523
@+( (!#23
@+( sM%nsa)% !s "&'+ng
(!# A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-g%&0'+n&!'%as23
sM%nsa)% A "5a ho)a a*&+8a &+%n% " 9 Jo'(a&2 CBound2 (!#23 3 B 1 3 9 " ='%as d% +(7'%s+Kn"
MsgBox sM%nsa)%
End "u.
Observa 7ue es"amos ob"enieno (ge"Prin"Areas) las <reas e im!resi5n ese la
0o3a ac"iva !ues es"e m4"oo es"a im!lemen"ao en las 0o3as el arc0ivo* es"e m4"oo "e
evolver< una ma"riz con "oos las <reas e im!resi5n es"ablecias en la 0o3a ese one se
invo7ue* caa elemen"o e es"a ma"riz* "enr< la es"ruc"ura e la irecci5n e un rango e celas*
vis"o m?l"i!les veces a lo largo e es"e libro* e2inio !or com+sun+s"ar+"able+/ellAangeAress+
>n el siguien"e e3em!lo* mos"ramos la irecci5n e caa <rea e im!resi5n si las 0a.=
A!renieno OOo Basic #%@
"u. #(7'+(+%ndo623
@+( (!#23
@+( sM%nsa)% !s "&'+ng
@+( *o1 !s #n&%g%'
(!# A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-g%&0'+n&!'%as23
#f CBound2 (!#23 3 Y T1 Hh%n
Jo' *o1 A 5Bound2(!#3 Ho CBound2(!#3
sM%nsa)% A @+'%**+onRango2 (!#2*o13 3
MsgBox sM%nsa)%
<%x&
Els%
MsgBox "<o ha? ='%a d% +(7'%s+Kn d%f+n+das %n la ho)a a*&+8a"
End #f
End "u.
Jun*&+on @+'%**+onRango2 @+'Rango !s >.)%*&3 !s "&'+ng
@+( sH(7 !s "&'+ng
@+( oRango !s >.)%*&
oRango A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-g%&$%llRang%B?0os+&+on2 /
@+'Rango-"&a'&$olu(n6 @+'Rango-"&a'&Ro^6 @+'Rango-End$olu(n6 @+'Rango-EndRo^3
sH(7 A oRango-g%&"7'%adsh%%&-g%&<a(%23 9 "-" 9 /
oRango-g%&$olu(ns23-g%&B?#nd%x203-g%&<a(%23 9 /
oRango-g%&Rang%!dd'%ss-"&a'&Ro^ B 1 9 "4" 9 /
oRango-g%&$olu(ns23-g%&B?#nd%x2oRango-g%&$olu(ns23-g%&$oun&23T13-g%&<a(%23 9 /
oRango-g%&Rang%!dd'%ss-EndRo^ B 1
@+'%**+onRango A sH(7
End Jun*&+on
Si no "ienes ning?n <rea e im!resi5n e2inia* /alc "omar< "oas las 0o3as con
a"os como is!onibles !ara im!resi5n* mi recomenaci5n es 7ue siem!re es"ablezcas "us <reas
e im!resi5n* es"o "e !ermi"e "ener siem!re el con"rol e lo 7ue se im!rimir<* aem<s e !oer
combinar <reas e i2eren"es 0o3as 7ue al ser im!resas 7uean como si e un solo es"ilo se
"ra"ara+ Para borrar las <reas e im!resi5n e una 0o3a* usamos=
"u. #(7'+(+%ndo723
@+( (!#23
,Bo''a(os &odas las ='%as d% +(7'%s+Kn d% la ho)a a*&+8a
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-s%&0'+n&!'%as2 (!#23 3
End "u.
Observa como sim!lemen"e !as<nole una ma"riz vaca* "oas las <reas e
im!resi5n ser<n borraos* no"a 7ue a0ora es"amos usano el m4"oo setPrintAreas* si la 0o3a no
"iene ning?n <rea ac"ual* es"e m4"oo no "e ar< error+ /omo su!ongo lo 0abr<s eucio* !ara
agregar <reas e im!resi5n* solo "enemos 7ue llenar ic0a ma"riz con irecciones e rango
valios como en el siguien"e e3em!lo=
"u. #(7'+(+%ndo823
@+( (!#213 !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
,Rango !14E5
(!#203-"h%%& A 0
(!#203-"&a'&$olu(n A 0
(!#203-"&a'&Ro^ A 0
(!#203-End$olu(n A 4
(!#203-EndRo^ A 4
#%F G+G :m!rimieno
,Rango I114016
(!#213-"h%%& A 1
(!#213-"&a'&$olu(n A 10
(!#213-"&a'&Ro^ A 10
(!#213-End$olu(n A 15
(!#213-EndRo^ A 15
,!g'%ga(os las ='%as d% +(7'%s+Kn
Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&-s%&0'+n&!'%as2 (!#23 3
End "u.
Si* .a lo no"as"e* 0ice un !oco e L"ram!i"aM* no"a 7ue en el !rimer rango* en la
!ro!iea S$eet* !use $ . en el seguno rango* en es"a misma !ro!iea !use 1* es"o no a2ec"a
el Les"inoM e las <reas e im!resi5n* !ues es"as se agregar<n a la 0o3a ese one es
invocao el m4"oo set(rintAreas* 7ue* !ara nues"ro e3em!lo* es la 0o3a ac"iva* no es"a e m<s
recorar"e 7ue los valores e inicio . 2in* "an"o e columna como e 2ila* eben es"ar en"ro e
rangos v<lios . en el oren correc"o+ >s"a 2orma e agregar <reas e im!resi5n* "e sus"i"u.e las
e;is"en"es* !ero como .a sabes mane3ar ma"rices* "u "area es moi2icar la macro !ara agregar
nuevas sin borrar las e;is"en"es+
A0ora* vamos a es"ablecer las 2ilas 7ue 7ueremos re!e"ir en caa 0o3a e im!resi5n=
"u. #(7'+(+%ndo923
@+( oHo)a!*&+8a !s >.)%*&
@+( (!#203 !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
@+( oJ+lR !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
(!#203-"h%%& A 0
(!#203-"&a'&$olu(n A 0
(!#203-"&a'&Ro^ A 0
(!#203-End$olu(n A 3
(!#203-EndRo^ A 18
oHo)a!*&+8a-s%&0'+n&!'%as2 (!#23 3
,5% d%*+(os Fu% Fu%'%(os &G&ulos d% f+la a '%7%&+'
oHo)a!*&+8a-s%&0'+n&H+&l%Ro^s2H'u%3
,Es&a.l%*%(os %l 'ango d% f+las
oJ+lR-"&a'&Ro^ A 2
>J+lR-EndRo^ A 3
,5as %s&a.l%*%(os
oHo)a!*&+8a-s%&H+&l%Ro^s2 oJ+lR 3
End "u.
No"a 7ue solo 0acemos uso e la 2ila e inicio . 2in* las em<s !ro!ieaes e la
es"ruc"ura CellRangeAddress* no ser<n "omaas en cuen"a* asegura"e e es"ablecer un rango e
2ilas valio+ /uano 0aces uso el m4"oo set.itleRo8s* en "eora* au"om<"icamen"e* la !ro!iea
set(rint.itleRo8s* se es"ablece en veraero (True)* !ero no es"a e m<s 7ue lo es"ablezcas
!rimero* "ambi4n* si es"ableces set(rint.itleRo8s* en veraero (True)* !ero no es"ableces un
rango con set.itleRo8s* e 2orma !ree"erminaa* se es"ablecer< la 2ila 1 como "i"ulo a re!e"ir* el
mismo moo* si es"ableces en set.itleRo8s* una es"ruc"ura vaca* la 2ila 1 ser< es"ablecia+
Para re!e"ir las columnas es similar=
"u. #(7'+(+%ndo1023
@+( oHo)a!*&+8a !s >.)%*&
@+( o$olR !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
A!renieno OOo Basic #%5
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,5% d%*+(os Fu% Fu%'%(os &+&ulos d% *olu(na a '%7%&+'
oHo)a!*&+8a-s%&0'+n&H+&l%$olu(ns2H'u%3
,Es&a.l%*%(os %l 'ango d% $olu(nas !4B
o$olR-"&a'&$olu(n A 0
>$olR-End$olu(n A 1
,5as %s&a.l%*%(os
oHo)a!*&+8a-s%&H+&l%$olu(ns2 o$olR 3
End "u.
>s"os m4"oos "ienen las mismas consieraciones vis"as !ara las 2ilas* si vas a
re!e"ir 2ilas . columnas* !uees 0acer uso e una sola es"ruc"ura CellRangeAddress* los m4"oos
res!ec"ivos omi"ir<n las !ro!ieaes no necesarias !ara ellos* como en=
"u. #(7'+(+%ndo1123
@+( oHo)a!*&+8a !s >.)%*&
@+( oH+&ulosR !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oH+&ulosR-"&a'&$olu(n A 1
oH+&ulosR-End$olu(n A 1
oH+&ulosR-"&a'&Ro^ A 2
oH+&ulosR-EndRo^ A 2
,5os %s&a.l%*%(os
oHo)a!*&+8a-s%&H+&l%$olu(ns2 oH+&ulosR 3
oHo)a!*&+8a-s%&H+&l%Ro^s2 oH+&ulosR 3
End "u.
Si vas al men? +nsertar | Salto Manual <=* veras 7ue "ienes os o!ciones* Sal"o e 2ila
. Sal"o e columna* "u !uees es"ablecer la 2ila o columna 7ue esees como un sal"o e !<gina
manual* es ecir* es"as 2orzano un sal"o e !<gina* veamos como 0acerlo+
"u. #(7'+(+%ndo1223
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Es&a.l%*%(os la f+la 5 *o(o sal&o d% 7=g+na
oHo)a!*&+8a-g%&Ro^s-g%&B?#nd%x243-#s"&a'&>f<%^0ag% A H'u%
,1%'+f+*a(os Fu% s% ha?a %s&a.l%*+do
#f oHo)a!*&+8a-g%&Ro^s-g%&B?#nd%x243-#sManual0ag%B'%a] Hh%n
MsgBox "5a f+la %s un sal&o d% 7=g+na"
End #f
End "u.
No"a como es"amos acceieno a una 2ila (la 5) . la es"ablecemos como inicio e
una nueva !<gina con la !ro!iea9 +sStartOf2e8(age* al es"ablecer es"a !ro!iea en veraero
(True)* es"amos inser"ano un sal"o e !<gina manualmen"e* lo cual veri2icamos con la !ro!iea9
+sManual(age!rea7* !or su!ues"o* !ara 7ui"arlo* solo "ienes 7ue es"ablecerla en 2also ('alse)=
"u. #(7'+(+%ndo1323
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Pu+&a(os %l sal&o d% 7=g+na
oHo)a!*&+8a-g%&Ro^s-g%&B?#nd%x243-#s"&a'&>f<%^0ag% A Jals%
,5o 8%'+f+*a(os
#f <o& oHo)a!*&+8a-g%&Ro^s-g%&B?#nd%x243-#sManual0ag%B'%a] Hh%n
MsgBox "5a f+la <> %s un sal&o d% 7=g+na"
#%G G+G :m!rimieno
End #f
End "u.
)o mismo !ara las columnas=
"u. #(7'+(+%ndo1423
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Es&a.l%*%(os un sal&o d% 7=g+na d% *olu(na
oHo)a!*&+8a-g%&$olu(ns-g%&B?#nd%x223-#s"&a'&>f<%^0ag% A H'u%
,5o 8%'+f+*a(os
#f oHo)a!*&+8a-g%&$olu(ns-g%&B?#nd%x223-#sManual0ag%B'%a] Hh%n
MsgBox "5a *olu(na %s un sal&o d% 7=g+na"
End #f
End "u.
"u. #(7'+(+%ndo1523
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Pu+&a(os un sal&o d% 7=g+na d% *olu(na
oHo)a!*&+8a-g%&$olu(ns-g%&B?#nd%x223-#s"&a'&>f<%^0ag% A Jals%
,5o 8%'+f+*a(os
#f <o& oHo)a!*&+8a-g%&$olu(ns-g%&B?#nd%x223-#sManual0ag%B'%a] Hh%n
MsgBox "5a *olu(na <> %s un sal&o d% 7=g+na"
End #f
End "u.
>n las 0o3as e /alc* "enemos os "i!os e sal"os e !<gina* los au"om<"icos . los
manuales* los !rimeros se inser"an au"om<"icamen"e* e acuero9 al 2orma"o e la !<gina . su
con"enio* los segunos los es"ablecemos noso"ros* con el siguien"e e3em!lo* mos"ramos "oos
los sal"os e !<gina* "an"o e 2ila como e columna 7ue "enga la 0o3a ac"iva e in2ormamos si es
manual o no=
"u. #(7'+(+%ndo1623
@+( oHo)a!*&+8a !s >.)%*&
@+( ("023
@+( *o1 !s #n&%g%'
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,>.&%n%(os &odos los sal&os d% 7=g+na6 7o' f+las6 d% la ho)a a*&+8a
("0 A oHo)a!*&+8a-g%&Ro^0ag%B'%a]s23
,Mos&'a(os los sal&o d% f+la
Jo' *o1 A 5Bound2 ("0 3 Ho CBound2 ("0 3
MsgBox "El sal&o d% 7=g+na %s&a %n la lGn%a4 " 9 ("02*o13-0os+&+on B 1 9 $h'2133 9 /
"Es sal&o (anual4 " 9 ("02*o13-ManualB'%a]
<%x& *o1
,!ho'a los d% *olu(na
("0 A oHo)a!*&+8a-g%&$olu(n0ag%B'%a]s23
Jo' *o1 A 5Bound2 ("0 3 Ho CBound2 ("0 3
MsgBox "El sal&o d% 7=g+na %s&a %n la *olu(na4 " 9 ("02*o13-0os+&+on B 1 9 $h'2133 9 /
"Es sal&o (anual4 " 9 ("02*o13-ManualB'%a]
<%x& *o1
End "u.
Puees 7ui"ar L"oosM* los sal"os e !<ginas* "an"o e 2ila como e columna* con el
siguien"e m4"oo=
"u. #(7'+(+%ndo1723
A!renieno OOo Basic #%%
@+( oHo)a!*&+8a !s >.)%*&
oHo)a!*&+8a A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Pu+&a(os H>@>" los sal&os d% 7=g+nas (anual%s
oHo)a!*&+8a-'%(o8%!llManual0ag%B'%a]s23
End "u.
>l siguien"e e3em!lo* "e inser"a un sal"o e !<gina caa # 2ilas en la selecci5n ac"ual*
!rocura no "ener una selecci5n mu. grane . sobre "oo no manar a im!rimir 7ue "e !oran salir
muc0as 0o3as* ve el resul"ao en "u vis"a !reliminar=
"u. #(7'+(+%ndo1823
@+( o"%l !s >.)%*&
@+( *o1 !s #n&%g%'
o"%l A Hh+s$o(7on%n&-g%&$u''%n&"%l%*&+on23
,#ns%'&a(os un sal&o d% 7=g+na *ada dos f+las
Jo' *o1 A 2 Ho o"%l-g%&Ro^s-g%&$oun&23 T 1 "&%7 2
o"%l-g%&Ro^s-g%&B?#nd%x2*o13-#s"&a'&>f<%^0ag% A H'u%
<%x&
End "u.
Por ul"imo* !ara ver "u vis"a !revia* usa el siguien"e m4"oo* 7ue no me gus"a !ero
!or a0ora es la ?nica 2orma 7ue conozco=
"u. #(7'+(+%ndo1923
@+( o@o*J !s >.)%*&
@+( o@H !s >.)%*&
o@o*J A Hh+s$o(7on%n&-g%&$u''%n&$on&'oll%'-J'a(%
o@H A *'%a&%Cno"%'8+*%2"*o(-sun-s&a'-f'a(%-@+s7a&*hH%l7%'"3
,Mos&'a(os la 8+s&a 7'%8+a
o@H-%x%*u&%@+s7a&*h2o@o*J6 "-uno40'+n&0'%8+%^"6 ""6 06 !''a?233
End "u.
>n versiones an"eriores e OOo* cuano enviabas a im!rimir* e 2orma
!ree"erminaa* se enviaba "oas las 0o3as el ocumen"o* a0ora* como creo* ebe ser* solo se
envan las 0o3as seleccionaas* claro* es"o siem!re lo !uees cambiar ese el cuaro e ialogo
im!rimir en el men? Arc$i%o | +mprimir+++* Para seleccionar varias 0o3as a im!rimir* solo "ienes 7ue
seleccionar un rango e caa una e ellas* !uee ser solo una cela* . agregarlos a un
con"eneor e rangos 7ue .a a!renimos a usar* . seleccionarlos* al seleccionar rangos e
i2eren"es 0o3as* como consecuencia* se seleccionaran las 0o3as 7ue los con"ienen* es!u4s*
!oemos enviar a im!rimir como en el siguien"e e3em!lo=
"u. #(7'+(+%ndo2023
@+( o@o* !s >.)%*&
@+( oHo)as !s >.)%*&
@+( (>7*23
@+( oRangos !s >.)%*&
o@o* A Hh+s$o(7on%n&
oHo)as A o@o*-g%&"h%%&s23
,$'%a(os %l *on&%nd%' 7a'a los 'angos
oRangos A o@o*-*'%a&%#ns&an*%2"*o(-sun-s&a'-sh%%&-"h%%&$%llRang%s"3
,!g'%ga(os la 7'+(%' *%lda d% *ada ho)a6 7u%d% s%' *ualFu+%' *%lda
oRangos-addRang%!dd'%ss2 oHo)as-g%&B?#nd%x263-g%&$%llRang%B?<a(%2"!1"3-g%&Rang%!dd'%ss23 6Jals% 3
oRangos-addRang%!dd'%ss2 oHo)as-g%&B?#nd%x273-g%&$%llRang%B?<a(%2"!1"3-g%&Rang%!dd'%ss23 6Jals% 3
#%, G+G :m!rimieno
oRangos-addRang%!dd'%ss2 oHo)as-g%&B?#nd%x283-g%&$%llRang%B?<a(%2"!1"3-g%&Rang%!dd'%ss23 6Jals% 3
,!l s%l%**+ona' las *%ldas d% d+f%'%n&%s ho)as6 %s&a(os s%l%**+onando d+*has ho)as
o@o*-g%&$u''%n&$on&'oll%'-s%l%*&2 oRangos 3
,En8+a(os a +(7'+(+'
o@o*-7'+n&2 (>7*23 3
End "u.
)a recomenaci5n general* es 7ue siem!re es"ablezcas "us <reas e im!resi5n
correc"amen"e* as como el es"ilo e !<gina con la con2iguraci5n eseaa* con lo cual* la
im!resi5n se 2acili"ar< enormemen"e+
=.A 8an*os de datos
)os rangos e a"os* son <reas rec"angulares e rangos e celas elimi"aos !or*
al menos* una 2ila . una columna en blanco* a las cuales se les es"ablece un nombre . "ienen
carac"ers"icas es!eciales 7ue 2acili"an su uso como si e una base e a"os se "ra"ara+ No
con2unas es"os nombres* con los 7ue !uees e2inir en el cuaro e nombres e la barra e
2ormulas* .a 7ue son is"in"os+ )as ma.or !ar"e e las o!ciones 7ue es"uiaremos en es"e
ca!i"ulo* son las !resen"es en el men? -atos* e la in"er2az el usuario+ >l uso e 0o3as e calculo
con a"os "ra"aos como bases e a"os* es* seg?n mi e;!eriencia* el uso m<s co"iiano ao a
es"a 0erramien"a* . no es gra"ui"o* las 0erramien"as is!onibles !ara "raba3ar con a"os
es"ruc"uraos e es"a manera* !resen"es en /alc* sin 0acer uso e macros* es bas"an"e am!lio*
!oeroso . vers<"il* a0ora* imagna"e lo 7ue se !uee 0acer* au"oma"izano es"os !rocesos+ Si
bien es"e libro no es e bases e a"os e;!lci"amen"e* "e a.uar< muc0o recorar 7ue caa
columna e "u rango e a"os* lo !oemos llamar9 cam!o* . caa 2ila e es"os9 regis"ros+ As
mismo* en la !rimer 2ila e es"os* se es"ablecen los L""ulos e cam!oM* normalmen"e en un 2orma"o
i2eren"e el res"o e los a"os* aun7ue es"a !rimer 2ila no es inis!ensable* es muc0o me3or
"enerla+ Tambi4n* es recomenable* no e3ar ninguna 2ila en blanco* en"re es"a . los a"os* las
2ilas* es ecir* los regis"ros* es me3or si es"<n com!le"os* es ecir* 7ue "oos sus cam!os
con"ienen a"os* e nuevo* es"o no es inis!ensable* !ero una base e a"os se 0ace !ara
llenarse e a"os+ Tam!oco es recomenable e3ar 2ilas com!le"as en blanco+ Tra"a e 7ue "us
a"os sean Lconsis"en"esM* es"o 7uiere ecir 7ue si una columna (cam!o) lo llamas >a*
e2ec"ivamen"e se ca!"uren n?meros* o 2ec0as si la calculas+ >n la ac"ualia 0a. una am!lia
2uen"e e in2ormaci5n !ara una buena cons"rucci5n e "us bases e a"os* e "area* busca algo
acerca el siguien"e "ema= Lnormalizaci5n e bases e a"osM* veras 7ue "ema "an in"eresan"e es+
A!renieno OOo Basic #%-
=.A.1 De2iniendo ran*os
>n el siguien"e e3em!lo* e2inimos un rango e bases e a"os* en la !rimer 0o3a el
ocumen"o* en el rango A1=(#F+
"u. Rango@%@a&os123
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@+' !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
,!**%d%(os al *on)un&o d% los 'angos d% .as%s d% da&os
oRangosB@ A o@o*-@a&aBas%Rang%s23
,El no(.'% d%l nu%8o 'ango
s<o(.'% A "@+'%**+on%s"
,5a d+'%**+Kn d%l nu%8o 'ango
U+&h o@+'
-"h%%& A 0 ,5a ho)a
-"&a'&$olu(n A 0 ,5a *olu(na d% +n+*+o
-End$olu(n A 3 ,5a *olu(na f+nal
-"&a'&Ro^ A 0 ,5a f+la d% +n+*+o
-EndRo^ A 23 ,5a f+la f+nal
End U+&h
,5o ag'%ga(os a la *ol%**+Kn
oRangosB@-add<%^B?<a(%2 s<o(.'%6 o@+' 3
,R%g'%sa(os %l 'ango '%*+Sn ag'%gado
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
U+&h oRB@
-Mo8%$%lls A H'u% ,0a'a Fu% s% a*&ual+*% al +ns%'&a' o %l+(+na' *%ldas
-I%%7Jo'(a&s A H'u% ,0a'a Fu% (an&%nga los fo'(a&os
End U+&h
End "u.
>l nombre el nuevo rango no ebe e e;is"ir o "e ar< un error* en el siguien"e
e3em!lo* solici"amos al usuario el nombre el rango e a"os . "omamos la selecci5n ac"ual como
irecci5n !ara el nuevo rango e a"os* "ambi4n* veri2icamos 7ue no e;is"a el nuevo nombre=
"u. Rango@%@a&os223
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@+' !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,<os as%gu'a(os d% Fu% s%a un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<!(% A ""*$%llRang%>.)" Hh%n
,"ol+*+&a(os %l nu%8o no(.'%
s<o(.'% A H'+(2 #n7u&Box2"Es*'+.% %l no(.'% d%l nu%8o 'ango"3 3
,"+ no %s&a 8a*Go
#f s<o(.'% XY "" Hh%n
oRangosB@ A o@o*-@a&aBas%Rang%s23
,1%'+f+*a(os Fu% no %x+s&a %l no(.'%
#f <o& oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
,O lo ag'%ga(os- >.s%'8a *o(o &o(a(os la d+'%**+Kn d% la s%l%**+Kn
oRangosB@-add<%^B?<a(%2 s<o(.'%6 o"%l-g%&Rang%!dd'%ss23 3
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
U+&h oRB@
-Mo8%$%lls A H'u%
#,$ G+% Aangos e a"os
-I%%7Jo'(a&s A H'u%
End U+&h
Els%
MsgBox "Oa %x+s&% %l no(.'% d%l 'ango"
End #f
Els%
MsgBox "El no(.'% no 7u%d% %s&a' 8a*Go"
End #f
Els%
MsgBox "<o %s un 'ango d% *%ldas"
End #f
End "u.
Para borrar un rango e a"os usamos el m4"oo remo%e!)2ame* "oma en cuen"a
7ue lo ?nico 7ue se borra es el nombre el rango e a"os . sus !ro!ieaes* las celas . sus
valores se man"ienen=
"u. Rango@%@a&os323
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
,El no(.'% d%l 'ango a .o''a'
s<o(.'% A "0'u%.as"
,"+ %l no(.'% no %x+s&% o.&%nd'=s un %''o'
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
,5o '%(o8%(os d% la *ol%**+Kn
oRangosB@-'%(o8%B?<a(%2 s<o(.'% 3
MsgBox "Rango d% da&os .o''ado"
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Poemos cambiar las !ro!ieaes e un rango e a"os e;is"en"e=
"u. Rango@%@a&os423
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
,El no(.'% d%l 'ango a (od+f+*a'
s<o(.'% A "0'u%.as"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,5% *a(.+a(os %l no(.'%
oRB@-s%&<a(% 2"<u%8o no(.'%"3
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
"u. Rango@%@a&os523
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@+' !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
A!renieno OOo Basic #,1
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
,El no(.'% d%l 'ango a (od+f+*a'
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,$a(.+a(os la d+'%**+Kn
U+&h o@+'
-"h%%& A 0 ,$a(.+a(os la ho)a
-"&a'&$olu(n A 2 ,5a *olu(na d% +n+*+o
-End$olu(n A 5 ,5a *olu(na f+nal
-"&a'&Ro^ A 5 ,5a f+la d% +n+*+o
-EndRo^ A 19 ,5a f+la f+nal
End U+&h
oRB@-s%&@a&a!'%a2 o@+' 3
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
>n el !rimer caso le cambiamos el nombre . en el seguno* la irecci5n el rango*
!or su!ues"o* cambia la irecci5n e un rango con cuiao* !uee suceer 7ue acabe a!un"ano
a un rango vaco e celas sin 7uerer+
=.A.2 %rdenar datos
Para orenar a"os* no necesi"as 2orzosamen"e un rango e a"os con nombre*
veamos como orenar un rango e celas con . sin nombre e rango e a"os+ Tomaremos como
a"os e e3em!lo* los siguien"es=
/P /ombre (<o Edad
1 nisole 1-%G @@
# gloria 1-%G @@
@ an"onio 1-%% @#
F liia 1-G% F#
5 !aola 1-%- @$
G vanessa 1-%F @5
% !aola 1-%# @%
, !aola 1-G, F1
- !aola 1-G, F1
1$ lize""e 1-%, @1
11 lize""e 1-%, @1
1# lize""e 1-%, @1
1@ nisole 1-%% @#
1F gloria 1-%5 @F
15 an"onio 1-%- @$
1G liia 1-%% @#
1% !aola 1-G, F1
1, vanessa 1-%, @1
#,# G+% Aangos e a"os
1- lize""e 1-G- F$
#$ nisole 1-%$ @-
#1 gloria 1-%1 @,
## an"onio 1-%@ @G
#@ liia 1-G, F1
6amos a orenar los a"os !or nombre=
"u. >'d%na'@a&os123
@+( oHo)a !s >.)%*&
@+( oRango !s >.)%*&
@+( ($a(7os>'d%n203 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( (@%s*'+7&o'>'d%n23
,5a ho)a dond% %s&a %l 'ango a o'd%na'
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2"agos&o"3
,El 'ango a o'd%na'
oRango A oHo)a-g%&$%llRang%B?<a(%2"!14@24"3
,@%s*'+7&o' d% o'd%na(+%n&o6 o s%a6 %l "*o(o"
(@%s*'+7&o'>'d%n A oRango-*'%a&%"o'&@%s*'+7&o'23
,5os *a(7os a o'd%n6 o s%a6 %l "Fu%"
,5os *a(7os %(7+%:an %n 0
($a(7os>'d%n203-J+%ld A 1
,>'d%n as*%nd%n&%
($a(7os>'d%n203-#s!s*%nd+ng A H'u%
,"%ns+.l% a M!OC"$C5!"/(+nus*ulas
($a(7os>'d%n203-#s$as%"%ns+&+8% A Jals%
,H+7o d% *a(7o !CH>M!H#$>
($a(7os>'d%n203-J+%ldH?7% A *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ldH?7%-!CH>M!H#$
,#nd+*a(os s+ %l 'ango *on&+%n% &G&ulos d% *a(7os
(@%s*'+7&o'>'d%n213-<a(% A "$on&a+nsH%ad%'"
(@%s*'+7&o'>'d%n213-1alu% A H'u%
,5a (a&'+: d% *a(7os a o'd%na'
(@%s*'+7&o'>'d%n233-<a(% A ""o'&J+%lds"
(@%s*'+7&o'>'d%n233-1alu% A ($a(7os>'d%n
,>'d%na(os *on los 7a'=(%&'os %s&a.l%*+dos
oRango-so'&2 (@%s*'+7&o'>'d%n 3
End "u.
)os !un"os a los 7ue ebes !oner a"enci5n son9 el "i!o e cam!o 5ield.)pe* !uee
"omar los siguien"es valores=
com(sun(star(table(3able4ortField3ype 0alor 0alor en )nterfa2
com+sun+s"ar+"able+TableSor"'ielT.!e+AUTOMAT:/ $ Au"om<"ico
com+sun+s"ar+"able+TableSor"'ielT.!e+NUM>A:/ 1 Num4rico
com+sun+s"ar+"able+TableSor"'ielT.!e+A)PcANUM>A:/ # Al2anum4rico
>n mis !ruebas* es"ablecer en uno . en o"ro* no me 0a ao muc0as varian"es en
velocia* es"o es* su!ongo* !or 7ue 0e 0ec0o !ruebas con !ocos a"os* 0abra 7ue 0acer
!ruebas e renimien"o con granes a"os !ara ver su esem!eKo !ues no creo 7ue es"a
!ro!iea es"e e aorno+
>n el escri!"or e oren* si es"ableces la !ro!iea9 ContainsHeader* en 2also
('alse)* . "u rango e a"os e2ec"ivamen"e "iene ""ulos e cam!o* es"os no ser<n "omaos en
cuen"a . se orenaran en relaci5n con el res"o e "us a"os* mi recomenaci5n es 7ue siem!re
A!renieno OOo Basic #,@
es"ablezcas es"a !ro!iea en veraero (True) . e2ec"ivamen"e "e asegures e "enerlos* claro* a
menos e 7ue no "e sea inis!ensable o e !lano no los necesi"es+
Si 7uieres orenar !or m<s e un cam!o (!or a0ora el limi"e es "res)* no 0a. m<s 7ue
agregar el seguno cri"erio a la ma"riz e cam!os* como en el e3em!lo siguien"e 7ue orenamos
!or nombre ascenen"e . es!u4s !or ea escenen"e=
"u. >'d%na'@a&os223
@+( oHo)a !s >.)%*&
@+( oRango !s >.)%*&
@+( ($a(7os>'d%n213 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( (@%s*'+7&o'>'d%n23
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2"agos&o"3
oRango A oHo)a-g%&$%llRang%B?<a(%2"!14@24"3
(@%s*'+7&o'>'d%n A oRango-*'%a&%"o'&@%s*'+7&o'23
($a(7os>'d%n203-J+%ld A 1
($a(7os>'d%n203-#s!s*%nd+ng A H'u%
($a(7os>'d%n203-#s$as%"%ns+&+8% A Jals%
($a(7os>'d%n203-J+%ldH?7% A *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ldH?7%-!CH>M!H#$
,!g'%ga(os un s%gundo *a(7o
($a(7os>'d%n213-J+%ld A 3
,Es&% %s d%s*%nd%n&%
($a(7os>'d%n213-#s!s*%nd+ng A Jals%
($a(7os>'d%n213-#s$as%"%ns+&+8% A Jals%
($a(7os>'d%n213-J+%ldH?7% A *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ldH?7%-!CH>M!H#$
(@%s*'+7&o'>'d%n213-<a(% A "$on&a+nsH%ad%'"
(@%s*'+7&o'>'d%n213-1alu% A H'u%
(@%s*'+7&o'>'d%n233-<a(% A ""o'&J+%lds"
(@%s*'+7&o'>'d%n233-1alu% A ($a(7os>'d%n
,>'d%na(os *on los 7a'=(%&'os %s&a.l%*+dos
oRango-so'&2 (@%s*'+7&o'>'d%n 3
End "u.
Una o!ci5n mu. in"eresan"e* es la !osibilia e enviar el resul"ao a un es"ino
i2eren"e como en el siguien"e e3em!lo=
"u. >'d%na'@a&os323
@+( oHo)a !s >.)%*&
@+( oRango !s >.)%*&
@+( ($a(7os>'d%n203 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( o@%s&+no !s >.)%*&
@+( (@%s*'+7&o'>'d%n23
oHo)a A Hh+s$o(7on%n&-g%&"h%%&s-g%&B?<a(%2"agos&o"3
oRango A oHo)a-g%&$%llRang%B?<a(%2"!14@24"3
o@%s&+no A oHo)a-g%&$%llRang%B?<a(%2"D1"3
(@%s*'+7&o'>'d%n A oRango-*'%a&%"o'&@%s*'+7&o'23
($a(7os>'d%n203-J+%ld A 1
($a(7os>'d%n203-#s!s*%nd+ng A H'u%
($a(7os>'d%n203-#s$as%"%ns+&+8% A Jals%
($a(7os>'d%n203-J+%ldH?7% A *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ldH?7%-!CH>M!H#$
(@%s*'+7&o'>'d%n213-<a(% A "$on&a+nsH%ad%'"
(@%s*'+7&o'>'d%n213-1alu% A H'u%
(@%s*'+7&o'>'d%n233-<a(% A ""o'&J+%lds"
(@%s*'+7&o'>'d%n233-1alu% A ($a(7os>'d%n
,Es&a.l%*%(os Fu% Fu%'%(os *o7+a' %l '%sul&ado a o&'o lado
(@%s*'+7&o'>'d%n253-<a(% A "$o7?>u&7u&@a&a"
#,F G+% Aangos e a"os
(@%s*'+7&o'>'d%n253-1alu% A H'u%
,Es&a.l%*%(os %l d%s&+no d% la *o7+a
(@%s*'+7&o'>'d%n263-<a(% A ">u&7u&0os+&+on"
(@%s*'+7&o'>'d%n263-1alu% A o@%s&+no-g%&$%ll!dd'%ss23
,>'d%na(os *on los 7a'=(%&'os %s&a.l%*+dos
oRango-so'&2 (@%s*'+7&o'>'d%n 3
End "u.
Observa como es"ablecemos el es"ino con una es"ruc"ura getCellAddress* es"a solo
inclu.e la 0o3a es"ino* la columna . la 2ila e inicio+ Si en el rango es"ino e;is"en a"os* es"os
ser<n "o"almen"e reem!lazaos sin !regun"ar"e naa+
A0ora* orenamos* !ero acceieno ese un rango e a"os=
"u. >'d%na'@a&os423
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( oRango !s >.)%*&
@+( ($a(7os>'d%n203 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( (@%s*'+7&o'>'d%n23
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
,1%'+f+*a(os Fu% %x+s&a %l no(.'% d%l 'ango d% da&os
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
,R%f%'%n*+a al 'ango
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,R%f%'%n*+a al o'+g%n d%l 'ango
oRango A oRB@-g%&R%f%''%d$%lls23
(@%s*'+7&o'>'d%n A oRango-*'%a&%"o'&@%s*'+7&o'23
($a(7os>'d%n203-J+%ld A 1
($a(7os>'d%n203-#s!s*%nd+ng A H'u%
($a(7os>'d%n203-#s$as%"%ns+&+8% A Jals%
($a(7os>'d%n203-J+%ldH?7% A *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ldH?7%-!CH>M!H#$
(@%s*'+7&o'>'d%n213-<a(% A "$on&a+nsH%ad%'"
(@%s*'+7&o'>'d%n213-1alu% A H'u%
(@%s*'+7&o'>'d%n233-<a(% A ""o'&J+%lds"
(@%s*'+7&o'>'d%n233-1alu% A ($a(7os>'d%n
oRango-so'&2 (@%s*'+7&o'>'d%n 3
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
)a !ro!iea im!or"an"e es9 getReferredCells* 7ue "e a acceso al rango origen e
los a"os* es"a !ro!iea "e evuelve un ob3e"o ScCellRangeObj* !or lo 7ue !uees "ener acceso
a "oas las !ro!ieaes e mani!ulaci5n . 2orma"o vis"as e es"e ob3e"o* !or e3em!lo* !uees
a!licarle un au"o2orma"o e "abla a los a"os+
A!renieno OOo Basic #,5
=.A. Filtrar datos
)as o!ciones 7ue es"uiaremos en es"e ca!i"ulo* son las !resen"es en el men?
-atos | 5iltro <=+ . seguiremos usano los a"os el "ema an"erior+
(o. !or 0ec0o 7ue no "ienes !roblemas* como usuario* con caa una e es"as
o!ciones* veamos como es"ablecerlas !or c5igo+ Primero* la m<s sencilla* el 2il"ro au"om<"ico* "e
agrega un con"rol e lis"a es!legable en el encabezao e cam!o e "us a"os* como en=
Para 0acer lo mismo !or c5igo* usamos=
"u. J+l&'a'@a&os123
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
,R%f%'%n*+a al 'ango
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,Mos&'a(os %l au&of+l&'o
oRB@-!u&oJ+l&%' A H'u%
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
IO !ara 7ui"arlosJ* mu. bien* aivinas"e* solo la es"ablecemos en 2also ('alse)
"u. J+l&'a'@a&os223
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
,R%f%'%n*+a al 'ango
#,G G+% Aangos e a"os
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,Mos&'a(os %l au&of+l&'o
oRB@-!u&oJ+l&%' A Jals%
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Pero cuiao* la macro an"erior* solo "e 7ui"ar< las 2lec0as !ara es!legar el 2il"ro el
cam!o* si "ienes es"ablecio un 2il"ro au"om<"ico* es"e !ermanecer<* !ara eliminar com!le"amen"e
un 2il"ro* "ienes 7ue 0acer os cosas9 !rimero* eliminar el 2il"ro . es!u4s mos"rar las 2ilas ocul"as
como "e mues"ro en el siguien"e e3em!lo=
"u. J+l&'a'@a&os323
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o23 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
,>.&%n%(os la d%s*'+7*+Kn d%l f+l&'o
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
,5% 7asa(os una (a&'+: 8a*Ga *on una %s&'u*&u'a d% *a(7o d% f+l&'o
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
,Pu+&a(os las fl%*has
oRB@-!u&oJ+l&%' A Jals%
,Mos&'a(os las f+las o*ul&as
oRB@-g%&R%f%''%d$%lls23-g%&Ro^s-#s1+s+.l% A H'u%
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
>n"onces* cuano 2il"ramos !or c5igo* no es inis!ensable mos"rar las 2lec0as e
los cam!os el 2il"ro* !oemos 2il"rar irec"amen"e como en el siguien"e e3em!lo=
"u. J+l&'a'@a&os423
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
,El *a(7o 7o' %l Fu% Fu%'%(os f+l&'a'
($a(7osJ+l&'o203-J+%ld A 1
,El &+7o d% *o(7a'a*+Kn
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
,"+ %s un n;(%'o
($a(7osJ+l&'o203-#s<u(%'+* A Jals%
,El 8alo' d% *o(7a'a*+Kn
($a(7osJ+l&'o203-"&'+ng1alu% A "l+:%&&%"
A!renieno OOo Basic #,%
,5% 7asa(os los *a(7os
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
,R%f'%s*a(os %l 'ango 7a'a 8%' %l '%sul&ado d%l f+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
eue com!robamos 7ue lo 0ace correc"amen"e=
A0ora* veamos como 2il"rar un cam!o con os coniciones=
"u. J+l&'a'@a&os523
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o213 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 1
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
($a(7osJ+l&'o203-#s<u(%'+* A Jals%
($a(7osJ+l&'o203-"&'+ng1alu% A "l+:%&&%"
,!g'%ga(os la s%gunda *ond+*+Kn al (+s(o *a(7o
($a(7osJ+l&'o213-J+%ld A 1
,Es&a.l%*%(os la '%la*+Kn *on la *ond+*+Kn an&%'+o'
($a(7osJ+l&'o213-$onn%*&+on A *o(-sun-s&a'-sh%%&-J+l&%'$onn%*&+on->R
($a(7osJ+l&'o213->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
($a(7osJ+l&'o213-#s<u(%'+* A Jals%
($a(7osJ+l&'o213-"&'+ng1alu% A "7aola"
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Observa mu. bien la !ro!iea Connection* es mu. im!or"an"e es"ablecer
correc"amen"e es"a* !ara ob"ener el resul"ao eseao* solo "iene os !osibiliaes* una LOM (OA)
o una LOM (AN()* muc0os errores e 2il"ros incorrec"os* son !or la incorrec"a a!licaci5n e es"e
sencillo !ar<me"ro* com!robamos 7ue nues"ro 2il"ro es"a correc"o* . veamos m<s e3em!los=
#,, G+% Aangos e a"os
A0ora 2il"raremos con coniciones en os cam!os i2eren"es=
"u. J+l&'a'@a&os623
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o213 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 1
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
($a(7osJ+l&'o203-#s<u(%'+* A Jals%
($a(7osJ+l&'o203-"&'+ng1alu% A "l+d+a"
,!g'%ga(os la s%gunda *ond+*+Kn a o&'o *a(7o
($a(7osJ+l&'o213-J+%ld A 3
,Es&a.l%*%(os la '%la*+Kn *on la *ond+*+Kn an&%'+o' 2O3
($a(7osJ+l&'o213-$onn%*&+on A *o(-sun-s&a'-sh%%&-J+l&%'$onn%*&+on-!<@
($a(7osJ+l&'o213->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
,!ho'a s+ .us*a(os 7o' n;(%'o
($a(7osJ+l&'o213-#s<u(%'+* A H'u%
($a(7osJ+l&'o213-<u(%'+*1alu% A 32
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
O una vez m<s lo com!robamos
>n los siguien"es e3em!los* .a no "e mos"rar4 el resul"ao* ano !or en"enio* 7ue
es"as com!robano* como .o* 7ue el resul"ao es!erao es el correc"o+ >n el siguien"e e3em!lo*
2il"ramos a "oos los 7ue "engan en"re @$ . @5 aKos=
"u. J+l&'a'@a&os723
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o213 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
A!renieno OOo Basic #,-
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 3
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-DRE!HER/EPC!5
($a(7osJ+l&'o203-#s<u(%'+* A H'u%
($a(7osJ+l&'o203-<u(%'+*1alu% A 30
,!g'%ga(os la s%gunda *ond+*+Kn a o&'o *a(7o
($a(7osJ+l&'o213-J+%ld A 3
($a(7osJ+l&'o213-$onn%*&+on A *o(-sun-s&a'-sh%%&-J+l&%'$onn%*&+on-!<@
($a(7osJ+l&'o213->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-5E""/EPC!5
($a(7osJ+l&'o213-#s<u(%'+* A H'u%
($a(7osJ+l&'o213-<u(%'+*1alu% A 35
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Observa como 0emos cambiao la !ro!iea o!eraor (Operator) !ara sa"is2acer la
conici5n* los !osibles valores !ara es"a !ro!iea* viene conicionaos !or la enumeraci5n
comsunstars$eet5ilterOperator* cu.os valores son=
com(sun(star(sheet(FilterOperator 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+'il"erO!era"or+>MPTO $ 6aco
com+sun+s"ar+s0ee"+'il"erO!era"or+NOTQ>MPTO 1 No vaco
com+sun+s"ar+s0ee"+'il"erO!era"or+>eUA) # :gual
com+sun+s"ar+s0ee"+'il"erO!era"or+NOTQ>eUA) @ No igual
com+sun+s"ar+s0ee"+'il"erO!era"or+&A>AT>A F Ma.or 7ue
com+sun+s"ar+s0ee"+'il"erO!era"or+&A>AT>AQ>eUA) 5 Ma.or o igual 7ue
com+sun+s"ar+s0ee"+'il"erO!era"or+)>SS G Menor 7ue
com+sun+s"ar+s0ee"+'il"erO!era"or+)>SSQ>eUA) % Menor o igual 7ue
com+sun+s"ar+s0ee"+'il"erO!era"or+TOPQ6A)U>S , >l ma.or valor
com+sun+s"ar+s0ee"+'il"erO!era"or+TOPQP>A/>NT - >l ma.or !orcen"a3e
com+sun+s"ar+s0ee"+'il"erO!era"or+BOTTOMQ6A)U>S 1$ >l menor valor
com+sun+s"ar+s0ee"+'il"erO!era"or+BOTTOMQP>A/>NT 11 >l menor !orcen"a3e
>n el siguien"e e3em!lo* seleccionamos los cinco regis"ros con m<s ea=
"u. J+l&'a'@a&os823
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#-$ G+% Aangos e a"os
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 3
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-H>0/1!5CE"
($a(7osJ+l&'o203-#s<u(%'+* A H'u%
,5os *+n*o d% (=s %dad
($a(7osJ+l&'o203-<u(%'+*1alu% A 5
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
A0ora* 2il"remos "oos los nombres 7ue comiencen !or la le"ra L)M=
"u. J+l&'a'@a&os923
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 1
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
($a(7osJ+l&'o203-#s<u(%'+* A Jals%
,>.s%'8a %l 7a'a(%&'o d% la *ond+*+Kn
($a(7osJ+l&'o203-"&'+ng1alu% A "l-"
,Es&a.l%*%(os Fu% us% %x7'%s+on%s '%gula'%s
o@%sJ+l&'o-Cs%R%gula'Ex7'%ss+ons A H'u%
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Observa como 0emos es"ablecio la !ro!iea !ara usar e;!resiones regulares
(3seRegular"*pressions)* el escri!"or el 2il"ro !ara 7ue "enga e2ec"o nues"ra conici5n+
O"ra !osibilia bas"an"e in"eresan"e e los 2il"ros* es !oer co!iar el resul"ao en
o"ra !osici5n . e3ar el origen in"ac"o* veamos como=
"u. J+l&'a'@a&os1023
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
@+( o@%s&+no !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
A!renieno OOo Basic #-1
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 1
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-EPC!5
($a(7osJ+l&'o203-#s<u(%'+* A Jals%
($a(7osJ+l&'o203-"&'+ng1alu% A "glo'+a"
,5% +nd+*a(os Fu% Fu%'%(os %l '%sul&ado %n o&'o luga'
o@%sJ+l&'o-"a8%>u&7u&0os+&+on A H'u%
,O l% +nd+*a(os dond%6 o.s%'8a *o(o o.&%n%(os la d+'%**+Kn d% la 7'+(%' *%lda d%l 'ango
o@%s&+no A oRB@-R%f%''%d$%lls23-g%&$%llB?0os+&+on20603-g%&$%ll!dd'%ss23
,@%s7u%s su(a(os %l an*ho d%l 'ango ? uno 7a'a d%)a' una *olu(an %n .lan*o
o@%s&+no-$olu(n A o@%s&+no-$olu(n B oRB@-R%f%''%d$%lls23-g%&$olu(ns23-g%&$oun& B 1
,Es&a.l%*%(os %l d%s&+no
o@%sJ+l&'o->u&7u&0os+&+on A o@%s&+no
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
Si las celas es"ino no es"<n vacas* es"as* ser<n reem!lazaas sin !regun"ar"e
naa* moi2ica la macro* !ara evaluar es"o . se lo no"i2i7ues al usuario+
O"ra carac"ers"ica mu. !oerosa e los 2il"ros* es la !osibilia e 2il"rar los regis"ros*
omi"ieno los u!licaos* co!ia varios regis"ros iguales !ara 7ue no"es la i2erencia* se 0ace e la
siguien"e manera=
"u. J+l&'a'@a&os1123
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( s<o(.'% !s "&'+ng
@+( oRB@ !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
@+( o@%s&+no !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
s<o(.'% A "@+'%**+on%s"
#f oRangosB@-hasB?<a(%2 s<o(.'% 3 Hh%n
oRB@ A oRangosB@-g%&B?<a(%2 s<o(.'% 3
o@%sJ+l&'o A oRB@-g%&J+l&%'@%s*'+7&o'23
($a(7osJ+l&'o203-J+%ld A 0
,"%l%**+ona(os los '%g+s&'os <> 8a*Gos
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-<>H/EM0HO
,5% +nd+*a(os Fu% solo Fu%'%(os '%g+s&'os ;n+*os
o@%sJ+l&'o-"]+7@u7l+*a&%s A H'u%
o@%sJ+l&'o-"a8%>u&7u&0os+&+on A H'u%
o@%s&+no A oRB@-R%f%''%d$%lls23-g%&$%llB?0os+&+on20603-g%&$%ll!dd'%ss23
o@%s&+no-$olu(n A o@%s&+no-$olu(n B oRB@-R%f%''%d$%lls23-g%&$olu(ns23-g%&$oun& B 1
o@%sJ+l&'o->u&7u&0os+&+on A o@%s&+no
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
oRB@-'%f'%sh23
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
cas"a a0ora* 0emos a!licaos 2il"ros* ese un rango e a"os* !ero los 2il"ros no
es"<n limi"aos a es"as <reas* al ser un m4"oo e rango e celas (ScCellRangeObj)* !uees
#-# G+% Aangos e a"os
a!licar un 2il"ro a cual7uier rango e celas* la siguien"e macro* "oma el rango e celas
seleccionao . 2il"ra los a"os ?nicos os columnas a la erec0a* es"a macro es mu. ?"il !ara e3ar
lis"aos ?nicos e lo 7ue sea* veri2icalo=
"u. J+l&'a'@a&os1223
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
@+( ($a(7osJ+l&'o203 !s <%^ *o(-sun-s&a'-sh%%&-Ha.l%J+l&%'J+%ld
@+( o@%s&+no !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,<os as%gu'a(os d% Fu% s%a un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
,$'%a(os un nu%8o d%s*'+7&o' d% f+l&'o 8a*+o 2H'u%3
o@%sJ+l&'o A o"%l-*'%a&%J+l&%'@%s*'+7&o'2H'u%3
,Es&a.l%*%(os los *a(7os
($a(7osJ+l&'o203-J+%ld A 0
($a(7osJ+l&'o203->7%'a&o' A *o(-sun-s&a'-sh%%&-J+l&%'>7%'a&o'-<>H/EM0HO
,Es&a.l%*%(os %l d%s&+no
o@%s&+no A o"%l-g%&$%llB?0os+&+on20603-g%&$%ll!dd'%ss23
o@%s&+no-$olu(n A o"%l-g%&Rang%!dd'%ss23-End$olu(n B 2
,Es&a.l%*%(os las 7'o7+%dad%s d%l f+l&'o
o@%sJ+l&'o-$on&a+nsH%ad%' A Jals%
o@%sJ+l&'o-"]+7@u7l+*a&%s A H'u%
o@%sJ+l&'o-$o7?>u&7u&@a&a A H'u%
o@%sJ+l&'o->u&7u&0os+&+on A o@%s&+no
o@%sJ+l&'o-J+l&%'J+%lds A ($a(7osJ+l&'o
,O lo a7l+*a(os
o"%l-f+l&%'2 o@%sJ+l&'o 3
Els%
MsgBox "<o %s un 'ango d% *%ldas"
End #f
End "u.
ca. i2erencias im!or"an"es en com!araci5n con los 2il"ros en rango e a"os9 la
!rimera es la 2orma e crear el escri!"or e 2il"ro* !ara un rango e celas se usa el m4"oo
create5ilter-escriptor* al cual se le !asa el !ar<me"ro veraero (True) si 7ueremos 7ue el nuevo
escri!"or es"e vaco . 2also ('alse) si "oma el e;is"en"e en ic0o rango e celas* observa 7ue
"ambi4n 0emos es"ablecio 7ue es"e rango no "iene encabezaos e cam!os (ContainsHeader)*
"ambi4n cambia la !ro!iea !ara ecirle 7ue 7ueremos co!iar el resul"ao (Cop)Output-ata) en
o"ra !osici5n* . !or ul"imo* no re2rescamos el rango* si no 7ue a!licamos el 2il"ro (filter)* !as<nole
como !ar<me"ro el escri!"or e 2il"ro creao+ Al igual 7ue con los rango e a"os* si el es"ino
con"iene a"os* ser<n reem!lazaos sin consul"ar"e+
6eamos como usar las o!ciones el 2il"ro es!ecial* es"e "i!o e 2il"ro* nos !ermi"e
es"ablecer un rango como origen e los cri"erios !ara el 2il"ro* lo 7ue nos a la !osibilia e !oer
llegar a usar como cri"erios L"oosM los cam!os e nues"ra base e a"os* <nonos absolu"o
con"rol sobre los regis"ros 2il"raos+ Para emos"rar el !oer . versa"ilia e es"a o!ci5n*
!re!ara"e una buena "abla e a"os* con al menos cinco cam!os . varias ecenas e regis"ros* si
lo !re2ieres* !uees usar la 0o3a llamaa LPeliculasM* !resen"e en los e3em!los 7ue acom!aKan a
es"os a!un"es . 7ue ser< la 7ue .o use+
>l rango e nues"ros a"os es= LA1=&#F@M* es"ablecemos un nombre a es"e rango9
L6ieo"ecaM si "e !arece* es!u4s* co!ia los ""ulos e los cam!os a la 2ila #5$* selecciona el rango
A!renieno OOo Basic #-@
LA#5$=&#55M . nombrala como L/ri"eriosM* !or ul"imo* selecciona la cela LA#G$M . la bau"izamos
como L(es"inoM* si es e "u agrao* "oo lo an"erior !uees 0acerlo !or c5igo 7ue .a sabes
0acerlo* IveraJ+ Aecuera 7ue es"a e2inici5n e nombres es en el men? -atos | -efinir
rango
Nues"ra "abla ebe verse m<s o menos as+
)a e2inici5n e cri"erios !ara el 2il"ro es!ecial* se !uee 0acer como lo 0emos venio
a!renieno* !or lo 7ue no lo re!e"iremos a7u* concen"r<nonos en es"uiar la 2orma e
es"ablecer es"os cri"erios ese un rango e a"os con nombre+ Te sugiero* con es"a macro en
es!eci2ico* asignarle una combinaci5n e "eclas o un bo"5n en alguna barra e 0erramien"as con
la 2inalia e 7ue !oamos e3ecu"arla varias veces ese la in"er2az el usuario e ir vieno en
vivo . en irec"o los resul"aos 7ue nos arrogue+ A7u la macro=
"u. J+l&'a'Es7%*+al123
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( o1+d%o&%*a !s >.)%*&
@+( o@%s&+no !s >.)%*&
@+( o$'+&%'+os !s >.)%*&
@+( o@%sJ+l&'o !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
,<os as%gu'a(os d% Fu% %x+s&%n nu%s&'os &'%s 'angos
#f oRangosB@-hasB?<a(%2 "1+d%o&%*a" 3 !nd oRangosB@-hasB?<a(%2 "$'+&%'+os" 3 !nd
oRangosB@-hasB?<a(%2 "@%s&+no" 3 Hh%n
,>.&%n%(os una '%f%'%n*+a a los 'angos o'+g%n
o1+d%o&%*a A oRangosB@-g%&B?<a(%2 "1+d%o&%*a" 3-R%f%''%d$%lls23
o$'+&%'+os A oRangosB@-g%&B?<a(%2 "$'+&%'+os" 3-R%f%''%d$%lls23
o@%s&+no A oRangosB@-g%&B?<a(%2 "@%s&+no" 3-R%f%''%d$%lls-g%&$%llB?0os+&+on2 060
3-g%&$%ll!dd'%ss23
,>.&%n%(os %l d%s*'+7&o' d%l f+l&'o d%l 'ango d% *'+&%'+os a 7a'&+' d%l 'ango d% da&os
o@%sJ+l&'o A o$'+&%'+os-*'%a&%J+l&%'@%s*'+7&o'B?>.)%*&2 o1+d%o&%*a 3
,"+n du7l+*ados
o@%sJ+l&'o-"]+7@u7l+*a&%s A H'u%
,Pu% 7u%da usa' %x7'%s+on%s '%gula'%s
o@%sJ+l&'o-Cs%R%gula'Ex7'%ss+ons A H'u%
,Pu%'%(os %l '%sul&ado %n o&'a 7os+*+Kn
o@%sJ+l&'o-$o7?>u&7u&@a&aA H'u%
,5% +nd+*a(os dond%
o@%sJ+l&'o->u&7u&0os+&+on A o@%s&+no
,El 'ango *on&+%n% %n*a.%:ados d% *a(7os
o@%sJ+l&'o-$on&a+nsH%ad%' A H'u%
#-F G+% Aangos e a"os
,J+l&'a(os *on las o7*+on%s s%l%**+onadas
o1+d%o&%*a-f+l&%'2 o@%sJ+l&'o 3
Els%
MsgBox "El 'ango d% da&os no %x+s&%"
End #f
End "u.
>s im!or"an"e no"ar 7ue !ara el 2il"ro es!ecial usamos en nuevo m4"oo llamao
create5ilter-escriptor!)Object* 7ue se invoca ese el rango e cri"erios (oCriterios)* !as<nole
como argumen"o* el rango e a"os (o/ideoteca)* las res"an"es !ro!ieaes usaas en el e3em!lo
.a las 0emos "ra"ao+
A0ora* los cri"erios "ienes 7ue es"ablecerlos en las celas corres!onien"es* !or
e3em!lo* !ara saber 7ue !elculas "enemos e mi irec"or 2avori"o* usamos=
>3ecu"a la macro . vemos el resul"ao=
Aecuera 7ue la 2inalia e es"ablecer cri"erios . realizar 2il"ros* es la e res!oner
!regun"as como !or e3em!lo* Icuan"as !elculas "enemos el aKo 1-%FJ* es"ablece la conici5n .
e3ecu"a la macro !ara res!onerla+
/P 5itulo Director Denero (<o +aCs Duracin
1-%F
Si 7uieres es"ablecer m<s e un cri"erio . lo 0aces en una misma 2ila* es"as usano
el o!eraor LOM (An)* como la res!ues"a a la !regun"a9 Icuan"as !elculas "enemos* realizaas en
ia!5n realizaas en 1-,$J
/P 5itulo Director Denero (<o +aCs Duracin
1-,$ ia!5n
Si usas i2eren"es 2ilas* es"as usano el o!eraor LOM (Or)* !or e3em!lo* !ara
res!oner la !regun"a9 Icuan"as !elculas "enemos e la :nia o el irec"or Pe"er &reena8a.J
/P 5itulo Director Denero (<o +aCs Duracin
:nia
A!renieno OOo Basic #-5
Pe"er &reena8a.
/omo eclaramos en el escri!"or e 2il"ro* 7ue se usar<n e;!resiones regulares*
!uees res!oner !regun"as como9 Icuan"as !elculas em!iezan con la le"ra L(MJ
/P 5itulo Director Denero (<o +aCs Duracin
+o
/omo 0abr<s no"ao* las !osibiliaes son enormes+ Te 7uea e "area* es"ablecer
las coniciones !ara res!oner la siguien"e !regun"a9 Icuales !elculas uran en"re G$ . -$
minu"osJ* la !rimer !is"a es9 no"a 7ue es"amos solici"ano un rango es!eci2ico* !or lo "an"o* "ienes
7ue usar el o!eraor LOM (AN() !ara resolverlo* . .a casi "e i3e "oo* recuera 7ue el rango e
cri"erios es solo eso un rango . no es"amos limi"aos a cambiar lo 7ue 7ueramos en es"e rango*
con lo 7ue .a "e resolv la "area* a "raba3ar=
/P 5itulo Director Denero (<o +aCs Duracin
JJ
=.A.) Subtotales
)os sub"o"ales nos !ermi"en ob"ener in2ormaci5n e las <reas e a"os* agru!ar .
realizar una o!eraci5n e"erminaa en un gru!o e a"os* en el siguien"e e3em!lo . con"inuano
"raba3ano con nues"ra base e a"os e !elculas* ob"enemos la can"ia e ""ulos !or irec"or=
"u. "u.&o&al%s123
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( o0%l+*ulas !s >.)%*&
@+( oRango !s >.)%*&
@+( o@%s"u.Ho&al !s >.)%*&
@+( ($a(7os"u.Ho&al203 !s <%^ *o(-sun-s&a'-sh%%&-"u.Ho&al$olu(n
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
,<os as%gu'a(os d% Fu% %x+s&% %l 'ango
#f oRangosB@-hasB?<a(%2 "0%l+*ulas" 3 Hh%n
,>.&%n%(os una '%f%'%n*+a a los 'angos o'+g%n
o0%l+*ulas A oRangosB@-g%&B?<a(%2 "0%l+*ulas" 3
,R%f%'%n*+a al 'ango d% *%ldas o'+g%n
oRango A o0%l+*ulas-R%f%''%d$%lls23
,$'%a(os un nu%8o su.&o&al
o@%s"u.Ho&al A oRango-*'%a&%"u.Ho&al@%s*'+7&o'2 H'u% 3
,Pu% o'd%n% d% fo'(a as*%nd%n&% %l g'u7o s%l%**+onado
o@%s"u.Ho&al-Ena.l%"o'& A H'u%
o@%s"u.Ho&al-"o'&!s*%nd+ng A H'u%
,5a *olu(na %n la Fu% s% usa'a la fun*+Kn %s7%*+f+*ada
($a(7os"u.Ho&al203-$olu(n A 1
($a(7os"u.Ho&al203-Jun*&+on A *o(-sun-s&a'-sh%%&-D%n%'alJun*&+on-$>C<H
,!g'%ga(os la o7%'a*+Kn6 al g'u7o d%s%ado
o@%s"u.Ho&al-add<%^2 ($a(7os"u.Ho&al62 3
#-G G+% Aangos e a"os
,!7l+*a(os %l su.&o&al
oRango-a77l?"u.Ho&als2 o@%s"u.Ho&al6 H'u% 3
End #f
End "u.
>l <rea e a"os (-ata!aseRanges)* solo la u"ilizamos !ara acceer (ReferredCells)
al rango e celas origen* si al m4"oo el rango e celas !ara crear el escri!"or el sub"o"al
(createSub.otal-escriptor)* se le !asa como argumen"o un valor veraero (.rue)* "e creara un
nuevo escri!"or vaco* si es 2also (5alse)* "omar< el e;is"en"e* si lo 0a.* el rango seleccionao+
>s im!or"an"e 7ue es"ablezcas 7ue orene el gru!o* si es ascenen"e o escenen"e* 7uea a "u
cri"erio . necesiaes* !ero si no orenas el gru!o* . e!enieno e como es"4n "us a"os
origen* "e !uee ar resul"aos incorrec"os+ >n la ma"riz e columnas el sub"o"al
(comsunstars$eetSub.otalColumn)* es"ablecemos el cam!o (Column) en el cual 7ueremos
0acer una o!eraci5n* e"erminaa !or la !ro!iea 2unci5n (5unction)* a su vez* basaa en la
enumeraci5n com+sun+s"ar+s0ee"+&eneral'unc"ion* 7ue !uee "omar los siguien"es valores=
com(sun(star(sheet(8eneralFunction 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+&eneral'unc"ion+NON> $ Ninguna
com+sun+s"ar+s0ee"+&eneral'unc"ion+AUTO 1 Au"om<"ico
com+sun+s"ar+s0ee"+&eneral'unc"ion+SUM # Suma
com+sun+s"ar+s0ee"+&eneral'unc"ion+/OUNT @ /uen"a
com+sun+s"ar+s0ee"+&eneral'unc"ion+A6>AA&> F Promeio
com+sun+s"ar+s0ee"+&eneral'unc"ion+MAp 5 M<;imo
com+sun+s"ar+s0ee"+&eneral'unc"ion+M:N G Mnimo
com+sun+s"ar+s0ee"+&eneral'unc"ion+PAO(U/T % Prouc"o
com+sun+s"ar+s0ee"+&eneral'unc"ion+/OUNTNUMS , /uen"a solo n?meros
com+sun+s"ar+s0ee"+&eneral'unc"ion+ST(>6 - (esviaci5n es"<nar (Mues"ra)
com+sun+s"ar+s0ee"+&eneral'unc"ion+ST(>6P 1$ (esviaci5n es"<nar (Poblaci5n)
com+sun+s"ar+s0ee"+&eneral'unc"ion+6AA 11 6arianza (Mues"ra)
com+sun+s"ar+s0ee"+&eneral'unc"ion+6AAP 1# 6arianza (Poblaci5n)
Al aKair los cam!os (add2e8) al escri!"or e sub"o"al* le !asamos como
!ar<me"ros* la ma"riz e cam!os e columna el sub"o"al one 0emos es"ablecio 7ue cam!os .
7ue o!eraci5n 0aremos con ellos* a0 mismo* con el seguno !ar<me"ro* le inicamos !or 7ue
cam!o 7ueremos agru!ar* !or ?l"imo* a!licamos (appl)Sub.otals) los sub"o"ales* cu.os
!ar<me"ros son9 el escri!"or e sub"o"al . un valor booleano inic<nole si eseamos reem!lazar
el sub"o"al ac"ual (.rue)* si lo 0a.* o agregamos al e;is"en"e (5alse)* usa con cuiao es"e
!ar<me"ro* !ues si agregas cri"erios Linconsis"en"esM* el resul"ao !uee ser im!reciso .
esas"roso visualmen"e 0ablano+
)a siguien"e macro* borra cual7uier sub"o"al e;is"en"e en el rango el <rea e a"os=
"u. "u.&o&al%s223
@+( o@o* !s >.)%*&
@+( oRangosB@ !s >.)%*&
@+( o0%l+*ulas !s >.)%*&
@+( oRango !s >.)%*&
o@o* A Hh+s$o(7on%n&
oRangosB@ A o@o*-@a&aBas%Rang%s23
A!renieno OOo Basic #-%
#f oRangosB@-hasB?<a(%2 "0%l+*ulas" 3 Hh%n
o0%l+*ulas A oRangosB@-g%&B?<a(%2 "0%l+*ulas" 3
oRango A o0%l+*ulas-R%f%''%d$%lls23
,Pu+&a(os %l su.&o&al
oRango-'%(o8%"u.Ho&als23
End #f
End "u.
/omo se mues"ra en el siguien"e e3em!lo* no es inis!ensable usar un <rea e a"os
!ara 0acer uso e los sub"o"ales* al ser m4"oos im!lemen"aos en rangos e cela* !oemos
invocarlos ese cual7uiera e es"os+ )a siguien"e macro* nos a el "o"al e ""ulos !or genero .
suma la can"ia e minu"os el mismo+
"u. "u.&o&al%s323
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o@%s"u.Ho&al !s >.)%*&
@+( ($a(7os"u.Ho&al213 !s <%^ *o(-sun-s&a'-sh%%&-"u.Ho&al$olu(n
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,"+ %s una sola *%lda o un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" Hh%n
o"%l A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2o"%l3
,Ex7and+(os a la '%g+Kn a*&ual
o"%l-*olla7s%Ho$u''%n&R%g+on23
,$'%a(os %l d%s*'+7&o' a 7a'&+' d% la s%l%**+Kn
o@%s"u.Ho&al A o"%l-*'%a&%"u.Ho&al@%s*'+7&o'2 H'u% 3
o@%s"u.Ho&al-Ena.l%"o'& A H'u%
o@%s"u.Ho&al-"o'&!s*%nd+ng A H'u%
,$olu(na d% &+&ulos
($a(7os"u.Ho&al203-$olu(n A 1
($a(7os"u.Ho&al203-Jun*&+on A *o(-sun-s&a'-sh%%&-D%n%'alJun*&+on-$>C<H
,$olu(na d% (+nu&os
($a(7os"u.Ho&al213-$olu(n A 6
($a(7os"u.Ho&al213-Jun*&+on A *o(-sun-s&a'-sh%%&-D%n%'alJun*&+on-"CM
,!7l+*a(os al g%n%'o
o@%s"u.Ho&al-add<%^2 ($a(7os"u.Ho&al63 3
o"%l-a77l?"u.Ho&als2 o@%s"u.Ho&al6 H'u% 3
Els%
MsgBox "<o %s un 'ango d% *%ldas"
End #f
End "u.
>l siguien"e e3em!lo* nos mues"ra cuan"os ""ulos "enemos !or !as* . es!u4s o"ro
sub"o"al nos inica cuan"os ""ulos !or genero* Len"roM e caa !as "enemos=
"u. "u.&o&al%s423
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o@%s"u.Ho&al !s >.)%*&
@+( ($a(7os"u.Ho&al203 !s <%^ *o(-sun-s&a'-sh%%&-"u.Ho&al$olu(n
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,"+ %s una sola *%lda o un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" Hh%n
o"%l A o"%l-g%&"7'%ad"h%%&-*'%a&%$u'so'B?Rang%2o"%l3
o"%l-*olla7s%Ho$u''%n&R%g+on23
o@%s"u.Ho&al A o"%l-*'%a&%"u.Ho&al@%s*'+7&o'2 H'u% 3
o@%s"u.Ho&al-Ena.l%"o'& A H'u%
#-, G+% Aangos e a"os
o@%s"u.Ho&al-"o'&!s*%nd+ng A H'u%
,$olu(na d% &G&ulos
($a(7os"u.Ho&al203-$olu(n A 1
($a(7os"u.Ho&al203-Jun*&+on A *o(-sun-s&a'-sh%%&-D%n%'alJun*&+on-$>C<H
,!7l+*a(os al 7aGs
o@%s"u.Ho&al-add<%^2 ($a(7os"u.Ho&al65 3
,$olu(na d% &G&ulos
($a(7os"u.Ho&al203-$olu(n A 1
($a(7os"u.Ho&al203-Jun*&+on A *o(-sun-s&a'-sh%%&-D%n%'alJun*&+on-$>C<H
,!7l+*a(os al g%n%'o
o@%s"u.Ho&al-add<%^2 ($a(7os"u.Ho&al63 3
o"%l-a77l?"u.Ho&als2 o@%s"u.Ho&al6 H'u% 3
Els%
MsgBox "<o %s un 'ango d% *%ldas"
End #f
End "u.
Observa* 7ue 0emos es"ablecio la ma"riz e cam!os os veces . usao el m4"oo
add2e8 "ambi4n os veces !ara lograr el resul"ao eseao+ Solo !uees sacar sub"o"ales !or
0as"a un m<;imo e "res gru!os+ >l oren en 7ue es"ablezcas . agregues los cam!os* ser< el
oren e !receencia e los sub"o"ales+ )a ob"enci5n e sub"o"ales* "iene un valor agregao
bas"an"e ?"il* al realizar la o!eraci5n es"ablecia en alg?n cam!o* la 0erramien"a 0ace una
com!araci5n Le;ac"aM e caa valor* !or lo 7ue "e !or<s ar cuen"a si "ienes cam!os con* !or
e3em!lo* es!acios vacos e m<s* al !rinci!io o al 2inal e el* o en el caso e "ener valores e
cam!o mu. similares* si un regis"ro "iene solo un error e LeoM* con los sub"o"ales "e !or<s ar
cuen"a e 2orma visual mu. 2<cilmen"e* sobre "oo cuano 0aces uso e la 2unci5n cuen"a* revisa
los regis"ros 7ue solo "engan un solo regis"ro* !or su!ues"o* "u ebes e"erminar si es correc"o o
no+ Para e3em!li2icar es"o* si es"as usano la misma base e a"os 7ue .o* saca un sub"o"al !or
genero* busca . observa los g4neros L/omeiaM . L(ramaM* . cu4n"ame cual es el error+ >sa es "u
"area 7ue no es muc0a+
=.A.! -alidando datos
A es"as al"uras el libro* "e 0abr<s ao cuen"a e la im!or"ancia e valiar la
in2ormaci5n 7ue el usuario le !ro!orciona a un !rograma* una gran can"ia e !rogramas* 2allan
en es"e "ema e* creo .o* al"a !rioria+ /alc cuen"a con una 0erramien"a llamaa 6aliez*
!resen"e en el men? (a"os* 7ue nos !ermi"e es"ablecer cri"erios en celas !ara la ca!"ura e
in2ormaci5n !or !ar"e el usuario . limi"arlo en la meia e lo !osible* a ca!"urar aos v<lios en
el !rograma* in2ormano* si lo eseas* con cuaros e mensa3e !ara a.uarle a in"roucir la
in2ormaci5n correc"amen"e+
A!renieno OOo Basic #--
6eamos como es"ablecer es"as o!ciones !or c5igo+ >n el siguien"e e3em!lo*
es"ablecemos 7ue las celas seleccionaas* solo !uean ace!"ar n?meros en"eros el 1 al 1#* es
ecir* un en"ero corres!onien"e a un mes el aKo=
"u. 1al+da'@a&os123
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,1al+da(os Fu% s%a una *%lda o un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
,>.&%n%(os la %s&'u*&u'a 8al+da*+Kn
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
,Es&a.l%*%(os sus 7'o7+%dad%s
U+&h o1al+da*+on
,El &+7o d% 8al+da*+Kn
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-UH>5E
,El o7%'ado' d% la 8al+da*+Kn
-s%&>7%'a&o' 2 *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE< 3
,Es&a.l%*%(os la 7'+(%' *ond+*+Kn
-s%&Jo'(ula1 2 "1" 3
,Es&a.l%*%(os la s%gunda
-s%&Jo'(ula2 2 "12" 3
,Pu% +gno'% las *%ldas %n .lan*o
-#gno'%Blan]$%lls A H'u%
,Pu% (u%s&'% un (%nsa)% al s%l%**+ona' la *%lda
-"ho^#n7u&M%ssag% A H'u%
,El &+&ulo d%l (%nsa)%
-#n7u&H+&l% A "#n&'odu*% %l (%s d%l a\o"
,El (%nsa)%
-#n7u&M%ssag% A "$a7&u'a un n;(%'o %n&'% 1 ? 12"
,Pu% (u%s&'% un (%nsa)% s+ la *ond+*+Kn no s% *u(7l%
-"ho^E''o'M%ssag% A H'u%
,El %s&+lo d%l (%nsa)% d% al%'&a
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
,El &+&ulo d%l (%nsa)% d% %''o'
-E''o'H+&l% A "@a&o %''on%o"
,El (%nsa)% d% %''o'
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s un n;(%'o %n&'% 1 ? 12"
End U+&h
,R%+ns%'&a(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
@$$ G+% Aangos e a"os
Observa como es"amos ob"enieno la es"ruc"ura e valiaci5n (get(ropert)/alue)*
!as<nole como argumen"o* el nombre e la !ro!iea 7ue nos in"eresa+ )as res"an"es
!ro!ieaes son= el "i!o (.)pe)* se re2iere al "i!o e valiaci5n 7ue 0aremos . es"a conicionao
!or la enumeraci5n comsunstars$eet/alidation.)pe* cu.os !osibles valores son=
com(sun(star(sheet(0alidation3ype 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+6alia"ionT.!e+ANO $ /ual7uier valor
com+sun+s"ar+s0ee"+6alia"ionT.!e+NcO)> 1 >n"ero
com+sun+s"ar+s0ee"+6alia"ionT.!e+(>/:MA) # (ecimal
com+sun+s"ar+s0ee"+6alia"ionT.!e+(AT> @ 'ec0a
com+sun+s"ar+s0ee"+6alia"ionT.!e+T:M> F cora
com+sun+s"ar+s0ee"+6alia"ionT.!e+T>pTQ)>N 5 )ongi"u e "e;"o
com+sun+s"ar+s0ee"+6alia"ionT.!e+):ST G )is"a
com+sun+s"ar+s0ee"+6alia"ionT.!e+/USTOM % 'ormula
(es!u4s* es"ablecemos el o!eraor (setOperator)* !ara evaluar la conici5n* es"a
!ro!iea !uee "omar los siguien"es valores=
com(sun(star(sheet(ConditionOperator 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NON> $ Ninguna
com+sun+s"ar+s0ee"+/oni"ionO!era"or+>eUA) 1 :gual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NOTQ>eUA) # (is"in"a e
com+sun+s"ar+s0ee"+/oni"ionO!era"or+&A>AT>A @ Ma.or 7ue
com+sun+s"ar+s0ee"+/oni"ionO!era"or+&A>AT>AQ>eUA) F Ma.or o igual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+)>SS 5 Menor 7ue
com+sun+s"ar+s0ee"+/oni"ionO!era"or+)>SSQ>eUA) G Menor o igual
com+sun+s"ar+s0ee"+/oni"ionO!era"or+B>TN>>N % >n"re
com+sun+s"ar+s0ee"+/oni"ionO!era"or+NOTQB>TN>>N , No en"re
com+sun+s"ar+s0ee"+/oni"ionO!era"or+'OAMU)A - 'ormula
(e!enieno e 7ue o!eraor selecciones* !uee 7ue necesi"es es"ablecer el !rimer
valor e com!araci5n (set5ormula#)* . "ambi4n el seguno (set5ormula6)* com?nmen"e los
o!eraores Len"reM (!".>""2)* . Lno en"reM (2O.'!".>""2)* son los 7ue re7uieren los os
valores+ Poemos e"erminar si la valiaci5n ignora o no* las celas en blanco (+gnore!lan7Cells)*
!ero ebes e saber 7ue es"a !ro!iea no e"ermina el valiar celas vaca o no* si no 7ue
"raba3a en con3un"o la u"ilia (e"ec"ive el men? cerramien"as* !ara e"erminar si una cela
vaca se consiera error o no+ Poemos mos"rar un mensa3e (S$o8+nputMessage)* cuano el
usuario seleccione una cela* es"ablecer su "i"ulo (+nput.itle)* . el mensa3e 7ue ver<
(+nputMessage)* es"e "e;"o orien"a al usuario sobre los valores a in"roucir+ >n caso e 7ue el valor
ca!"urao !or el usuario* no sa"is2aga las coniciones e la valiaci5n* !oemos mos"rar un
mensa3e e error (S$o8"rrorMessage)* e e"erminao es"ilo ("rrorAlertSt)le)* es"e es"ilo*
e"erminar< la acci5n a "omar con el valor ca!"urao* es"e es"ilo es"a e"erminao !or los
siguien"es valores=
com(sun(star(sheet(0alidationAlert4tyle 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+6alia"ionAler"S".le+STOP $ S"o!
A!renieno OOo Basic @$1
com(sun(star(sheet(0alidationAlert4tyle 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+6alia"ionAler"S".le+NAAN:N& 1 Aver"encia
com+sun+s"ar+s0ee"+6alia"ionAler"S".le+:N'O # :n2ormaci5n
com+sun+s"ar+s0ee"+6alia"ionAler"S".le+MA/AO @ Macro
Si es"ableces el valor en Ls"o!M (S.O()* se mos"rara al usuario un mensa3e
("rrorMessage) con un "i"ulo ("rror.itle) !ara in2ormarle el error* al ace!"ar* la cela regresar< al
valor inmeia"o an"erior* en los casos e Laver"enciaM (>AR2+2G) e Lin2ormaci5nM (+25O)* 7uear<
a cri"erio el usuario si ace!"a o no el nuevo valor aun . cuano no cum!la la conici5n . en el
caso e la o!ci5n LmacroM (MACRO)* !uees escoger una macro a e3ecu"ar* !ara* !or e3em!lo*
mos"rar un mensa3e m<s elaborao o realizar una o!eraci5n m<s com!le3a+ Por ul"imo* es
im!or"an"e* Lreinser"arM (set(ropert)/alue) la !ro!iea al ob3e"o !ara 7ue los cambios sur"an
e2ec"o+
Para 7ui"ar una valiaci5n* solo es"ablece el "i!o (.)pe) en cual7uier valor (A2?) .
es0abili"a el mensa3e e en"raa (S$o8+nputMessage)+
"u. 1al+da'@a&os223
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,1al+da(os Fu% s%a una *%lda o un 'ango d% *%ldas
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
,>.&%n%(os la %s&'u*&u'a 8al+da*+Kn
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
,El &+7o d% 8al+da*+Kn
o1al+da*+on-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-!<O
,Pu% (u%s&'% un (%nsa)% al s%l%**+ona' la *%lda
o1al+da*+on-"ho^#n7u&M%ssag% A Jals%
,R%+ns%'&a(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
>l "i!o ecimal* "e !ermi"e ca!"urar n?meros con ecimales=
"u. 1al+da'@a&os323
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-@E$#M!5
-s%&>7%'a&o' 2 *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE< 3
-s%&Jo'(ula1 2 "0" 3
-s%&Jo'(ula2 2 "10" 3
-#gno'%Blan]$%lls A H'u%
-"ho^#n7u&M%ssag% A H'u%
-#n7u&H+&l% A "#n&'odu*% la *al+f+*a*+on"
-#n7u&M%ssag% A "0u%d%s usa' d%*+(al%s"
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-#<J>
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
@$# G+% Aangos e a"os
End U+&h
,R%+ns%'&a(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
>n el siguien"e e3em!lo* valiamos 7ue no sea una 2ec0a 2u"ura* no"a el uso e la
2unci5n incor!oraa e /alc+
"u. 1al+da'@a&os423
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-@!HE
-s%&>7%'a&o' 2 *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-5E""/EPC!5 3
,Csa(os una fo'(ula *o(o *ond+*+Kn
-s%&Jo'(ula1 2 "H>@!O23" 3
-#gno'%Blan]$%lls A H'u%
-"ho^#n7u&M%ssag% A H'u%
-#n7u&H+&l% A "J%*ha d% <a*+(+%n&o"
-#n7u&M%ssag% A "5a f%*ha no 7u%d% s%' fu&u'a"
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-U!R<#<D
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
A0ora* solo !uee ca!"urar una 0ora 7ue no sea en"re 1 !+m+ @ !+m+=
"u. 1al+da'@a&os523
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-H#ME
-s%&>7%'a&o' 2 *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-<>H/BEHUEE< 3
,#n&'odu*+' una ho'a Fu% no s%a %n&'% 1 ? 3 7-(-
-s%&Jo'(ula1 2 "H#ME213f0f0" 3
-s%&Jo'(ula2 2 "H#ME215f0f0" 3
-#gno'%Blan]$%lls A H'u%
-"ho^#n7u&M%ssag% A H'u%
-#n7u&H+&l% A "Ho'a d% sal+da"
-#n7u&M%ssag% A "5a ho'a d% sal+'"
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
A!renieno OOo Basic @$@
End #f
End "u.
Observa 7ue es"amos 0acieno uso e la 2unci5n e /alc* NScOAA (.+M")* 7ue "e
evuelve el n?mero e serie e la 0ora !asaa* es"o es necesario !ara es"ablecer los limi"es
correc"amen"e+ >n el siguien"e e3em!lo* es"ablecemos 7ue los valores los "ome ese un rango e
celas* observa 7ue las re2erencias al rango son absolu"as=
"u. 1al+da'@a&os623
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
,#n&'odu*+' 8alo'%s d%sd% un 'ango d% *%ldas
-s%&Jo'(ula1 2 "d#d24d#d8" 3
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
Pero "ambi4n !oemos es"ablece el rango ese un rango e cela con nombre* !or
e3em!lo=
"u. 1al+da'@a&os723
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
,#n&'odu*+' 8alo'%s d%sd% un 'ango d% *%ldas
-s%&Jo'(ula1 2 "8alo'%s" 3
-"ho^5+s& A 2
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
Aecuera 7ue los rangos con nombre los es"ablecemos* en la in"er2az el usuario*
ese el cuaro e nombres e la barra e 2ormulas* o !or c5igo* como 0emos a!renio en
es"e libro* aun7ue "ambi4n !uees usar un nombre e <rea e a"os e2inia en el men? -atos |
@$F G+% Aangos e a"os
-efinir& e 0ec0o* !uees usar cual7uier "e;"o o 2ormula 7ue "e evuelva un rango e celas
v<lio* si el rango e celas "iene m<s e una columna* solo se usara la !rimer columna+
Observa 7ue 0emos usao una nueva !ro!iea (S$o80ist)* cuano el "i!o e la
valiaci5n es"a es"ablecia en Llis"aM (0+S.)* !oemos e"erminar si mos"ramos la 2lec0a e lis"a
e selecci5n* el valor # e"ermina 7ue se mues"re con los valores orenaos e 2orma
ascenen"e* el valor 1 7ue se mues"re !ero 7ue no orene los valores* 7ue los mues"re "al . como
es"<n en el origen* . el valor $ 7ue no se mues"re la lis"a e selecci5n* algo no mu. recomenable
cuano se usa una lis"a+ >s"os valores corres!onen a=
com(sun(star(sheet(3able0alidation0isibility 0alor 0alor en )nterfa2
com+sun+s"ar+s0ee"+Table6alia"ion6isibili".+:N6:S:B)> $ No mos"rar lis"a
com+sun+s"ar+s0ee"+Table6alia"ion6isibili".+UNSOAT>( 1 Mos"rar esorenaa
com+sun+s"ar+s0ee"+Table6alia"ion6isibili".+SOAT>(AS/>N(:N&
#
Mos"rar orenaa
ascenen"e
>n el siguien"e e3em!lo* es"ablecemos el origen e celas con 2ormulas e /alc* es"a
2ormula ebe es"ar bien cons"ruia* si no* no "e ar< el rango correc"o=
"u. 1al+da'@a&os823
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
,#n&'odu*+' 8alo'%s d%sd% un 'ango d% *%ldas
-s%&Jo'(ula1 2 "#<@#RE$H2!@@RE""21f139""4""9!@@RE""210f133" 3
-"ho^5+s& A 2
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
Aecuera 7ue la 2unci5n (:A>//:ON (A((A>SS)* nos evuelve una re2erencia en
2orma e "e;"o* e acuero a los !ar<me"ros !asaos* es!u4s* la 2unci5n :N(:A>/TO
(:N(:A>/T)* nos evuelve* e una caena e "e;"o 7ue "enga un rango e cela v<lio* la
re2erencia a ic0a cela+ /omo a la 2unci5n (:A>//:ON se le !uea es"ablecer en"re sus
!ar<me"ros el nombre e una 0o3a* "e 7uea e "area moi2icar la macro an"erior !ara 7ue el
rango e celas e la valiaci5n* es"e en una 0o3a i2eren"e+ >l !oer e 0acerlo con 2unciones o
ese c5igo* es 7ue la lis"a e valiaci5n la !uees ac"ualizar in<micamen"e* !or e3em!lo* una
lis"a e clien"es 7ue va crecieno con2irme vamos agregano regis"ros o cual7uier o"ro lis"ao 7ue
va.a crecieno en sen"io ver"ical+
O"ra !osibilia* es in"roucir una lis"a 2i3a e valores* o semi2i3a* !ues ese c5igo
la !oemos ac"ualizar siem!re 7ue 7ueramos* veamos como=
"u. 1al+da'@a&os923
@+( o@o* !s >.)%*&
A!renieno OOo Basic @$5
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
,#n&'odu*+' 8alo'%s f+)os
-s%&Jo'(ula1 2 "1!5>R1f1!5>R2f1!5>R3" 3
-"ho^5+s& A 2
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
6e a la in"er2az el usuario . observa como La!aren"emen"eM* si agrego los valores*
!ero observa 7ue es"<n en min?sculas* cuano noso"ros los agregamos en ma.?sculas* veri2ica
ese la in"er2az e usuario* ese -atos | /alidez* 7ue es"a 2orma e in"roucir los a"os 2i3os*
la e"ec"a como si 2uera un in"ervalo e celas* lo cual es incorrec"o* !ara 7ue realmen"e la
e"ec"e como una lis"a L2i3aM e valores* "ienes 7ue !asarle caa valor como una caena* como en
el siguien"e e3em!lo=
"u. 1al+da'@a&os1023
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
,#n&'odu*+' 8alo'%s f+)os
-s%&Jo'(ula1 2 """1!5>R1"""9"f"9"""1!5>R2"""9"f"9"""1!5>R3""" 3
-"ho^5+s& A 2
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "@a&o %''on%o"
-E''o'M%ssag% A "El 8alo' +n&'odu*+do no %s 8=l+do"
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
Pero ve 7ue can"ia e comillas* I. son muc0os valoresJ* !oemos 0acer una
2unci5n 7ue agregue las comillas !or noso"ros* como en el siguien"e e3em!lo=
"u. 1al+da'@a&os11
@+( sH(7 !s "&'+ng
@+( (
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
@$G G+% Aangos e a"os
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
,1alo'%s a ag'%ga'
( A !''a?2"Cno"6"@os"6"H'%s"6"$ua&'o"6"$+n*o"3
,5os )un&a(os
sH(7 A [un&a'En5+s&a2(3
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-5#"H
-"ho^5+s& A 2
-s%&Jo'(ula12 sH(7 3
End U+&h
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
,Ho(a una (a&'+: ? l% ag'%ga *o(+llas a *ada %l%(%n&o
,@%8u%l8% una *ad%na *on los %l%(%n&os6 s%7a'ados 7o' "f"
Jun*&+on [un&a'En5+s&a2 B?1al ( 3 !s "&'+ng
@+( *o1 !s 5ong
Jo' *o1 A 5Bound2(3 Ho CBound2(3
(2*o13 A """" 9 (2*o13 9 """"
<%x&
[un&a'En5+s&a A [o+n2 (6 "f" 3
End Jun*&+on
A0ora si* es un !oco m<s 2<cil agregar valores a una lis"a+ >l siguien"e e3em!lo "e
limi"a la en"raa a una !alabra e en"re 5 . 1$ le"ras* no "e ace!"a solo n?meros* solo le"ras o
al2anum4ricas=
"u. 1al+da'@a&os1223
@+( o@o* !s >.)%*&
@+( o"%l !s >.)%*&
@+( o1al+da*+on !s >.)%*&
o@o* A Hh+s$o(7on%n&
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" >' o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%llRang%>.)" Hh%n
o1al+da*+on A o"%l-g%&0'o7%'&?1alu%2"1al+da&+on"3
U+&h o1al+da*+on
-H?7% A *o(-sun-s&a'-sh%%&-1al+da&+onH?7%-HEEH/5E<
-s%&>7%'a&o' 2 *o(-sun-s&a'-sh%%&-$ond+&+on>7%'a&o'-BEHUEE< 3
-s%&Jo'(ula1 2 "5" 3
-s%&Jo'(ula2 2 "10" 3
-#gno'%Blan]$%lls A H'u%
-"ho^E''o'M%ssag% A H'u%
-E''o'!l%'&"&?l% A *o(-sun-s&a'-sh%%&-1al+da&+on!l%'&"&?l%-"H>0
-E''o'H+&l% A "5ong+&ud %''on%a"
-E''o'M%ssag% A "5a 7ala.'a d%.% s%' d% %n&'% 5 ? 10 *a'a*&%'%s"
End U+&h
,R%+ns%'&a(os la 7'o7+%dad 7a'a Fu% su'&an %f%*&o los *a(.+os
o"%l-s%&0'o7%'&?1alu%2"1al+da&+on"6 o1al+da*+on3
End #f
End "u.
Tan"o en la in"er2az el usuario* . aun m<s ese c5igo* la valiaci5n e a"os es
un "ema cen"ral en la !rogramaci5n* no lo "omes como un "ema menor* es !re2erible agregar unas
cuan"as lneas m<s e c5igo a correr el riesgo e 7ue un a"o inconsis"en"e nos evuelva
in2ormaci5n inconsis"en"e+ Tienes ins"rucciones limi"aas !ero su2icien"es !ara evi"arlo . "ienes
algo ilimi"ao9 imaginaci5n* in"eligencia* !ero sobre "oo* sen"io com?n* e;!lo"alos+
A!renieno OOo Basic @$%

=.A.= (*rupando datos
/uano se mane3a una gran can"ia e in2ormaci5n* encon"rar una manera sim!le .
r<!ia e agru!ar a"os* !uee ser la i2erencia en"re e2iciencia e ine2iciencia* los 2il"ros* el
orenar . los sub"o"ales* son 0erramien"as 7ue !ueen a!o.arnos* cuano sim!lemen"e
necesi"emos agru!ar !or un rango e columnas o 2ilas* 7ue no es m<s 7ue ocul"arlas* !oemos
!robar lo siguien"e=
"u. !g'u7a'123
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,Es&a.l%*%(os las 7'o7+%dad%s d%l g'u7o
U+&h oRango
,5a ho)a dond% s% *'%a'=
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
,5a *olu(na d% +n+*+o
-"&a'&$olu(n A 0
,5a *olu(an d% f+n
-End$olu(n A 4
End U+&h
,$'%a(os %l g'u7o6 0 A 7o' *olu(nas
oHo)a!*&+8a-g'ou72 oRango6 0 3
End "u.
)a macro an"erior nos agru!ar< las columnas 1 a 5 en la in"er2az el usuario* es mu.
im!or"an"e 7ue valiez 7ue la 0o3a . el rango e columnas es"ablecias* es"4n en"ro e rangos
v<lios* !or e3em!lo* 7ue el nice e 0o3a e;is"a* si no* !uees !rovocar una caa e la
a!licaci5n* es"amos veri2icano el I!or7ueJ e es"o+
Observa como al agru!ar (group)* le !asamos una es"ruc"ura e irecci5n e un
rango (CellRangeAddress)* vis"a muc0as veces en es"e libro . como seguno argumen"o* si
7ueremos 7ue se agru!e !or columnas (@) o !or 2ilas (#)+
A0ora* agru!amos las !rimeras iez 2ilas e la 0o3a ac"iva=
"u. !g'u7a'223
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
,!ho'a %s&a.l%*%(os %l 'ango d% f+las
-"&a'&Ro^ A 0
-EndRo^ A 9
End U+&h
,O ag'u7a(os6 1 A 7o' f+las
oHo)a!*&+8a-g'ou72 oRango6 1 3
End "u.
@$, G+% Aangos e a"os
Por su!ues"o* !uees es"ablecer* con la misma es"ruc"ura* "an"o las columnas como
las 2ilas* como en el siguien"e e3em!lo=
"u. !g'u7a'323
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&$olu(n A 9
-End$olu(n A 19
-"&a'&Ro^ A 9
-EndRo^ A 19
End U+&h
,!g'u7a(os 7o' *olu(nas 10 a la 20
oHo)a!*&+8a-g'ou72 oRango6 0 3
,!g'u7a(os 7o' f+las 10 a 20
oHo)a!*&+8a-g'ou72 oRango6 1 3
End "u.
(esagru!ar (ungroup) es "rivial* usa los mismos argumen"os 7ue !ara agru!ar+
"u. !g'u7a'423
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&$olu(n A 0
-End$olu(n A 4
-"&a'&Ro^ A 0
-EndRo^ A 9
End U+&h
,@%ag'u7a(os f+las ? *olu(nas
oHo)a!*&+8a-ung'ou72 oRango6 0 3
oHo)a!*&+8a-ung'ou72 oRango6 1 3
End "u.
>l rango usao !ara esagru!ar (ungroup)* no "iene 7ue coinciir e;ac"amen"e* en
"amaKo* al rango original e agru!amien"o* es su2icien"e* con 7ue es"e Len"roM el rango con 7ue
se agru!o* an"es e com!robarlo* ese la 0o3a one es"4s 0acieno es"as !ruebas* ve al men?
-atos | Agrupar ) "s,uema | "liminar* lo 7ue borrara cual7uier gru!o creao* es!u4s* e3ecu"a la
!rimer macro siguien"e e inmeia"amen"e es!u4s* la seguna=
"u. !g'u7a'523
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
A!renieno OOo Basic @$-
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&$olu(n A 0
-End$olu(n A 9
-"&a'&Ro^ A 0
-EndRo^ A 19
End U+&h
,!g'u7a(os f+las 21T203 ? *olu(nas 21T103
oHo)a!*&+8a-g'ou72 oRango6 0 3
oHo)a!*&+8a-g'ou72 oRango6 1 3
End "u.
"u. !g'u7a'623
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
,"olo +nd+*a(os la 7'+(%' *olu(na ? f+la
-"&a'&$olu(n A 0
-End$olu(n A 0
-"&a'&Ro^ A 0
-EndRo^ A 0
End U+&h
,@%sag'u7a(os f+las ? *olu(nas
oHo)a!*&+8a-ung'ou72 oRango6 0 3
oHo)a!*&+8a-ung'ou72 oRango6 1 3
End "u.
Observa como agru!amos !or un rango . esagru!amos !or o"ro* one solo nos
"enemos 7ue asegurar 7ue* el rango a esagru!ar* es"e Len"roM el rango agru!ao+
/uano eliminas los gru!os ese la in"er2az el usuario* si el gru!o es"a con"rao*
las columnas o 2ilas ocul"as* se mos"rar<n inmeia"amen"e* no sucee lo mismo cuano lo 0aces
!or c5igo* vuelve a realizar la !rueba an"erior* !ero asegura"e* e 7ue* an"es e esagru!ar*
con"rae el gru!o !ara ocul"ar su con"enio* a0ora s* e3ecu"a la macro !ara esagru!ar* no"aras
7ue el rango usao seguir< ocul"o* !ara evi"ar es"o* an"es e esagru!ar* asegura"e e mos"rar el
e"alle el rango como en el siguien"e e3em!lo=
"u. !g'u7a'723
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
,"olo +nd+*a(os la 7'+(%' *olu(na ? f+la
-"&a'&$olu(n A 0
-End$olu(n A 9
-"&a'&Ro^ A 0
-EndRo^ A 19
@1$ G+% Aangos e a"os
End U+&h
,Ex7and+(os %l g'u7o *on&%n+do %n %l 'ango
oHo)a!*&+8a-sho^@%&a+l2 oRango 3
,@%sag'u7a(os f+las ? *olu(nas
oHo)a!*&+8a-ung'ou72 oRango6 0 3
oHo)a!*&+8a-ung'ou72 oRango6 1 3
End "u.
>l e3em!lo an"erior 2uncionar<* siem!re . cuano* el rango agru!ao (group)*
corres!ona Le;ac"amen"eM con el rango mos"rao (s$o8-etail) . con el rango esagru!ao
(ungroup)* lo cual* en ocasiones* !ora no ser "an 2<cil e conocer+ Si lo 7ue 7uieres es eliminar
cual7uier gru!o e;is"en"e en una 0o3a* usamos=
"u. !g'u7a'823
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
,El+(+na(os *ualFu+%' g'u7o d% la ho)a
oHo)a!*&+8a-*l%a'>u&l+n%23
End "u.
/on lo cual* es muc0o m<s sencillo* eliminar cual7uier gru!o . volver a crear el
necesario+ /uano agregas gru!os* e!enieno e si e;is"a o no !reviamen"e uno en el rango
!asao* suceer< cual7uiera e las siguien"es acciones9 si el rango .a con"iene un gru!o* se
crear< un nuevo nivel e agru!amien"o* !uees crear 0as"a oc0o niveles e ellos* si el rango no
con"iene un gru!o* es"e* se agregar< al mismo nivel* veamoslo con e3em!los* en el !rimero
com!robamos 7ue se agregan los gru!os en niveles=
"u. !g'u7a'923
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oHo)a!*&+8a-*l%a'>u&l+n%23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&$olu(n A 0
-End$olu(n A 1
End U+&h
,!g'u7a(os las *olu(nas 1T2
oHo)a!*&+8a-g'ou72 oRango6 0 3
U+&h oRango
-"&a'&$olu(n A 0
-End$olu(n A 3
End U+&h
,!g'u7a(os las *olu(nas 1T4
oHo)a!*&+8a-g'ou72 oRango6 0 3
U+&h oRango
-"&a'&$olu(n A 0
-End$olu(n A 5
End U+&h
A!renieno OOo Basic @11
,!g'u7a(os las *olu(nas 1T6
oHo)a!*&+8a-g'ou72 oRango6 0 3
End "u.
A0ora* veamos como agregar al mismo nivel=
"u. !g'u7a'1023
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
oHo)a!*&+8a-*l%a'>u&l+n%23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&Ro^ A 0
-EndRo^ A 3
End U+&h
,!g'u7a(os la f+la 1 a 4
oHo)a!*&+8a-g'ou72 oRango6 1 3
U+&h oRango
-"&a'&Ro^ A 5
-EndRo^ A 8
End U+&h
,!g'u7a(os la f+la 4 a 7
oHo)a!*&+8a-g'ou72 oRango6 1 3
U+&h oRango
-"&a'&Ro^ A 10
-EndRo^ A 13
End U+&h
,!g'u7a(os la f+la 9 a 12
oHo)a!*&+8a-g'ou72 oRango6 1 3
End "u.
O lo com!robamos=
Puees crear un gru!o . ocul"arlo inmeia"amen"e* como en=
@1# G+% Aangos e a"os
"u. !g'u7a'1123
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&$olu(n A 0
-End$olu(n A 9
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 0 3
,>*ul&a(os %l g'u7o *on&%n+do %n %l 'ango
oHo)a!*&+8a-h+d%@%&a+l2 oRango 3
End "u.
A i2erencia e mos"rar un gru!o (s$o8-etail)* cuano lo ocul"as ($ide-etail)* el
rango no necesariamen"e ebe ser el mismo "amaKo* con 7ue a!un"e a cual7uier cela en"ro
el rango a ocul"ar* 2uncionar<+ Tambi4n "ienes la !osibilia e mos"rar cual7uier nivel e
agru!amien"o* los em<s niveles 0acia arriba* si los 0a.* se cerraran=
"u. !g'u7a'1223
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&Ro^ A 0
-EndRo^ A 4
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 1 3
U+&h oRango
-"&a'&Ro^ A 0
-EndRo^ A 9
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 1 3
U+&h oRango
-"&a'&Ro^ A 0
-EndRo^ A 14
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 1 3
U+&h oRango
-"&a'&Ro^ A 0
-EndRo^ A 19
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 1 3
,Mos&'a(os %l n+8%l 2
oHo)a!*&+8a-sho^5%8%l2 26 1 3
End "u.
>l m4"oo !ara mos"rar un nivel es!eci2ico (s$o80e%el)* solo usa os !ar<me"ros* el
nivel a mos"rar como !rimero . como seguno !ar<me"ro* si el nivel a mos"rar es"a en columnas
A!renieno OOo Basic @1@
(@) o en 2ilas (#)+ Para "erminar es"e "ema* veamos un e3em!lo !rac"ico bas"an"e ?"il* !ara 7ue
veas su uso* !rocura llamarla* "enieno el cursor en"ro e un rango e celas 7ue "enga al
menos os !an"allas e a"os en sen"io ver"ical* es ecir* e 2ilas* si "ienes m<s 2ilas* es muc0o
me3or !ues se !aginara m<s=
"u. !g'u7a'1323
@+( o@o* !s >.)%*&
@+( oHo)a!*&+8a !s >.)%*&
@+( o"%l !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( +<u(J+l0ag !s #n&%g%'
@+( oRango !s <%^ *o(-sun-s&a'-&a.l%-$%llRang%!dd'%ss
@+( *o1 !s 5ong
o@o* A Hh+s$o(7on%n&
oHo)a!*&+8a A o@o*-g%&$u''%n&$on&'oll%'-g%&!*&+8%"h%%&23
o"%l A o@o*-g%&$u''%n&"%l%*&+on23
,>.l+ga(os a s%l%**+ona' solo una *%lda
#f o"%l-g%&#(7l%(%n&a&+on<a(% A ""*$%ll>.)" Hh%n
,$'%a(os un *u'so' a 7a'&+' d% la *%lda s%l%**+onada
o$u'so' A oHo)a!*&+8a-*'%a&%$u'so'B?Rang%2 o"%l 3
,Ex7and+(os a la '%g+Kn a*&ual
o$u'so'-*olla7s%Ho$u''%n&R%g+on23
,>.&%n%(os %l n;(%'o d% f+las 8+s+.l%s 7o' 7=g+na
+<u(J+l0ag A o@o*-g%&$u''%n&$on&'oll%'-g%&1+s+.l%Rang%-EndRo^ T
o@o*-g%&$u''%n&$on&'oll%'-g%&1+s+.l%Rang%-"&a'&Ro^ T 1
,Es&a.l%*%(os %l 7'+(%' n+8%l d% ag'u7a(+%n&o %n %l &o&al d% f+las
U+&h oRango
-"h%%& A oHo)a!*&+8a-g%&Rang%!dd'%ss-"h%%&
-"&a'&Ro^ A 0
-EndRo^ A o$u'so'-g%&Rang%!dd'%ss-EndRo^
End U+&h
oHo)a!*&+8a-g'ou72 oRango6 1 3
,!g'%ga(os un s%gundo n+8%l d% ag'u7a(+%n&o6 7=g+na 7o' 7=g+na
Jo' *o1 A 0 Ho o$u'so'-g%&Rang%!dd'%ss-EndRo^ "&%7 +<u(J+l0ag
oRango-"&a'&Ro^ A *o1 B 1
oRango-EndRo^ A *o1 B +<u(J+l0ag T 1
oHo)a!*&+8a-g'ou72 oRango6 1 3
<%x&
,0a'a %l ul&+(o 'ango s+ no %s %xa*&o
#f *o1 Y o$u'so'-g%&Rang%!dd'%ss-EndRo^ Hh%n
oRango-"&a'&Ro^ A *o1 T +<u(J+l0ag B 1
oRango-EndRo^ A o$u'so'-g%&Rang%!dd'%ss-EndRo^
oHo)a!*&+8a-g'ou72 oRango6 1 3
End #f
oHo)a!*&+8a-"ho^5%8%l2 16 1 3
Els%
MsgBox ""%l%**+ona solo una *%lda"
End #f
End "u.
O mira 7ue bien 7uea=
@1F G+% Aangos e a"os
/laro 7ue el <rea no es"a limi"aa a 7ue "enga a"os* !uees es"ablecer "us cri"erios
!ero sobre "oo "us necesiaes !ar"iculares !ara agru!ar+
=.E &ases de datos
)a mani!ulaci5n . aminis"raci5n e a"os* es una e las necesiaes m<s
recurren"es en usuarios e 0o3as e c<lculo* es"o no es gra"ui"o* !ues las 0erramien"as !resen"es
en ellas* 2acili"an enormemen"e es"a "area+
=.G Dra2icando datos
(icen 7ue una imagen vale m<s 7ue mil !alabras* la vera es 7ue .o !re2iero las mil
!alabras* no obs"an"e* ar4 !or cier"a la aseveraci5n an"erior . veremos como arle LimagenM a
nues"ros a"os* 7ue e eso se "ra"a cuano 0acemos gr<2icos+
=.1I 5rabajando con elementos *rF2icos
No se si es"ar<s e acuero conmigo* !ero !oco a !oco se 0a io ilu.eno la
2ron"era en"res a!licaciones* es ecir* en"re un !rocesaor e "e;"os . una 0o3a e calculo !or
A!renieno OOo Basic @15
e3em!lo* en uno . en o"ro !oemos 0acer muc0as "areas similares* so. e la o!ini5n e seguir
usano caa a!licaci5n es!eci2ica !ara la "area 7ue 2ue iseKaa* no obs"an"e* !oemos 0acer
uso e esas carac"ers"icas e;"ras* "an variaas . ricas con 7ue cuen"an las a!licaciones ac"uales*
lo cual a!reneremos en es"e ca!i"ulo+
=.1I.1 Insertando imF*enes
/alc* so!or"a la inclusi5n e una am!lia variea e 2orma"os e im<genes* en el
siguien"e e3em!lo* inser"amos una imagen P&N en la 0o3a ac"iva+
=.1I.2 Insertando auto2ormas
/on las 0erramien"as e ibu3o incluias en la a!licaci5n* se !ora ibu3ar casi
cual7uier cosa* el limi"e* es "u imaginaci5n* veamos !or7u4+
=.11 Con2i*uracin *lobal de Calc
@1G % Traba3ano con ocumen"os e "e;"o f Nri"er
A 5rabajando con documentos de te'to 7 ;riter
A!renieno OOo Basic @1%
E 5rabajando con dibujos 7 DraQ
@1, - Traba3ano con !resen"aciones f :m!ress
G 5rabajando con presentaciones 7 Impress
A!renieno OOo Basic @1-
1I 5rabajando con bases de datos K &ase
@#$ 11 Traba3ano con 2ormularios
11 5rabajando con 2ormularios
230gs0g3
A!renieno OOo Basic @#1
12 5rabajando con cuadros de dialo*o
@## 1@ A!4nice A
1 (p$ndice (
1.1 Se*uridad en macros
/omo .a lo 0abr<s no"ao* el limi"e !ara lo 7ue se !uee 0acer con macros es solo
"u conocimien"o . "u imaginaci5n* !or ello* no "omes como un "ema menor el e la seguria* es
ecir* aseg?ra"e e 7ue las macros 7ue es"<s ac"ivano . e3ecu"ano sean e una 2uen"e
con2iable+ Para es"ablecer el nivel e seguria e las macros* ve al men? 6erramientas 1
Opciones((( en"ro e la secci5n OpenOffice(or,* selecciona la rama 4e,uridad . en"ro e las
o!ciones mos"raas* a un clic en el bo"5n e comano 4e,uridad de macro+++
>l nivel e con2ianza es bas"an"e e;!lici"o . creo 7ue no re7uiere aclaraciones*
7uea a "u cri"erio es"ablecer el nivel aecuao !ara "u <rea . en"orno e "raba3o* !ara los 2ines
i<c"icos e es"os a!un"es* el nivel "edio es m<s 7ue su2icien"e+
A!renieno OOo Basic @#@
Si no 7uieres 7ue "e mues"re el cuaro e ialogo e con2irmaci5n caa vez 7ue
abres "u arc0ivo e "raba3o* !uees agregar su ubicaci5n como un origen e con2ianza* en el
mismo cuaro e ialogo an"erior !ero en la 2ic0a Or9,enes de Confian2a* !uees agregar "an"as
ru"as como 7uieras* ese las cuales* se abrir<n los arc0ivos con las macros ac"ivaas e 2orma
!ree"erminaa sin !eir"e con2irmaci5n+ /uiao con es"o* asegura"e e es"ablecer solo ru"as e
veraera con2ianza* como icen en mi !ueblo -sobre aver"encia no 0a. engaKo-+
@#F 1@+1 Seguria en macros
1.2 Errores mFs comunes en tiempo de dise<o
/omo .a e;!licamos en el "ema F+1$* es"e "i!o e errores solo se !roucen mien"ras
!rogramamos . en ese momen"o 0a. 7ue corregirlos* es"a es una lis"a incom!le"a e los m<s
comunes* !ara es"os e3em!los* solo "e mos"rare la imagen el c5igo con el error* es!ero 7ue los
""ulos sean lo su2icien"emen"e claro !ara "u consul"a=
No !uee 0aber una macro sin nombre
Toa macro ebe cerrarse con >n Sub
No !uee 0aber os macro o 2unciones con el mismo nombre
No !uees e3ecu"ar irec"amen"e una macro 7ue re7uiera argumen"os
Por su!ues"o* "am!oco llamarla sin los argumen"os correc"os=
A!renieno OOo Basic @#5
Si usas O!"ion >;!lici" (como LebeM ser)* "ienes 7ue eclara "oas "us
variables* sino
Toas las es"ruc"uras eben ir com!le"as* a7u 2al"a T0en al :2
Por su!ues"o "ambi4n ebe llevar su corres!onien"e >n :2
Si usas >lse:2* recuera 7ue "ambi4n "ermina en T0en
)a es"ruc"ura (o* siem!re ebe cerrarse con )oo!* "e cuiao e
es"ablecer siem!re la conici5n e "erminaci5n el bucle* si no lo 0aces no "e ar< un
error . !uees 7uear en"ro e un bucle in2ini"o
@#G 1@+# >rrores m<s comunes en "iem!o e iseKo
)a es"ruc"ura Selec" ebe "erminar en /ase
O no "e olvies e es"ablecer la variable a evaluar
O cerrar con su res!ec"ivo >n Selec"
)os ciclos 'or* eben es"ar com!le"a* con su corres!onien"e To
O su res!ec"ivo Ne;"
Se re7uiere el uso e (im !ara eclarar variables
A!renieno OOo Basic @#%
Algunos a"os no so!or"an la conversi5n e a"os im!lci"a* es ecir*
"ienes 7ue es"ablecer correc"amen"e el "i!o e in2ormaci5n 7ue guaras en es"as
variables
>s"e es mu. com?n* sobre!asar los limi"es 7ue ace!"a un "i!o e a"o
(ebes e eclarar las corres!onien"es e"i7ue"as en On >rror &o"o . &o"o
)a macro o 2unci5n llamaa ebe e;is"ir
@#, 1@+# >rrores m<s comunes en "iem!o e iseKo
No !uees 0acer re2erencia al inice e una ma"riz 2uera e sus rangos
eclaraos
No !uees* en"ro e la misma macro* e2inir os vece la misma variable
No !uees iviir !or cero
(ebes e usar la ins"rucci5n >;i"* con su corres!onien"e !reicao Sub*
(o* 'or o 'unc"ion . en"ro e la es"ruc"ura corres!onien"e correc"a
O"ra mu. com?n* "oas las ins"rucciones . 2unciones e OOo Basic* "ienes
7ue llamarlas con sus correc"os argumen"os
A!renieno OOo Basic @#-
1) (p$ndice &
1).1 Instalando SD0
)o !rimero 7ue necesi"amos es escargarlo ese la !<gina e O!enO22ice+org
0""!=11o8nloa+o!eno22ice+org1@+1+$1ss+0"ml
Tienes 7ue seleccionar el arc0ivo correc"o !ara "u sis"ema o!era"ivo* en nues"ro caso
usaremos la versi5n !ara )inu;+
Para ins"alar sigue le.eno=
(ese una "erminal ve 0as"a la ubicaci5n one escargas"e el arc0ivo an"erior .
e3ecu"alo* no necesi"as erec0os e aminis"raor=
@@$ 1F+1 :ns"alano S(t
/omo no"aras "e !ie un irec"orio* es"o es solo !ara escom!rimir el arc0ivo* as
7ue ale una ru"a sencilla o one "e sea c5moo encon"rarlo* "ienes 7ue arle un irec"orio
nuevo* e lo con"rario "e ir< 7ue .a e;is"e . no "e escom!ac"ara el arc0ivo+ Mu4ve"e 0as"a el
irec"orio reci4n creao . veras una car!e"a 7ue se llama (>BS (o APMS se un el 7ue 0a.as R
escargao)* en"ro e ella el arc0ivo ooobasis@+1-ssQ@+1+$-11QamGF+eb* 7ue sabes* es un
arc0ivo !ara ins"alar* si "ienes una is"ribuci5n 7ue so!or"e AMPs ('eora* O!enSuse* e"c)* lo
ins"alas con=
r&m ,i ooobasis-./,sd0_-./.1,//_amd23.r&m
Si "ienes una is"ribuci5n 7ue use (>Bs (Ubun"u* (ebian* e"c)* !uees ins"alar ese
la lnea e comanos=
sudo d7]g T+ ooo.as+s3-1Tsd]/3-1-0T11/a(d64-d%.
O ese una in"er2az gr<2ica si "u is"ribuci5n la im!lemen"a=
A0ora !uees abrir "u navegaor 2avori"o . abrir el arc0ivo
A!renieno OOo Basic @@1
2ile=111o!"1o!eno22ice1basis@+11ss1ine;+0"ml
(one* en"re o"ras 0erramien"as . e3em!los* "enr<s la re2erencia com!le"a el AP:
e O!enO22ice+org
1).2 Mostrar in2ormacin de un objeto en un arc"i,o de Calc
"u. >.&%n%'@a&os2 >.)%&o !s >.)%*& 3
@+( sRu&a !s "&'+ng
@+( o@o* !s >.)%*&
@+( (!'g23
@+( a123 !s "&'+ng6 a223 !s "&'+ng
@+( *o1 !s #n&%g%'6 sH(7 !s "&'+ng
sRu&a A "7'+8a&%4fa*&o'?/s*al*"
o@o* A "&a'@%s]&o7-5oad$o(7on%n&J'o(CR52 sRu&a6"/d%faul&"606(!'g 3

a1 A "7l+&2 >.)%&o-@BD/0'o7%'&+%s6 "4" 3
a2 A "7l+&2 H'+(2a121336 "f" 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 06 0 3-s%&"&'+ng2 a1203 3
Jo' *o1 A 5Bound2 a2 3 Ho CBound2 a2 3
sH(7 A H'+(2a22*o133
#f 5%f&2 sH(76 13 A $h'2103 Hh%n sH(7 A R+gh&2 sH(76 5%n2sH(73T1 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 06 *o1B1 3-s%&"&'+ng2 sH(7 3
<%x& *o1
#f R+gh&2 sH(76 13 A $h'2103 Hh%n sH(7 A 5%f&2 sH(76 5%n2sH(73T1 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 06 *o1 3-s%&"&'+ng2 sH(7 3

a1 A "7l+&2 >.)%&o-@BD/M%&hods6 "4" 3
a2 A "7l+&2 H'+(2a121336 "f" 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 16 0 3-s%&"&'+ng2 a1203 3
@@# 1F+# Mos"rar in2ormaci5n e un ob3e"o en un arc0ivo e /alc
Jo' *o1 A 5Bound2 a2 3 Ho CBound2 a2 3
sH(7 A H'+(2a22*o133
#f 5%f&2 sH(76 13 A $h'2103 Hh%n sH(7 A R+gh&2 sH(76 5%n2sH(73T1 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 16 *o1B1 3-s%&"&'+ng2 sH(7 3
<%x& *o1
#f R+gh&2 sH(76 13 A $h'2103 Hh%n sH(7 A 5%f&2 sH(76 5%n2sH(73T1 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 16 *o1 3-s%&"&'+ng2 sH(7 3

a1 A "7l+&2 >.)%&o-@BD/"u77o'&%d#n&%'fa*%s6 "4" 3
a2 A "7l+&2 H'+(2a121336 $h'2103 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 26 0 3-s%&"&'+ng2 a1203 3
Jo' *o1 A 5Bound2 a2 3 Ho CBound2 a2 3
sH(7 A H'+(2a22*o133
#f 5%f&2 sH(76 13 A $h'2103 Hh%n sH(7 A R+gh&2 sH(76 5%n2sH(73T1 3
o@o*-"h%%&s23-g%&B?#nd%x203-g%&$%llB?0os+&+on2 26 *o1 3-s%&"&'+ng2 sH(7 3
<%x& *o1

End "u.
Asegura"e e !asarle como !ar<me"ro una variable e ob3e"o* si el ob3e"o no
im!lemen"a m4"oos* la macro "e ar< un error . se e"enr<* !ero "e crear< el arc0ivo con al
menos las !ro!ieaes 7ue im!lemen"a+
"u. 0'u%.as
@+( o.) !s >.)%*&
o.) A Hh+s$o(7on%n&

$all >.&%n%'@a&os 2 o.) 3

End "u.
A!renieno OOo Basic @@@
1! (p$ndice C
1!.1 Formulas de Calc espa<olKin*les
!. $spa:ol )n,les
1 ABS ABS
# A/OS A/OS
@ A/OSc A/OSc
F A/OT A/OT
5 A/OTc A/OTc
G A/TUA) /UAA>NT
% AcOAA NON
, A)>ATOA:O AAN(
- A)>ATOA:O+>NTA> com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Aanbe"8een
1$ AMOAT:k+):N com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Amorlinc
11 AMOAT:k+PAO&A> com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Amoregrc
1# AMOAT:kA/:ON PPMT
1@ AuO O>AA
1F AuOS com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"(i22Oears
15 dAAB> AAAB:/
1G dA>AS AA>AS
1% AS/ AS/
1, AS>NO AS:N
1- AS>NOc AS:Nc
#$ ATAN ATAN
#1 ATAN# ATAN#
## ATANc ATANc
#@ B B
#F BAcTT>pT BAcTT>pT
#5 BAS> BAS>
#G B(/ONTAA (/OUNT
#% B(/ONTAAA (/OUNTA
#, B((>S6>ST (ST(>6
#- B((>S6>STP (ST(>6P
@$ B(>pTAA>A (&>T
@1 B(MAp (MAp
@# B(M:N (M:N
@@ B(PAO(U/TO (PAO(U/T
@F B(PAOM>(:O (A6>AA&>
@5 B(SUMA (SUM
@G B(6AA (6AA
@% B(6AAP (6AAP
@, B>SS>): com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Besseli
@- B>SS>)i com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bessel3
F$ B>SS>)t com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bessels
F1 B>SS>)O com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bessel.
F# B:N+A+(>/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bin#(ec
F@ B:N+A+c>p com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bin#ce;
FF B:N+A+O/T com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Bin#Oc"
F5 B:NOM+/A:T /A:TB:NOM
FG BUS/AA )OOtUP
F% BUS/AAc c)OOtUP
F, BUS/AA6 6)OOtUP
F- /ANT:(A(+A>/:B:(A com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Aeceive
5$ /AAd/T>A /cAA
@@F 15+1 'ormulas e /alc es!aKol-ingles
!. $spa:ol )n,les
51 />)(A />))
5# /c:Se(:ST /c:Se(:ST
5@ /c:Se:N6 /c:Se:N6
5F /O/:>NT> com+sun+s"ar+s0ee"+ain+Anal.sis+ge"euo"ien"
55 /C(:&O /O(>
5G /O>'+(>+/OAA>) /OAA>)
5% /O>':/:>NT>+AS:M>TA:A St>N
5, /O>':/:>NT>+A# ASe
5- /O:N/:(:A MAT/c
G$ /O)UMNA /O)UMN
G1 /O)UMNAS /O)UMNS
G# /OMB:NAA /OMB:N
G@ /OMB:NAA# /OMB:NA
GF /OMPA/TAA TA:M
G5 /OMP)>iO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/om!le;
GG /ON/AT>NAA /ON/AT>NAT>
G% /ONTAA /OUNT
G, /ONTAA+B)AN/O /OUNTB)ANt
G- /ONTAA+S: /OUNT:'
%$ /ONTAAA /OUNTA
%1 /ON6>AT:A /ON6>AT
%# /ON6>AT:AQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/onver"
%@ /ON6>AT:A+>UAO >UAO/ON6>AT
%F /OS /OS
%5 /OSc /OSc
%G /OT /OT
%% /OTc /OTc
%, /O6AA /O6AA
%- /A>/:M:>NTO &AONTc
,$ /UAAT:) eUAAT:)>
,1 /UPON+(:AS com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!a.s
,# /UPON+(:AS+)1 com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!a.bs
,@ /UPON+(:AS+)# com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!a.snc
,F /UPON+'>/cA+)1 com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!!c
,5 /UPON+'>/cA+)# com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!nc
,G /UPON+NUM com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/ou!num
,% /UATOS:S tUAT
,, (B (B
,- ((B ((B
-$ ((> ((>
-1 (>/+A+B:N com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ec#Bin
-# (>/+A+c>p com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ec#ce;
-@ (>/+A+O/T com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ec#Oc"
-F (>/:MA) (>/:MA)
-5 (>)TA com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(el"a
-G (>A>/cA A:&cT
-% (>SA>' O''S>T
-, (>S6>ST ST(>6
-- (>S6>STA ST(>6A
1$$ (>S6>STP ST(>6P
1$1 (>S6>STPA ST(>6PA
1$# (>S6:A# (>6Se
1$@ (>S6PAOM A6>(>6
1$F (BA (AO
1$5 (:A+)AB com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Norsa.
A!renieno OOo Basic @@5
!. $spa:ol )n,les
1$G (BAS (AOS
1$% (:AS+)AB com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Ne"8orsa.s
1$, (BAS@G$ (AOS@G$
1$- (BAS>M N>>t(AO
11$ (BAS>NAuO com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"(a.s:nOear
111 (BAS>NM>S com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"(a.s:nMon"0
11# (:A>//:CN A((A>SS
11@ (:ST+N>:BU)) N>:BU))
11F (:STA+B>TA B>TA(:ST
115 (:STA+B>TA+:N6 B>TA:N6
11G (:STA+B:NOM B:NOM(:ST
11% (:STA+>pP >pPON(:ST
11, (:STA+' '(:ST
11- (:STA+'+:N6 ':N6
1#$ (:STA+&AMMA &AMMA(:ST
1#1 (:STA+&AMMA+:N6 &AMMA:N6
1## (:STA+c:P>A&>OM cOP&>OM(:ST
1#@ (:STA+i: /c:(:ST
1#F (:STA+)O&+NOAM )O&NOAM(:ST
1#5 (:STA+NOAM NOAM(:ST
1#G (:STA+NOAM+>STAN( NOAMS(:ST
1#% (:STA+NOAM+>STAN(+:N6 NOAMS:N6
1#, (:STA+NOAM+:N6 NOAM:N6
1#- (:STA+T T(:ST
1@$ (:STA+T+:N6 T:N6
1@1 (OM:N&OPAS/UA >AST>ASUN(AO
1@# (UAA/:ONQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ura"ion
1@@ (UAA/:ON+MO(:' com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Mura"ion
1@F (6S 6(B
1@5 >)>&:A /cOOS>
1@G >N/ONTAAA ':N(
1@% >NT>AO :NT
1@, >AAOA+TBP:/O+pO ST>Op
1@- >S+:MPAAQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge":so
1F$ >SAuOB:S:>STO com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge":s)ea!Oear
1F1 >SB)AN/O :SB)ANt
1F# >S>AA :S>AA
1F@ >S>AAOA :S>AAOA
1FF >S'CAMU)A :S'OAMU)A
1F5 >S:MPAA :SO((
1FG >S)O&:/O :S)O&:/A)
1F% >SNO( :SNA
1F, >SNOT>pTO :SNONT>pT
1F- >SNqM>AO :SNUMB>A
15$ >SPAA :S>6>N
151 >SPAAQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge":seven
15# >SA>' :SA>'
15@ >ST>pTO :ST>pT
15F >ST:)O STO)>
155 >ST:MA/:CN+):N>A) ):N>ST
15G >ST:MA/:CN+)O&AABTM:/A )O&>ST
15% >pP >pP
15, >pTAA> M:(
15- 'A/T 'A/T
1G$ 'A/T+(OB)> com+sun+s"ar+s0ee"+ain+Anal.sis+ge"'ac"ouble
@@G 15+1 'ormulas e /alc es!aKol-ingles
!. $spa:ol )n,les
1G1 'A)SO 'A)S>
1G# '>/cA (AT>
1G@ '>/cA+M>S com+sun+s"ar+s0ee"+ain+Anal.sis+ge">a"e
1GF '>/cANqM>AO (AT>6A)U>
1G5 ':iO ':p>(
1GG ':)A AON
1G% ':)AS AONS
1G, ':N+M>S com+sun+s"ar+s0ee"+ain+Anal.sis+ge">omon"0
1G- ':Sc>A ':Sc>A
1%$ 'OAMU)A 'OAMU)A
1%1 'AA/+AuO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oear2rac
1%# 'A>/U>N/:A 'A>eU>N/O
1%@ 'UN+>AAOA com+sun+s"ar+s0ee"+ain+Anal.sis+ge">r2
1%F 'UN+>AAOA+/OMP) com+sun+s"ar+s0ee"+ain+Anal.sis+ge">r2c
1%5 &AMMA &AMMA
1%G &AMMA+)N &AMMA)N
1%% &AUSS &AUSS
1%, &>TP:6OT(ATA &>TP:6OT(ATA
1%- &AA(OS (>&A>>S
1,$ cA))AA S>AA/c
1,1 c>p+A+B:N com+sun+s"ar+s0ee"+ain+Anal.sis+ge"ce;#Bin
1,# c>p+A+(>/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"ce;#(ec
1,@ c>p+A+O/T com+sun+s"ar+s0ee"+ain+Anal.sis+ge"ce;#Oc"
1,F c:P>A6BN/U)O cOP>A):Nt
1,5 cOiA Sc>>T
1,G cOiAS Sc>>TS
1,% cOAA cOUA
1,, cOAANqM>AO T:M>6A)U>
1,- cOO TO(AO
1-$ :&UA) >pA/T
1-1 :M+ABS com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mabs
1-# :M+AN&U)O com+sun+s"ar+s0ee"+ain+Anal.sis+ge":margumen"
1-@ :M+/ONiU&A(A com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mcon3uga"e
1-F :M+/OS com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mcos
1-5 :M+(:6 com+sun+s"ar+s0ee"+ain+Anal.sis+ge":miv
1-G :M+>pP com+sun+s"ar+s0ee"+ain+Anal.sis+ge":me;!
1-% :M+)N com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mln
1-, :M+)O&1$ com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mlog1$
1-- :M+)O&# com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mlog#
#$$ :M+POT com+sun+s"ar+s0ee"+ain+Anal.sis+ge":m!o8er
#$1 :M+PAO(U/T com+sun+s"ar+s0ee"+ain+Anal.sis+ge":m!rouc"
#$# :M+AA:k# com+sun+s"ar+s0ee"+ain+Anal.sis+ge":ms7r"
#$@ :M+A>A) com+sun+s"ar+s0ee"+ain+Anal.sis+ge":mreal
#$F :M+S>NO com+sun+s"ar+s0ee"+ain+Anal.sis+ge":msin
#$5 :M+SUM com+sun+s"ar+s0ee"+ain+Anal.sis+ge":msum
#$G :M+SUSTA com+sun+s"ar+s0ee"+ain+Anal.sis+ge":msub
#$% :MA&:NAA:O com+sun+s"ar+s0ee"+ain+Anal.sis+ge":maginar.
#$, BN(:/> :N(>p
#$- :N(:A>/TO :N(:A>/T
#1$ :N'O :N'O
#11 :NT+A/UM com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Accrin"
#1# :NT+A/UM+6 com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Accrin"m
#1@ :NT+>'>/T:6O >''>/T:6>
#1F :NT+>'>/T:6OQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge">22ec"
#15 :NT+PA&O+(:A :SPMT
A!renieno OOo Basic @@%
!. $spa:ol )n,les
#1G :NT+A>N(:M:>NTO k&k
#1% :NT>AS>//:CN+>i> :NT>A/>PT
#1, :NT>A6A)O+/ON':ANkA /ON':(>N/>
#1- :N6+)O& )O&:N6
##$ :keU:>A(A )>'T
##1 i>AAAeUBA AANt
### i:S i:S
##@ t+>S:MO+MAOOA )AA&>
##F t+>S:MO+M>NOA SMA))
##5 )AA&O )>N
##G )>TAA+(>+T>S+>e6+A+BONO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Tbille7
##% )>TAA+(>+T>S+PA>/:O com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Tbill!rice
##, )>TAA+(>+T>S+A>N(TO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Tbill.iel
##- ):MP:AA /)>AN
#@$ )N )N
#@1 )O& )O&(91
#@# )O&1$ )O&1$
#@@ M+/+( &/(
#@F M+/+(QA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"&c
#@5 M+/+M )/M
#@G M+/+MQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge")cm
#@% Mdp MAp
#@, MdpA MApA
#@- MAOOA+O+:&UA) com+sun+s"ar+s0ee"+ain+Anal.sis+ge"&es"e!
#F$ MAOqS/ UPP>A
#F1 M(>T>AM M(>T>AM
#F# M>(:A+A/OTA(A TA:MM>AN
#F@ M>(:A+AAMO cAAM>AN
#FF M>(:A+&>OM &>OM>AN
#F5 M>(:ANA M>(:AN
#FG M>S MONTc
#F% M>S>S com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"(i22Mon"0s
#F, MBN M:N
#F- MBNA M:NA
#5$ M:NUS/ )ON>A
#51 M:NUTO M:NUT>
#5# M:N6>ASA M:N6>AS>
#5@ M:AA M:AA
#5F MMU)T MMU)T
#55 MO(A MO(>
#5G MON>(A (O))AA
#5% MON>(A+(>/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ollare
#5, MON>(A+'AA/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(ollar2r
#5- MU)T:NOM:A) com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Mul"inomial
#G$ Mq)T:P)O+:N'>A:OA ')OOA
#G1 Mq)T:P)O+SUP>A:OA />:):N&
#G# MUN:TAA:A MUN:T
#G@ N N
#GF N>&B:NOM(:ST N>&B:NOM(:ST
#G5 NO NOT
#GG NO( NA
#G% NOMPAOP:O PAOP>A
#G, NOAMA):kA/:CN STAN(AA(:k>
#G- NP>A NP>A
#%$ NScOAA T:M>
@@, 15+1 'ormulas e /alc es!aKol-ingles
!. $spa:ol )n,les
#%1 NUM+(>+S>MANAQA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Neesnum
#%# O OA
#%@ O/T+A+B:N com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oc"#Bin
#%F O/T+A+(>/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oc"#(ec
#%5 O/T+A+c>p com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oc"#ce;
#%G PA&O PMT
#%% PA&O+:NT+>NTA> /UM:PMT
#%, PA&O+:NT+>NTA>QA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/umi!m"
#%- PA&O+PA:N/+>NTA> /UMPA:N/
#,$ PA&O+PA:N/+>NTA>QA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"/um!rinc
#,1 PA&O:NT :PMT
#,# P>AASON P>AASON
#,@ P>N(:>NT> S)OP>
#,F P>A/>NT:) P>A/>NT:)>
#,5 P>AMUTA/:ON>S P>AMUT
#,G P>AMUTA/:ON>SA P>AMUTAT:ONA
#,% Pc: Pc:
#,, P: P:
#,- P)AkO (UAAT:ON
#-$ PO:SSON PO:SSON
#-1 POT>N/:A PON>A
#-# PA>/:O com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Price
#-@ PA>/:O+(>S/U>NTO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Priceisc
#-F PA>/:O+P>A+:AA>&U)AA+1 com+sun+s"ar+s0ee"+ain+Anal.sis+ge"O2!rice
#-5 PA>/:O+P>A+:AA>&U)AA+# com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Ol!rice
#-G PA>/:O+6>N/:M:>NTO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Pricema"
#-% PAOBAB:):(A( PAOB
#-, PAO(U/TO PAO(U/T
#-- PAOM>(:O A6>AA&>
@$$ PAOM>(:OA A6>AA&>A
@$1 PAONCST:/O 'OA>/AST
@$# PAU>BA+' 'T>ST
@$@ PAU>BA+':Sc>A+:N6 ':Sc>A:N6
@$F PAU>BA+i: /c:T>ST
@$5 PAU>BA+i:+:N6 /c::N6
@$G PAU>BA+T TT>ST
@$% PAU>BA+k kT>ST
@$, AA(:AN>S AA(:ANS
@$- AABk SeAT
@1$ AA:k#P: com+sun+s"ar+s0ee"+ain+Anal.sis+ge"S7r"!i
@11 AAN&O+P>A/>NT:) P>A/>NTAANt
@1# A>(ON(+MU)T com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Mroun
@1@ A>(ON(>A+:MPAA O((
@1F A>(ON(>A+PAA >6>N
@15 A>(ON(>AA AOUN(
@1G A>(ON(>AA+MAS AOUN(UP
@1% A>(ON(>AA+M>NOS AOUN((ONN
@1, A>>MP)AkAA A>P)A/>
@1- A>N(TO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oiel
@#$ A>N(TO+(>S/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oielisc
@#1 A>N(TO+P>A+:AA>&U)AA+1 com+sun+s"ar+s0ee"+ain+Anal.sis+ge"O2.iel
@## A>N(TO+P>A+:AA>&U)AA+# com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Ol.iel
@#@ A>N(TO+6>N/TO com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Oielma"
@#F A>P>T:A A>PT
@#5 A>S:(UO MO(
A!renieno OOo Basic @@-
!. $spa:ol )n,les
@#G AOMANO AOMAN
@#% AOT1@ com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"Ao"1@
@#, S>&UN(O S>/ON(
@#- S>M+(>)+AuO N>>tNUM
@@$ S>MANAS com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"(i22Neess
@@1 S>MANAS>NAuO com+sun+s"ar+s0ee"+ain+(a"e'unc"ions+ge"Neess:nOear
@@# S>NO S:N
@@@ S>NOc S:Nc
@@F S: :'
@@5 S:&NO S:&N
@@G S)N S)N
@@% SUBTOTA)>S SUBTOTA)
@@, SUMA SUM
@@- SUMA+/UA(AA(OS SUMSe
@F$ SUMA+PAO(U/TO SUMPAO(U/T
@F1 SUMA+S>A:>S com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Seriessum
@F# SUMAA+S: SUM:'
@F@ SUMAp#MASO# SUMp#PO#
@FF SUMAp#M>NOSO# SUMp#MO#
@F5 SUMApM>NOSO# SUMpMO#
@FG SUST:TU:A SUBST:TUT>
@F% SO( SO(
@F, T T
@F- TAN TAN
@5$ TANc TANc
@51 TASA AAT>
@5# TASA+(>S/ com+sun+s"ar+s0ee"+ain+Anal.sis+ge"(isc
@5@ TASA+:NT com+sun+s"ar+s0ee"+ain+Anal.sis+ge":n"ra"e
@5F TASA+NOM:NA) NOM:NA)
@55 TASA+NOM:NA)QA(( com+sun+s"ar+s0ee"+ain+Anal.sis+ge"Nominal
@5G T>N(>N/:A TA>N(
@5% T>pTO T>pT
@5, T:PO TOP>
@5- T:PO+(>+>AAOA >AAOATOP>
@G$ T:A :AA
@G1 T:A+NO+P>A com+sun+s"ar+s0ee"+ain+Anal.sis+ge"pirr
@G# TAANSPON>A TAANSPOS>
@G@ TAUN/AA TAUN/
@GF 6A P6
@G5 6A)OA 6A)U>
@GG 6AA 6AA
@G% 6AAA 6AAA
@G, 6AAP 6AAP
@G- 6AAPA 6AAPA
@%$ 6>A(A(>AO TAU>
@%1 6' '6
@%# 6'+P)AN com+sun+s"ar+s0ee"+ain+Anal.sis+ge"'vsc0eule
@%@ 6NA NP6
@%F 6NA+NO+P>A com+sun+s"ar+s0ee"+ain+Anal.sis+ge"pn!v
@%5 O AN(
@F$ 15+1 'ormulas e /alc es!aKol-ingles
1!.2 3istar 2uentes en un arc"i,o de Calc
)a siguien"es macros es"<n basaas en la 7ue mues"ra Anre8 Pi"on.as en su
e;celen"e libro e macros (ve la bibliogra2a)* en el original se mues"ran los nombres e las
2uen"es en un cuaro e mensa3e* con unos !e7ueKos cambios las mos"ramos en un arc0ivo
nuevo e /alc+ )as os son mu. !arecias* es"a !rimera "e mues"ra el nombre e la 2uen"e 3un"o
con los es"ilos o varian"es 7ue so!or"a+
,>'+g+nal d% !nd'%^ 0+&on?a]
,Es&as 8%'s+on%s Mau'+*+o Ba%:a
"u. 5+s&a'Ju%n&%s123
@+( oHool]+& !s >.)%*&
@+( o@%8+*% !s >.)%*&
@+( oJon&@%s*'+7&o's !s >.)%*&
@+( *o1 !s 5ong
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
@+( $a(7os203 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( a"@203 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
oHool]+& A $'%a&%Cno"%'8+*%2"*o(-sun-s&a'-a^&-Hool]+&"3
o@%8+*% A oHool]+&-*'%a&%"*'%%n$o(7a&+.l%@%8+*%206 03
oJon&@%s*'+7&o's A o@%8+*%-Jon&@%s*'+7&o's23

o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 "7'+8a&%4fa*&o'?/s*al*"6 "/d%faul&"6 06
(!'g23 3
U+&h o<u%8o@o*u(%n&o-g%&"h%%&s23-g%&B?#nd%x203
-g%&$%llB?0os+&+on20603-s%&"&'+ng2 "<Zk" 3
-g%&$%llB?0os+&+on21603-s%&"&'+ng2 "Ju%n&%" 3
Jo' *o1 A 5Bound2oJon&@%s*'+7&o's3 Ho CBound2oJon&@%s*'+7&o's3
-g%&$%llB?0os+&+on206*o1B13-s%&1alu%2 *o1B1 3
-g%&$%llB?0os+&+on216*o1B13-s%&"&'+ng2 oJon&@%s*'+7&o's2*o13-<a(% 9 " " 9
oJon&@%s*'+7&o's2*o13-"&?l%<a(% 3
<%x&
$a(7os203-J+%ld A 0
$a(7os203-#s!s*%nd+ng A H'u%
a"@203-<a(% A ""o'&J+%lds"
a"@203-1alu% A $a(7os23
-g%&$%llRang%B?<a(%2 "B14B" 9 $"&'2*o1B13 3-so'&2 a"@23 3
-g%&$%llRang%B?<a(%2"!14B1"3-g%&$olu(ns23->7&+(alU+d&h A H'u%
End U+&h
End "u.
)a seguna es similar* e;ce!"o 7ue solo "e mues"ra el nombre e la 2uen"e* sin
varian"es* es"o es !or 7ue la ma.ora e es"as varian"es las es"ablecemos !or c5igo con o"ros
m4"oos . !ro!ieaes (negri"a* cursiva* e"c)+
"u. 5+s&a'Ju%n&%s223
@+( oHool]+& !s >.)%*&
@+( o@%8+*% !s >.)%*&
@+( oJon&@%s*'+7&o's !s >.)%*&
@+( *o1 !s 5ong
@+( (!'g23
@+( o<u%8o@o*u(%n&o !s >.)%*&
@+( oJ@ !s >.)%*&
@+( o$u'so' !s >.)%*&
@+( $a(7os203 !s <%^ *o(-sun-s&a'-&a.l%-Ha.l%"o'&J+%ld
@+( a"@203 !s <%^ *o(-sun-s&a'-.%ans-0'o7%'&?1alu%
oHool]+& A $'%a&%Cno"%'8+*%2"*o(-sun-s&a'-a^&-Hool]+&"3
A!renieno OOo Basic @F1
o@%8+*% A oHool]+&-*'%a&%"*'%%n$o(7a&+.l%@%8+*%206 03
oJon&@%s*'+7&o's A o@%8+*%-Jon&@%s*'+7&o's23

o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 "7'+8a&%4fa*&o'?/s*al*"6 "/d%faul&"6 06
(!'g23 3
U+&h o<u%8o@o*u(%n&o-g%&"h%%&s23-g%&B?#nd%x203
-g%&$%llB?0os+&+on20603-s%&"&'+ng2 "Ju%n&%" 3
Jo' *o1 A 5Bound2oJon&@%s*'+7&o's3 Ho CBound2oJon&@%s*'+7&o's3
-g%&$%llB?0os+&+on206*o1B13-s%&"&'+ng2 oJon&@%s*'+7&o's2*o13-<a(% 3
<%x&

,$on un f+l&'o o.&%n%(os '%g+s&'os un+*os %n la *olu(na $
oJ@ A -g%&$%llRang%B?<a(%2 "!14!" 9 $"&'2*o1B13 3-*'%a&%J+l&%'@%s*'+7&o'2 H'u% 3
oJ@-"]+7@u7l+*a&%s A H'u%
oJ@-$on&a+nsH%ad%' A H'u%
oJ@-$o7?>u&7u&@a&a A H'u%
oJ@->u&7u&0os+&+on A -g%&$%llB?0os+&+on22603-g%&$%ll!dd'%ss23
-g%&$%llRang%B?<a(%2 "!14!" 9 $"&'2*o1B13 3-f+l&%'2 oJ@ 3

,El+(+na(os los da&os o'+g+nal%s6 *olu(na !
-g%&$olu(ns23-'%(o8%B?#nd%x20613

,$o(o f+l&'a(os6 a8%'+gua(os *uan&as f+las Fu%da'on
o$u'so' A -*'%a&%$u'so'B?Rang%2 -g%&$%llB?0os+&+on21603 3
o$u'so'-*olla7s%Ho$u''%n&R%g+on23

,>'d%na(os los no(.'%s d% las fu%n&%s
$a(7os203-J+%ld A 0
$a(7os203-#s!s*%nd+ng A H'u%
a"@203-<a(% A ""o'&J+%lds"
a"@203-1alu% A $a(7os23
-g%&$%llRang%B?<a(%2 "B14B" 9 $"&'2o$u'so'-g%&Ro^s-g%&$oun&3 3-so'&2 a"@ 3

,#ns%'&a(os la nu(%'a*+on d% las fu%n&%s
-g%&$%llB?0os+&+on20603-s%&"&'+ng2 "<Zk" 3
-g%&$%llB?0os+&+on20613-s%&1alu%2 1 3
-g%&$%llRang%B?<a(%2"!24!" 9 $"&'2o$u'so'-g%&Ro^s-g%&$oun&3 3-f+ll!u&o2 06 1 3

,!u&oa)us&a(os %l an*ho d% las *olu(nas
-g%&$%llRang%B?<a(%2"!14B1"3-g%&$olu(ns->7&+(alU+d&h A H'u%
End U+&h
End "u.
1!. 3istar 2ormatos en un arc"i,o de Calc
Solo "ienes 7ue !asarle la re2erencia al ocumen"o el cual "e in"erese ver sus
!ro!ieaes* si le !asas un ocumen"o nuevo* siem!re "e evolver< los mismos 2orma"os* si le
!asas alguno e "us ocumen"o* incluir< "oos "us 2orma"o !ersonalizaos+ >s"a macro !uee
"ener os !e7ueKas me3oras 7ue "e 7uean e "area* !rimero* !uees iscriminar los ocumen"os
!ara 7ue solo so!or"e los 7ue "engan el m4"oo ge"Number'orma"s . seguno* en la columna e
e3em!los* !or<s ver en la columna > un e3em!lo e caa 2orma"o* e;ce!"o los e la ca"egora
(e2inias !or el usuario* es"o es normal* !ues el nuevo ocumen"o no "iene es"os 2orma"o* !ero
!oras im!lemen"ar la co!ia e es"os 2orma"os !ara 7ue se vea el resul"ao+
,Basada %n %l o'+g+nal d% !nd'%^ 0+&on?a]
,Es&a 8%'s+on Mau'+*+o Ba%:a
"u. Hodos/5os/Jo'(a&os2@o*u(%n&o !s >.)%*&3
@+( oJo'(a&os !s >.)%*&
@+( ($la8%s6 (!'g23
@F# 15+@ )is"ar 2orma"os en un arc0ivo e /alc
@+( oJo'(a&o !s >.)%*&
@+( *o1 !s #n&%g%'
@+( a5o*al !s <%^ *o(-sun-s&a'-lang-5o*al%
@+( o<u%8o@o*u(%n&o !s >.)%*&
@+( sH+7o !s "&'+ng
,0a'a %s*'+.+' los fo'(a&os %n un nu%8o do*u(%n&o d% $al*
o<u%8o@o*u(%n&o A "&a'@%s]&o7-load$o(7on%n&J'o(CR52 "7'+8a&%4fa*&o'?/s*al*"6 "/d%faul&"6 06
(!'g23 3
U+&h o<u%8o@o*u(%n&o-g%&"h%%&s23-g%&B?#nd%x203
,>.&%n%(os los fo'(a&os d%l do*u(%n&o 7asado
oJo'(a&os A @o*u(%n&o-g%&<u(.%'Jo'(a&s23
,>.&%n%(os &odas las *la8%s d% los fo'(a&os
($la8%s A oJo'(a&os-Fu%'?I%?s2 06a5o*al6Jals% 3
Jo' *o1 A 5Bound2 ($la8%s 3 Ho CBound2 ($la8%s 3
,>.&%n%(os *ada fo'(a&o
oJo'(a&o A oJo'(a&os-g%&B?I%?2 ($la8%s2*o13 3
,<u(%'o s%*u%n*+al
-g%&$%llB?0os+&+on2 06*o1 3-s%&1alu%2 *o1B1 3
,@%f+n+(os la *a&%go'+a d%l fo'(a&o
"%l%*& $as% oJo'(a&o-H?7%
$as% 2 4 sH+7o A "J%*ha"
$as% 4 4 sH+7o A "H+%(7o"
$as% 6 4 sH+7o A "J%*ha H+%(7o"
$as% 8 4 sH+7o A "Mon%da"
$as% 16 4 sH+7o A "<u(%'o"
$as% 32 4 sH+7o A "$+%n&+f+*o"
$as% 64 4 sH+7o A "J'a**+on"
$as% 128 4 sH+7o A "0o'*%n&a)%"
$as% 256 4 sH+7o A "H%x&o"
$as% 1024 4 sH+7o A "5og+*a"
$as% 2048 4 sH+7o A "#nd%f+n+da"
$as% Els% 4 sH+7o A "@%f+n+do 7o' %l usua'+o"
End "%l%*&
-g%&$%llB?0os+&+on2 16*o1 3-s%&"&'+ng2 sH+7o 3
,Es*'+.+(os la *ad%na d%l fo'(a&o
-g%&$%llB?0os+&+on2 26*o1 3-s%&"&'+ng2 oJo'(a&o-Jo'(a&"&'+ng 3
,? su *la8% *o''%s7ond+%n&%
-g%&$%llB?0os+&+on2 36*o1 3-s%&1alu%2 ($la8%s2*o13 3
,Es*'+.+(os un nu(%'o al%a&o'+o %n&'% 100 ? 1000
-g%&$%llB?0os+&+on2 46*o1 3-s%&1alu%2 *o1B100B2Rnd10003 3
,5% %s&a.l%*%(os %l fo'(a&o *o''%s7ond+%n&%
-g%&$%llB?0os+&+on2 46*o1 3-<u(.%'Jo'(a& A ($la8%s2*o13
,!)us&a(os %l an*ho d% las *olu(nas
-g%&$%llRang%B?<a(%2 "!14E1" 3-g%&$olu(ns->7&+(alU+d&h A H'u%
<%x&
End U+&h
End "u.
A!renieno OOo Basic @F@
1= &iblio*ra2Ca
Una e las mo"ivaciones e es"e libro* es la 2al"a e ocumen"aci5n es es!aKol* son
realmen"e escasos los si"ios 7ue "ra"an la !rogramaci5n con OOo Basic en nues"ro iioma+
>n es!aKol=
Ariel /ons"ela es un e;celen"e com!aKero* siem!re is!ues"o a a.uar en las lis"as
e correo* en su !<gina encon"raras in"eresan"es e3em!los e c5igo en OOo Basic* es"e libro le
ebe muc0o a sus e3em!los= 888+arielcons"enla0aile+com+ar1ooo
NOTA= al a e 0o. 1,-iul-$-* el si"io es"a esac"ivao* es!eremos !ron"o "enerlo
e vuel"a+
)a &ua e !rogramaci5n e S"arO22ice , !ara BAS:/* es esencial !ara in"roucir"e
en la !rogramaci5n con OOo Basic= 0""!=11ocs+sun+com1a!!1ocs1oc1,1--1@#%Jlles
>n ingles=
>n los 2oros e a.ua e O!enO22ice+org* se !ublica muc0o c5igo in"eresan"e .
siem!re 0a. gen"e is!ues"a a a.uar"e=
0""!=11user+services+o!eno22ice+org1en12orum1vie82orum+!0!J2l#$
Un si"io con muc0as macros e "oos los niveles . sabores= 888+ooomacros+org
>l libro e Anre8 Pi"on.as si bien no es !ara nova"os .a es "oo un cl<sico en la
re
888+!i"on.as+org1oo+!0!
S"arO22ice , Programming &uie 2or BAS:/
0""!=11ocs+sun+com1a!!1ocs1oc1,1--$F@-
@FF 1% :nice Al2ab4"ico
1A Indice (l2ab$tico
B
biblio"ecas+++++++++++++++++++++++++++++++++++++++++++++++++++++++++G
I
:(>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++12
M
m5ulos++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++G
S
S"anar+++++++++++++++++++++++++++++++++++++++++++++++++++++++++1I

S-ar putea să vă placă și