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"
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"
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
,"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
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
>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
,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
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
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
,<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
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
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
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
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
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
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
#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
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$=7M . 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&
,>'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