Anda di halaman 1dari 206

INDICE

Instalar Visual Basic............................................................................................ 8


Antes de ejecutar el programa de instalacin..................................................9
Confgurar Visual Basic.................................................................................. 10
Desarrollar una aplicacin con Visual Basic......................................................11
Conceptos de Visual Basic............................................................................. 12
lementos del entorno integrado de desarrollo.............................................1!
Iniciar el ID de Visual Basic.......................................................................1!
lementos del entorno integrado de desarrollo..........................................1"
#pciones de entorno................................................................................... 18
$u primera aplicacin con Visual Basic.............................................................20
Hola, Visual Basic....................................................................................... 20
%a aplicacin de ejemplo &irstapp..................................................................28
&ormularios' controles ( men)s........................................................................ *2
Descripcin de las propiedades' m+todos ( e,entos.....................................**
Dise-ar un .ormulario.................................................................................... */
0acer clic en los 1otones para reali2ar acciones...........................................*3
Controles para mostrar e introducir te4to......................................................*9
5sar eti6uetas para mostrar te4to..............................................................!0
7ra1ajar con cuadros de te4to.....................................................................!1
Controles 6ue muestran opciones a los usuarios...........................................!!
$eleccionar opciones indi,iduales con casillas de ,erifcacin...................!/
Agrupar opciones con 1otones de opcin...................................................!3
5sar los cuadros de lista ( los cuadros com1inados.................................../2
Controles 6ue muestran im8genes ( gr8fcos................................................/*
7ra1ajar con el control de cuadro de imagen............................................../!
&undamentos de los men)s.............................................................................. /"
ditor de men)s 9cuadro de di8logo:............................................................./9
7ra1ajar con pro(ectos...................................................................................... "2
structura de un pro(ecto de Visual Basic........................................................"*
;dulos de controles de usuario ( de p8ginas de propiedades....................."/
Crear' a1rir ( guardar pro(ectos.......................................................................""
1

Agregar' 6uitar ( guardar arc<i,os................................................................"8
Crear ( ejecutar un arc<i,o ejecuta1le.............................................................30
Defnir opciones del pro(ecto........................................................................... 31
structura de una aplicacin en Visual Basic....................................................32
specifcaciones' limitaciones ( .ormatos de arc<i,os de Visual Basic.............3!
=e6uisitos del sistema para aplicaciones de Visual Basic..............................3/
%imitaciones de los pro(ectos........................................................................3/
&ormatos de arc<i,os de pro(ecto.................................................................3/
Agregar controles a un proyecto...............................................................38
;anual del programador................................................................................... 82
>artes............................................................................................................. 82
&undamentos de programacin.........................................................................82
7emas............................................................................................................. 8*
Aplicacin de ejemplo.................................................................................... 8!
structura de una aplicacin en Visual Basic....................................................8!
Antes de empe2ar a codifcar............................................................................ 8"
;ec8nica de la escritura de cdigo...................................................................88
;dulos de cdigo............................................................................................ 88
;dulos de .ormulario................................................................................... 89
;dulos est8ndar.......................................................................................... 89
;dulos de clase........................................................................................... 89
5sar el ditor de cdigo.................................................................................... 89
7erminar el cdigo de .orma autom8tica........................................................90
;arcadores.................................................................................................... 91
Conceptos 18sicos del cdigo........................................................................... 91
Di,idir una )nica instruccin en ,arias l?neas................................................91
Com1inar instrucciones en una l?nea.............................................................92
Agregar comentarios al cdigo......................................................................92
Descripcin de los sistemas de numeracin..................................................92
Con,enciones de nomenclatura en Visual Basic............................................9*
&unciones de con,ersin de tipos.....................................................................9!
Introduccin a las ,aria1les' constantes ( tipos de datos.................................93
Varia1les........................................................................................................... 98
2

Almacenar ( recuperar datos en ,aria1les....................................................99
Declarar ,aria1les.......................................................................................... 99
Declaracin impl?cita................................................................................... 100
Declaracin e4pl?cita.................................................................................... 101
Descripcin del alcance de las ,aria1les.........................................................102
sta1lecer el alcance de las ,aria1les.........................................................102
Varia1les utili2adas en un procedimiento.....................................................10*
Varia1les utili2adas en un mdulo...............................................................10*
Varia1les utili2adas por todos los mdulos..................................................10*
Constantes...................................................................................................... 10!
Crear constantes propias............................................................................. 10/
Alcance de las constantes defnidas por el usuario......................................10"
,itar re.erencias circulares.........................................................................10"
7ipos de datos................................................................................................. 103
Declarar ,aria1les con tipos de datos..........................................................103
7ipos de datos num+ricos............................................................................ 108
l tipo de dato B(te..................................................................................... 109
l tipo de dato $tring................................................................................... 109
Intercam1iar cadenas ( n)meros.................................................................110
l tipo de dato Boolean................................................................................ 111
l tipo de dato Date..................................................................................... 111
l tipo de dato #1ject.................................................................................. 111
Con,ertir tipos de datos............................................................................... 112
l tipo de dato Variant................................................................................. 11*
l ,alor mpt(.............................................................................................. 11!
l ,alor @ull.................................................................................................. 11!
l ,alor rror................................................................................................ 11/
;atrices.......................................................................................................... 11/
Declarar matrices de tama-o fjo.................................................................11"
sta1lecer los l?mites superior e in.erior......................................................11"
;atrices 6ue contienen otras matrices........................................................113
;atrices multidimensionales.......................................................................118
5sar 1ucles para manipular matrices..........................................................118
*

Instrucciones................................................................................................... 119
#pen 9Instruccin:....................................................................................... 119
Close 9Instruccin:....................................................................................... 120
Input A 9Instruccin:.................................................................................... 121
>rint A 9Instruccin:..................................................................................... 122
Dim 9Instruccin:......................................................................................... 12!
#ption 4plicit.............................................................................................. 12"
#ption Base 9Instruccin:............................................................................. 123
De.tipo 9Instrucciones:................................................................................. 123
&or...@e4t 9Instruccin:................................................................................. 1*0
&ormat 9&uncin:.......................................................................................... 1*2
=ig<t 9&uncin:............................................................................................. 1*!
&ormatos num+ricos defnidos por el usuario 9.uncin &ormat:...................1*!
Cdigo A$CII................................................................................................ 1*3
&undamentos de programacin.......................................................................1*3
Introduccin a los procedimientos..................................................................1*3
>rocedimientos $u1........................................................................................ 1*8
>rocedimientos generales............................................................................ 1*9
>rocedimientos &unction................................................................................. 1!0
7ra1ajar con procedimientos........................................................................... 1!2
Crear procedimientos nue,os......................................................................1!2
$eleccionar procedimientos e4istentes........................................................1!2
%lamar a procedimientos............................................................................. 1!*
%lamar a procedimientos $u1......................................................................1!*
%lamar a procedimientos &unction...............................................................1!*
%lamar a procedimientos en otros mdulos.................................................1!!
>rocedimientos en .ormularios.................................................................1!!
>rocedimientos en mdulos de clase........................................................1!!
>rocedimientos en mdulos est8ndar.......................................................1!!
>asar argumentos a procedimientos...............................................................1!/
7ipos de datos de los argumentos...............................................................1!/
>asar argumentos por ,alor......................................................................... 1!/
>asar argumentos por re.erencia.................................................................1!"
!

5sar argumentos opcionales........................................................................1!"
>roporcionar un ,alor predeterminado a un argumento opcional................1!3
5sar un n)mero indefnido de argumentos..................................................1!8
Crear instrucciones m8s sencillas mediante argumentos con nom1re........1!8
Determinar el soporte de argumentos con nom1re..................................1!9
Introduccin a las estructuras de control........................................................1!9
structuras de decisin................................................................................... 1/0
I....7<en........................................................................................................ 1/0
I....7<en...lse.............................................................................................. 1/1
$elect Case.................................................................................................. 1/2
structuras de 1ucle....................................................................................... 1/*
Do...%oop...................................................................................................... 1/!
&or...@e4t...................................................................................................... 1//
&or ac<...@e4t............................................................................................. 1/"
7ra1ajar con estructuras de control.................................................................1/3
structuras de control anidadas..................................................................1/3
$alir de una estructura de control................................................................1/8
$alir de un procedimiento $u1 o &unction....................................................1/9
specifcaciones' limitaciones ( .ormatos de arc<i,os de Visual Basic...........1"0
%imitaciones de los pro(ectos......................................................................... 1"0
&ormatos de arc<i,os de pro(ecto..................................................................1"1
4tensiones de arc<i,os de pro(ecto...........................................................1"1
Arc<i,os ,arios ( de tiempo de dise-o.....................................................1"1
Arc<i,os de tiempo de ejecucin..............................................................1"*
Con,enciones de codifcacin de Visual Basic................................................1"!
B>or 6u+ e4isten las con,enciones de codifcacinC.......................................1"/
Con,enciones de codifcacin m?nimas.......................................................1"/
Con,enciones de nom1res de o1jetos............................................................1"/
>refjos sugeridos para controles.................................................................1""
>refjos sugeridos para los o1jetos de acceso a datos 9DA#:.......................130
>refjos sugeridos para men)s.....................................................................131
$eleccin de prefjos para otros controles...................................................132
Con,enciones de nom1res de constantes ( ,aria1les.....................................132
/

>refjos de alcance de ,aria1les...................................................................13!
Constantes................................................................................................... 13!
Varia1les...................................................................................................... 13/
7ipos de datos de ,aria1les......................................................................... 13/
@om1res descripti,os de ,aria1les ( procedimientos..................................13"
7ipos defnidos por el usuario......................................................................13"
Con,enciones de codifcacin estructurada....................................................13"
Con,enciones de comentarios al cdigo......................................................133
Dar .ormato al cdigo.................................................................................. 138
Agrupacin de constantes........................................................................ 139
#peradores D ( E..................................................................................... 139
Crear cadenas para ;sgBo4' InputBo4 ( consultas $F%...........................139
A@G# HIII>DIA........................................................................................... 180
#peraciones 18sicas.................................................................................... 180
$uma o adicinJeditar K editar cdigoL......................................................180
>roducto por un escalarJeditar K editar cdigoL.........................................182
>roductoJeditar K editar cdigoL................................................................18!
=angoJeditar K editar cdigoL....................................................................183
7raspuestaJeditar K editar cdigoL.............................................................183
$istema de ecuaciones lineales...................................................................183
$istemas lineales realesJeditar K editar cdigoL...........................................188
=epresentacin gr8fcaJeditar K editar cdigoL..........................................188
7ipos de sistemasJeditar K editar cdigoL..................................................189
;+todos de solucin a sistemas de ecuaciones lineales...........................191
Eliminacin de Gauss-Jordan........................................................................19!
$olucin de sistemas lineales en un anillo...................................................19/
BIENVENIDOS A VISUAL BASIC
Bien,enidos a ;icroso.t Visual Basic' la manera m8s r8pida ( sencilla de
crear aplicaciones para ;icroso.t HindoMs
N
. 7anto si es un pro.esional
e4perimentado como un reci+n llegado a la programacin en HindoMs'
Visual Basic le proporciona un juego completo de <erramientas 6ue
.acilitan el desarrollo r8pido de aplicaciones.
BFu+ es Visual BasicC %a pala1ra OVisualO <ace re.erencia al m+todo 6ue
se utili2a para crear la inter.a2 gr8fca de usuario 9P5I:. n lugar de
"

escri1ir numerosas l?neas de cdigo para descri1ir la apariencia ( la
u1icacin de los elementos de la inter.a2' simplemente puede agregar
o1jetos pre.a1ricados en su lugar dentro de la pantalla. $i <a utili2ado
alguna ,e2 un programa de di1ujo como >aint' (a tiene la ma(or parte
de las <a1ilidades necesarias para crear una inter.a2 de usuario e.ecti,a.
%a pala1ra OBasicO <ace re.erencia al lenguaje BA$IC 9Beginners AllQ
>urpose $(m1olic Instruction Code:' un lenguaje utili2ado por m8s
programadores 6ue ning)n otro lenguaje en la <istoria de la in.orm8tica
o computacin. Visual Basic <a e,olucionado a partir del lenguaje BA$IC
original ( a<ora contiene centenares de instrucciones' .unciones (
pala1ras cla,e' muc<as de las cuales est8n directamente relacionadas
con la inter.a2 gr8fca de HindoMs. %os principiantes pueden crear
aplicaciones )tiles con slo aprender unas pocas pala1ras cla,e' pero' al
mismo tiempo' la efcacia del lenguaje permite a los pro.esionales
acometer cual6uier o1jeti,o 6ue pueda alcan2arse mediante cual6uier
otro lenguaje de programacin de HindoMs.
l lenguaje de programacin Visual Basic no es e4clusi,o de Visual Basic.
%a dicin para aplicaciones del sistema de programacin de Visual
Basic' incluida en ;icroso.t 4cel' ;icroso.t Access ( muc<as otras
aplicaciones HindoMs' utili2an el mismo lenguaje. l sistema de
programacin de Visual Basic' $cripting dition 9VB$cript: es un lenguaje
de secuencias de comandos ampliamente di.undido ( un su1conjunto
del lenguaje Visual Basic. %a in,ersin reali2ada en el aprendi2aje de
Visual Basic le a(udar8 a a1arcar estas otras 8reas.
$i su o1jeti,o es crear un pe6ue-o programa para su uso personal o
para su grupo de tra1ajo' un sistema para una empresa o incluso
aplicaciones distri1uidas de alcance mundial a tra,+s de Internet' Visual
Basic dispone de las <erramientas 6ue necesita.
%as caracter?sticas de acceso a datos le permiten crear 1ases de
datos' aplicaciones cliente' ( componentes de ser,idor escala1les
para los .ormatos de las 1ases de datos m8s conocidas' incluidos
;icroso.t $F% $er,er ( otras 1ases de datos de 8m1ito
empresarial.
%as tecnolog?as Acti,eGR le permiten usar la .uncionalidad
proporcionada por otras aplicaciones' como el procesador de
te4tos ;icroso.t Hord' la <oja de c8lculo ;icroso.t 4cel ( otras
aplicaciones HindoMs. >uede incluso automati2ar las aplicaciones
( los o1jetos creados con la dicin >ro.esional o la dicin
mpresarial de Visual Basic.
3

%as capacidades de Internet .acilitan el acceso a documentos (
aplicaciones a tra,+s de Internet o intranet desde su propia
aplicacin' o la creacin de aplicaciones de ser,idor para Internet.
%a aplicacin terminada es un aut+ntico arc<i,o .e4e 6ue utili2a
una m86uina ,irtual de Visual Basic 6ue puede distri1uir con toda
li1ertad.
diciones de Visual Basic
Visual Basic se encuentra disponi1le en tres ,ersiones' cada una de las
cuales est8 orientada a unos re6uisitos de programacin espec?fcos.
%a dicin de Aprendi2aje de Visual Basic permite a los
programadores crear ro1ustas aplicaciones para ;icroso.t
HindoMs ( HindoMs @7
N
. Inclu(e todos los controles intr?nsecos'
adem8s de los controles de cuadr?cula' de fc<as ( los controles
enla2ados a datos. %a documentacin proporcionada con esta
edicin inclu(e el CD OAprenda VisualBasic (aO junto con el de la
1i1lioteca de ;icroso.t De,eloper @etMorS 9;$D@R: 6ue
contienen documentacin completa en pantalla.
%a dicin >ro.esional proporciona a los pro.esionales un conjunto
completo de <erramientas para desarrollar soluciones para
terceros. Inclu(e todas las caracter?sticas de la dicin de
Aprendi2aje' as? como controles Acti,eG adicionales' el dise-ador
de aplicaciones para Internet In.ormation $er,er ( Visual Data1ase
7ools and Data. %a documentacin 6ue se proporciona con la
dicin >ro.esional inclu(e el li1ro Caracter?sticas empresariales de
Visual $tudio m8s los CD de ;icroso.t De,eloper @etMorS 6ue
contienen documentacin completa en pantalla.
%a dicin mpresarial permite a los pro.esionales crear slidas
aplicaciones distri1uidas en un entorno de e6uipo. Inclu(e todas
las caracter?sticas de la dicin >ro.esional' as? como <erramientas
de BacS #Tce como $F% $er,er' ;icroso.t 7ransaction $er,er'
Internet In.ormation $er,er' Visual $ource$a.e' $@A $er,er' etc. %a
documentacin impresa 6ue se proporciona con la dicin
mpresarial inclu(e el li1ro Caracter?sticas empresariales de Visual
$tudio m8s los CD de ;icroso.t De,eloper @etMorS 6ue contienen
documentacin completa en pantalla.
Instalar Visual Basic
Visual Basic se instala en su e6uipo mediante el programa de
instalacin. l programa de instalacin instala Visual Basic ( otros
componentes del producto' desde el CDQ=#; al disco duro.7am1i+n
8

instala los arc<i,os necesarios para mostrar la documentacin del CD de
;$D@. $i lo elige' puede instalar tan slo la documentacin ( los
ejemplos de Visual Basic en su e6uipo.
Importante @o puede copiar simplemente los arc<i,os del CDQ=#; el
disco duro ( ejecutar Visual Basic. De1e usar el programa de instalacin'
6ue descomprime e instala los arc<i,os en los directorios apropiados.
Antes de ejecutar el programa de instalacin Cosas 6ue de1e
compro1ar antes de la instalacin.
Instalar Visual Basic Instrucciones para instalar Visual Basic.
Antes de ejecutar el prograa de instalaci!n
Antes de instalar Visual Basic' aseg)rese de 6ue el e6uipo cumple los
re6uisitos m?nimos ( lea el arc<i,o %+ame' 6ue se encuentra en el
directorio ra?2 del disco de instalacin.
Compro1ar los re6uisitos de <ardMare ( del sistema
>ara ejecutar Visual Basic' tiene 6ue disponer de cierto <ardMare (
so.tMare instalado en su e6uipo. ntre los re6uisitos del sistema ca1e
citar los siguientesU
;icroso.t HindoMs 9/ o posterior' o ;icroso.t HindoMs @7
HorSstation !.0 o posterior 9se recomienda $er,ice >acS *:.
!8"DGV"" ;02 o modelo superior de procesador 9se recomienda
procesador >entium o superior: o cual6uier procesador Alp<a 6ue
ejecute ;icroso.t HindoMs @7 HorSstation.
5na unidad de CDQ=#;.
>antalla VPA o de ma(or resolucin' compati1le con ;icroso.t
HindoMs.
1" ;B de =A; para HindoMs 9/' *2 ;B de =A; para HindoMs @7
HorSstation.
5n mouse 9ratn: u otro dispositi,o de puntero.
>ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de los
re6uisitos' ,ea O=e6uisitos del sistema para aplicaciones de Visual BasicO
en Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual
BasicO.
Lectura del arc"i#o L$ae
9

l arc<i,o %+ame enumera los cam1ios reali2ados a la documentacin de
Visual Basic desde su pu1licacin. >uede encontrarlo si selecciona
%+ame primero en la pantalla inicial de la instalacin o en el directorio
ra?2 del CDQ=#;. 7am1i+n es posi1le a1rirlo desde la p8gina de inicio de
Visual Basic en la documentacin. Vea la primera seccin del arc<i,o
para o1tener detalles ( nue,a in.ormacin acerca de la instalacin de
Visual Basic.
Con%gurar Visual Basic
Cuando ejecuta el programa de instalacin' se crea un directorio para
Visual BasicW despu+s puede seleccionar los componentes de Visual
Basic 6ue desea Instalar.
A e4cepcin de los arc<i,os del sistema operati,o del directorio X#s' los
arc<i,os del CDQ=#; no est8n comprimidos' por lo 6ue puede usarlos
directamente desde el disco. >or ejemplo' e4isten numerosas
<erramientas ( componentes en el directorio X7ools 6ue pueden
ejecutarse o instalarse directamente desde el CD.
>ara reali2ar la instalacin desde el CDQ=#;
1. Inserte el disco en la unidad de CDQ=#;.
2. 5tilice el comando apropiado del entorno operati,o para ejecutar
el >rograma de instalacin' 6ue se encuentra en el directorio ra?2
del Disco 1. $i est8 acti,ado Auto>la( en el sistema' el >rograma
de instalacin se cargar8 autom8ticamente cuando inserte el
disco.
*. $eleccione Instalar Visual Basic ".0.
!. $iga las instrucciones de instalacin 6ue aparecen en la pantalla.
>ara o1tener m8s in.ormacin >ara o1tener instrucciones detalladas
acerca de la instalacin de Visual Basic' ,ea el arc<i,o %+ame.
Agregar o 6uitar componentes de Visual Basic
>uede ejecutar el programa de instalacin tantas ,eces como sea
necesario. >or ejemplo' puede ejecutar el programa de instalacin para
,ol,er a instalar Visual Basic en otro directorio o para instalar otras
partes de Visual Basic.
>ara agregar o 6uitar componentes de Visual Basic
1. Inserte el disco completo en la unidad de CDQ=#;.
10

2. 5tilice el comando apropiado del entorno operati,o para ejecutar
el >rograma de instalacin' 6ue se encuentra en el directorio ra?2
del disco compacto. $i est8 acti,ado Auto>la( en el sistema' el
>rograma de instalacin se cargar8 autom8ticamente cuando
inserte el disco.
*. 0aga clic en el 1otn >ersonali2ada del cuadro de di8logo
Instalacin de ;icroso.t Visual Basic ".0.
!. $eleccione los componentes 6ue ,a a instalar 9o anule la seleccin
de los componentes 6ue ,a a 6uitar: en el cuadro de lista
#pciones del cuadro de di8logo >ersonali2ada.
/. $iga las instrucciones de instalacin 6ue aparecen en la pantalla.
Iniciar Visual Basic
n cuanto termine el procedimiento de instalacin' puede iniciar Visual
Basic mediante el 1otn Inicio de la 1arra de tareas de HindoMs. $i est8
acti,ado Auto>la( en el sistema' tam1i+n puede iniciar Visual Basic
insertando el CDQ=#; de Visual Basic.
>ara o1tener m8s in.ormacin Vea ODesarrollar una aplicacin con
Visual BasicO.
Desarrollar una aplicaci!n con Visual Basic
$lo se necesitan unos minutos para crear su primera aplicacin con
Visual Basic. >uede crear la inter.a2 de usuario Odi1ujandoO controles'
como cuadros de te4to ( 1otones de comando' en un .ormulario. A
continuacin' esta1le2ca las propiedades del .ormulario ( los controles
para especifcar ,alores como el t?tulo' el color ( el tama-o. &inalmente'
escri1a el cdigo para dar ,ida a la aplicacin. %os pasos 18sicos 6ue
dar8 en su primera aplicacin le ense-ar8n los principios 6ue usar8 con
cual6uier otra aplicacin 6ue desarrolle.
ste cap?tulo proporciona una introduccin al proceso de desarrollo de
aplicaciones' descri1e los t+rminos ( conocimientos 6ue necesita para
usar Visual Basic ( le gu?a paso a paso a tra,+s de ,arias aplicaciones
sencillas.
7emas
Conceptos de Visual Basic
Comparacin de Visual Basic ( los lenguajes de programacin
11

tradicionales.
lementos del entorno integrado de desarrollo
Introduccin a las <erramientas ( al entorno de Visual Basic.
$u primera aplicacin con Visual Basic
Creacin paso a paso de una aplicacin sencilla' donde se ilustran
las t+cnicas 18sicas.
Aplicacin de ejemplo
&irstapp.,1p
Algunos de los ejemplos de cdigo de este cap?tulo est8n tomados
de la aplicacin de ejemplo &irstapp.,1p 6ue se encuentra en el
directorio $amples.
Conceptos de Visual Basic
>ara entender el proceso de desarrollo de una aplicacin' es )til
comprender algunos de los conceptos cla,e alrededor de los cuales est8
construido Visual Basic. >uesto 6ue Visual Basic es un lenguaje de
desarrollo para HindoMs' es necesario .amiliari2arse con el entorno
HindoMs. $i no tiene e4periencia en la programacin para HindoMs'
necesitar8 conocer algunas di.erencias .undamentales entre la
programacin para HindoMs .rente a otros entornos.
&uncionamiento de HindoMsU ,entanas' e,entos ( mensajes
5n estudio pro.undo del .uncionamiento interno de HindoMs necesitar?a
un li1ro completo. @o es necesario tener un pro.undo conocimiento de
todos los detalles t+cnicos. 5na ,ersin reducida del .uncionamiento de
HindoMs inclu(e tres conceptos cla,eU ,entanas' e,entos ( mensajes.
5na ,entana es simplemente una regin rectangular con sus propios
l?mites. >ro1a1lemente (a sa1e 6ue <a( ,arios tipos de ,entanasU una
,entana 4plorador en HindoMs 9/' una ,entana de documento dentro
de su programa de proceso de te4tos o un cuadro de di8logo 6ue
emerge para recordarle una cita. Aun6ue +stos son los ejemplos m8s
12

comunes' realmente <a( otros muc<os tipos de ,entanas. 5n 1otn de
comando es una ,entana. %os iconos' cuadros de te4to' 1otones de
opcin ( 1arras de men)s son todos ,entanas.
l sistema operati,o ;icroso.t HindoMs administra todas estas ,entanas
asignando a cada una un )nico n)mero identifcador 9controlador de
,entana o <Hnd:. l sistema controla continuamente cada una de estas
,entanas para ,er si e4isten signos de acti,idad o e,entos. %os e,entos
pueden producirse mediante acciones del usuario' como <acer clic con el
mouse 9ratn: o presionar una tecla' mediante programacin o incluso
como resultado de acciones de otras ,entanas.
Cada ,e2 6ue se produce un e,ento se en,?a un mensaje al sistema
operati,o. l sistema procesa el mensaje ( lo transmite a las dem8s
,entanas. ntonces' cada ,entana puede reali2ar la accin apropiada'
1as8ndose en sus propias instrucciones para tratar ese mensaje en
particular 9por ejemplo' ,ol,erse a di1ujar cuando otra ,entana la <a
dejado al descu1ierto:.
Como puede imaginar' tratar todas las com1inaciones posi1les de
,entanas' e,entos ( mensajes podr?a ser intermina1le.
A.ortunadamente' Visual Basic le e,ita tener 6ue tratar con todos los
controladores de mensajes de 1ajo ni,el. ;uc<os de los mensajes los
controla autom8ticamente Visual Basic' mientras 6ue otros se tratan
como procedimientos de e,ento para su comodidad. sto le permite
crear r8pidamente efcaces aplicaciones sin tener 6ue tratar detalles
innecesarios.
Descripcin del modelo controlado por e,entos
n las aplicaciones tradicionales o Opor procedimientosO' la aplicacin es
la 6ue controla 6u+ partes de cdigo ( en 6u+ secuencia se ejecutan. %a
ejecucin comien2a con la primera l?nea de cdigo ( contin)a con una
ruta predefnida a tra,+s de la aplicacin' llamando a los procedimientos
seg)n se necesiten.
n una aplicacin controlada por e,entos' el cdigo no sigue una ruta
predeterminadaW ejecuta distintas secciones de cdigo como respuesta a
los e,entos. %os e,entos pueden desencadenarse por acciones del
usuario' por mensajes del sistema o de otras aplicaciones' o incluso por
la propia aplicacin. %a secuencia de estos e,entos determina la
secuencia en la 6ue se ejecuta el cdigo' por lo 6ue la ruta a tra,+s del
cdigo de la aplicacin es di.erente cada ,e2 6ue se ejecuta el
programa.
1*

>uesto 6ue no puede predecir la secuencia de los e,entos' el cdigo
de1e esta1lecer ciertos supuestos acerca del Oestado del mundoO
cuando se ejecute. Cuando <aga suposiciones 9por ejemplo' 6ue un
campo de entrada de1e contener un ,alor antes de ejecutar un
procedimiento para procesar ese ,alor:' de1e estructurar la aplicacin
de .orma 6ue asegure 6ue esa suposicin siempre ser8 ,8lida 9por
ejemplo' des<a1ilitando el 1otn de comando 6ue inicia el
procedimiento <asta 6ue el campo de entrada contenga un ,alor:.
l cdigo tam1i+n puede desencadenar e,entos durante la ejecucin.
>or ejemplo' cam1iar mediante programacin el te4to de un cuadro de
te4to <ace 6ue se produ2ca el e,ento C<ange del cuadro de te4to. sto
causar?a la ejecucin del cdigo 9si lo <a(: contenido en el e,ento
C<ange. $i supone 6ue este e,ento slo se desencadenar8 mediante la
interaccin del usuario' podr?a ,er resultados inesperados. >or esta
ra2n es importante comprender el modelo controlado por e,entos (
tenerlo en cuenta cuando dise-e su aplicacin.
Desarrollo interacti,o
l proceso de desarrollo de las aplicaciones tradicionales se puede
di,idir en tres etapas di.erentesU escritura' compilacin ( compro1acin
del cdigo. A di.erencia de los lenguajes tradicionales' Visual Basic
utili2a una apro4imacin interacti,a para el desarrollo' di.uminando la
distincin entre los tres pasos.
n la ma(or?a de los lenguajes' si comete un error al escri1ir el cdigo' el
compilador intercepta este error cuando comience a compilar la
aplicacin. De1e encontrar ( corregir el error ( comen2ar de nue,o con
el ciclo de compilacin' repitiendo el proceso para cada error
encontrado. Visual Basic interpreta el cdigo a medida 6ue lo escri1e'
interceptando ( resaltando la ma(or?a de los errores de sinta4is en el
momento. s casi como tener un e4perto ,igilando cmo escri1e el
cdigo.
Adem8s' para interceptar errores so1re la marc<a' Visual Basic tam1i+n
compila parcialmente el cdigo seg)n se escri1e. Cuando est+
preparado para ejecutar ( pro1ar la aplicacin' tardar8 poco tiempo en
terminar la compilacin. $i el compilador encuentra un error' 6uedar8
resaltado en el cdigo. >uede corregir el error ( seguir compilando sin
tener 6ue comen2ar de nue,o.
A causa de la naturale2a interacti,a de Visual Basic' se encontrar8
ejecutando la aplicacin .recuentemente a medida 6ue la desarrolle. De
esta .orma puede pro1ar los e.ectos del cdigo seg)n lo escri1a en lugar
de esperar a compilarlo m8s tarde.
1!

Eleentos del entorno integrado de desarrollo
l entorno de tra1ajo en Visual Basic se denomina .recuentemente
entorno integrado de desarrollo o ID' (a 6ue integra muc<as .unciones
di.erentes como el dise-o' modifcacin' compilacin ( depuracin en un
entorno com)n. n las <erramientas de desarrollo m8s tradicionales'
cada una de esas .unciones .uncionar?a como un programa di.erente'
cada una con su propia inter.a2. n esta seccin trataremos los
siguientes temasU
Iniciar el ID de Visual Basic >uesta en marc<a ( ejecucin.
lementos del entorno integrado de desarrollo Introduccin a las
di.erentes partes del ID.
#pciones de entorno Confguracin de Visual Basic de acuerdo
con sus pre.erencias personales.
Iniciar el IDE de Visual Basic
Cuando ejecute el programa de instalacin de Visual Basic' le permitir8
colocar los elementos del programa en un grupo de programas (a
e4istente o crear un nue,o grupo de programas ( nue,os elementos de
programa para Visual Basic en HindoMs. ntonces estar8 preparado
para iniciar Visual Basic desde HindoMs.
>ara iniciar Visual Basic desde HindoMs
1. 0aga clic en Inicio en la 1arra de tareas.
2. $eleccione >rogramas ( luego ;icroso.t Visual Basic ".0.
Yo 1ienY
0aga clic en Inicio en la 1arra de tareas.
$eleccione >rogramas.
5tilice el 4plorador de HindoMs para encontrar el arc<i,o
ejecuta1le de Visual Basic.
*. 0aga do1le clic en el icono de Visual Basic.
7am1i+n puede crear un acceso directo a Visual Basic ( <acer do1le clic
en +l.
1/

Cuando inicie Visual Basic por primera ,e2' ,er8 el entorno integrado de
desarrollo' como se muestra en la fgura 2.1.
&igura 2.1 l entorno integrado de desarrollo de Visual Basic
Eleentos del entorno integrado de desarrollo
l entorno integrado de desarrollo de Visual Basic 9ID: consta de los
siguientes elementos.
Barra de men)s
>resenta los comandos 6ue se usan para tra1ajar con Visual Basic.
Adem8s de los men)s est8ndar Arc<i,o' dicin' Ver' Ventana ( A(uda'
se proporcionan otros men)s para tener acceso a .unciones espec?fcas
de programacin como >ro(ecto' &ormato o Depuracin.
;en)s conte4tuales
Contienen accesos directos a acciones 6ue se reali2an con .recuencia.
>ara a1rir un men) conte4tual' <aga clic con el 1otn secundario del
mouse en el o1jeto 6ue est8 usando. %a lista espec?fca de opciones
disponi1les en el men) conte4tual depende de la parte del entorno en la
6ue se <ace clic con el 1otn secundario del mouse. >or ejemplo' el
men) conte4tual 6ue aparece cuando <ace clic con el 1otn secundario
del mouse en el cuadro de <erramientas le permite mostrar el cuadro de
di8logo Componentes' ocultar el cuadro de <erramientas' acoplar o
desacoplar el cuadro de <erramientas' o agregar una fc<a personali2ada
al cuadro de <erramientas.
Barras de <erramientas
1"

>roporcionan un r8pido acceso a los comandos usados normalmente en
el entorno de programacin. 0aga clic en un 1otn de la 1arra de
<erramientas para lle,ar a ca1o la accin 6ue representa ese 1otn. De
.orma predeterminada' al iniciar Visual Basic se presenta la 1arra de
<erramientas st8ndar. s posi1le acti,ar o desacti,ar otras 1arras de
<erramientas adicionales para modifcar' dise-ar .ormularios desde el
comando Barras de <erramientas del men) Ver.
%as 1arras de <erramientas se pueden acoplar de1ajo de la 1arra de
men)s o pueden OZotarO si selecciona la 1arra ,ertical del 1orde
i26uierdo ( la arrastra .uera de la 1arra de men)s.
Cuadro de <erramientas
>roporciona un conjunto de <erramientas 6ue puede usar durante el
dise-o para colocar controles en un .ormulario. Adem8s del dise-o del
cuadro de <erramientas predeterminado' puede crear su propio dise-o
personali2ado si selecciona Agregar fc<a en el men) conte4tual (
agrega controles a la fc<a resultante.
>ara o1tener m8s in.ormacin >ara aprender m8s acerca de los
controles espec?fcos' ,ea O&ormularios' controles ( men)sO ( O5sar los
controles est8ndar de Visual BasicO. >ara o1tener in.ormacin acerca de
cmo agregar controles al cuadro de <erramientas' ,ea OAgregar
controles a un pro(ectoO en OAdministrar pro(ectosO.
Ventana 4plorador de pro(ectos
numera los .ormularios ( mdulos del pro(ecto actual. 5n proyecto es
la coleccin de arc<i,os 6ue usa para generar una aplicacin.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de
pro(ectos' ,ea OAdministrar pro(ectosO.
Ventana >ropiedades
numera los ,alores de las propiedades del control o .ormulario
seleccionado. 5na propiedad es una caracter?stica de un o1jeto' como su
tama-o' t?tulo o color.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de
propiedades' ,ea ODescripcin de las propiedades' m+todos ( e,entosO
en O&ormularios' controles ( men)sO.
4aminador de o1jetos
13

numera los o1jetos disponi1les 6ue puede usar en su pro(ecto ( le
proporciona una manera r8pida de despla2arse a tra,+s del cdigo.
>uede usar el 4aminador de o1jetos para e4plorar o1jetos en Visual
Basic ( otras aplicaciones' ,er 6u+ m+todos ( propiedades est8n
disponi1les para esos o1jetos' ( pegar cdigo de procedimientos en su
aplicacin.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
uso del 4aminador de o1jetos para ,er procedimientos' ,ea
ODescripcin de o1jetosO en O>rogramar con o1jetosO. >ara o1tener m8s
in.ormacin acerca del uso de complementos para ampliar el entorno de
programacin de Visual Basic' ,ea O5sar asistentes ( complementosO en
OAdministrar pro(ectosO.
Dise-ador de .ormularios
&unciona como una ,entana en la 6ue se personali2a el dise-o de la
inter.a2 de su aplicacin. Agregue controles' gr8fcos e im8genes a un
.ormulario para crear la apariencia 6ue desee. Cada .ormulario de la
aplicacin tiene su propia ,entana dise-ador de .ormulario.
>ara o1tener m8s in.ormacin >ara aprender a agregar controles a una
aplicacin' ,ea O$u primera aplicacin con Visual BasicO' m8s adelante
en este mismo cap?tulo. >ara aprender m8s acerca del dise-o de la
inter.a2' ,ea OCrear la inter.a2 de usuarioO.
Ventana ditor de cdigo
&unciona como un editor para escri1ir el cdigo de la aplicacin. $e crea
una ,entana editor de cdigo di.erente para cada .ormulario o mdulo
del cdigo de la aplicacin.
>ara o1tener m8s in.ormacin >ara aprender m8s acerca de cmo
escri1ir cdigo ( el uso del editor de cdigo' ,ea O&undamentos de
programacinO.
Ventana >osicin del .ormulario
%a ,entana >osicin del .ormulario 9fgura 2.2: le permite colocar los
.ormularios de su aplicacin utili2ando una pe6ue-a representacin
gr8fca de la pantalla.
&igura 2.2 %a ,entana >osicin del .ormulario
18

Ventanas Inmediatas' %ocales e Inspeccin
stas ,entanas adicionales se proporcionan para la depuracin de la
aplicacin. $lo est8n disponi1les cuando ejecuta la aplicacin dentro
del ID.
>ara o1tener m8s in.ormacin >ara aprender m8s acerca de la
depuracin ( el uso de las ,entanas de depuracin' ,ea ODepurar el
cdigo ( tratamiento de erroresO.
@ota 7am1i+n puede agregar caracter?sticas a la inter.a2 de Visual
Basic mediante un programa llamado complemento. %os complementos'
disponi1les en ;icroso.t ( otros desarrolladores' pueden proporcionar
caracter?sticas como el control de cdigo .uente' 6ue permite mantener
pro(ectos de desarrollo en grupo.
Opciones de entorno
Visual Basic proporciona un alto grado de Ze4i1ilidad' permiti+ndole
confgurar el entorno de tra1ajo 6ue mejor se adapte a su propio estilo.
>uede elegir entre una inter.a2 de documentos simple o m)ltiple' (
puede ajustar el tama-o ( la posicin de ,arios elementos del ntorno
integrado de desarrollo 9ID:. sta distri1ucin persistir8 en las
siguientes sesiones de Visual Basic.
Inter.a2 $DI o ;DI
Con el ID de Visual Basic <a( disponi1les dos estilos di.erentesU la
inter.a2 de documento simple 9$DI: o la inter.a2 de documentos
m)ltiples 9;DI:. Con la opcin $DI todas las ,entanas del ID se pueden
mo,er li1remente por cual6uier lugar de la pantallaW siempre ( cuando
Visual Basic sea la aplicacin actual' permanecer8n encima de las
dem8s aplicaciones. Con la opcin ;DI' todas las ,entanas del ID est8n
contenidas en una )nica ,entana primaria de tama-o ajusta1le.
>ara cam1iar entre los modos $DI ( ;DI
1. n el men) 0erramientas' seleccione #pciones.
Aparecer8 el cuadro de di8logo #pciones.
2. $eleccione la fc<a A,an2ado.
19

*. Acti,e o desacti,e la casilla de ,erifcacin ntorno de desarrollo
$DI.
l ID comen2ar8 en el modo seleccionado la pr4ima ,e2 6ue
inicie Visual Basic.
Yo 1ienY
jecute Visual Basic desde la l?nea de comandos con el
par8metro Vsdi o Vmdi.
Acoplar ,entanas
;uc<as de las ,entanas del ID se pueden acoplar o conectar a otra o al
1orde de la pantalla. ntre estas ,entanas se inclu(en el cuadro de
<erramientas' la ,entana >osicin del .ormulario' el 4plorador de
pro(ectos' la ,entana >ropiedades' la >aleta de colores ( las ,entanas
Inmediato' %ocales e Inspeccin.
Con la opcin ;DI las ,entanas pueden acoplarse en cual6uier lado de la
,entana primaria' mientras 6ue con $DI slo se pueden acoplar de1ajo
de la 1arra de men)s. %as capacidades de acoplado se pueden acti,ar o
desacti,ar para una ,entana dada si acti,a la casilla de ,erifcacin
apropiada de la fc<a Acople del cuadro de di8logo #pciones' disponi1le
desde el comando #pciones del men) 0erramientas.
>ara acoplar o desacoplar una ,entana
1. $eleccione la ,entana 6ue desee acoplar o desacoplar.
2. Arrastre la ,entana a la u1icacin deseada manteniendo
presionado el 1otn primario del mouse.
*. l contorno de la ,entana se mostrar8 al arrastrar la ,entana.
!. $uelte el 1otn del mouse.
Su priera aplicaci!n con Visual Basic
Crear una aplicacin con Visual Basic es sencillo. BCmo de sencilloC
>ara compro1ar esta afrmacin prue1e las aplicaciones 0ola' Visual
Basic ( &irstappU
0ola' Visual Basic Creacin paso a paso de la cl8sica aplicacin
O0ola mundoO.
20

Aplicacin de ejemplo &irstapp Cree su primera aplicacin OrealO
reproduciendo la aplicacin de ejemplo &irstapp.
Hola, Visual Basic
0a( tres pasos principales para crear una aplicacin en Visual BasicU
1. Crear la inter.a2.
2. sta1lecer propiedades.
*. scri1ir el cdigo.
>ara ,er cmo se reali2a esto' siga los pasos del siguiente procedimiento
para crear una aplicacin sencilla 6ue consiste en un cuadro de te4to (
un 1otn de comando. Cuando <aga clic en el 1otn de comando
aparecer8 el mensaje O[0ola' mundo[O en el cuadro de te4to.
Crear la inter.a2
%os .ormularios son la 1ase para crear la inter.a2 de una aplicacin.
>uede usar .ormularios para agregar ,entanas ( cuadros de di8logo a la
aplicacin. 7am1i+n puede usarlos como contenedores de elementos 6ue
no son parte ,isi1le de la inter.a2 de la aplicacin. >or ejemplo' puede
tener un .ormulario en su aplicacin 6ue sir,a como contenedor para
gr8fcos 6ue 6uiera presentar en otros .ormularios.
l primer paso para generar una aplicacin de Visual Basic consiste en
crear los .ormularios 6ue ,an a ser la 1ase de la inter.a2 de su
aplicacin. Despu+s di1uje los o1jetos 6ue ,an a componer la inter.a2 en
los .ormularios 6ue <a creado. >ara esta primera aplicacin' usaremos
dos controles del cuadro de <erramientas.
>ara di1ujar un control mediante el cuadro de <erramientas
1. 0aga clic en la <erramienta del control 6ue <a elegido di1ujarW en
este caso el cuadro de te4to.
21

2. ;ue,a el puntero dentro del .ormulario. l puntero adoptar8 la
.orma de cru2' como se muestra en la fgura 2.*.
&igura 2.* Di1ujar un cuadro de te4to con el cuadro de <erramientas
*. Colo6ue la cru2 donde 6uiera 6ue apare2ca la es6uina superior
i26uierda del control.
!. Arrastre la cru2 <asta 6ue el control tenga el tama-o deseado.
9Arrastrar signifca mantener presionado el 1otn primario del
mouse mientras mue,e un o1jeto con el mouse.:
/. $uelte el 1otn del mouse.
l control aparecer8 en el .ormulario.
#tra .orma sencilla de agregar un control a un .ormulario es <acer do1le
clic en el 1otn de ese control en el cuadro de <erramientas. sto crea
un control con un tama-o predeterminado situado en el centro del
.ormularioW a<ora puede mo,er el control a otra u1icacin del .ormulario.
Cam1iar el tama-o' mo,imiento ( 1lo6ueo de controles
#1ser,e 6ue en las es6uinas del control aparece unos pe6ue-os cuadros
rectangulares llamados controladores de tamaoW en el siguiente paso
usar8 estos controladores para cam1iar el tama-o del control. 7am1i+n
puede usar el mouse' el teclado ( comandos de men) para mo,er
22

controles' 1lo6uear ( des1lo6uear la posicin de los controles' ( ajustar
sus posiciones.
>ara cam1iar el tama-o de un control
1. $eleccione el control 6ue 6uiera cam1iar el tama-oW para ello'
<aga clic en +l con el mouse.
Aparecer8n en el control los controladores de tama-o.
2. $it)e el puntero del mouse en un controlador de tama-o (
arr8strelo <asta 6ue el control tenga el tama-o elegido.
%os controladores de las es6uinas cam1iar8n el tama-o de controles
<ori2ontal ( ,erticalmente' mientras 6ue los controladores de los lados
cam1iar8n el tama-o slo en una direccin.
*. $uelte el 1otn del mouse.
Yo 1ienY
5se ;A\]$ con las teclas de direccin para cam1iar el tama-o del
control seleccionado.
>ara mo,er un control
5se el mouse para arrastrar el control a otra u1icacin del
.ormulario.
Yo 1ienY
5se la ,entana >ropiedades para cam1iar las propiedades 7op ( %e.t.
Cuando seleccione un control' puede usar C7=% con las teclas de
direccin para mo,er el control una unidad de la cuadr?cula cada ,e2. $i
la cuadr?cula est8 desacti,ada' el control se mue,e un p?4el cada ,e2.
>ara 1lo6uear la posicin de todos los controles
n el men) &ormato' elija Blo6uear controles.
Yo 1ienY
0aga clic en el 1otn Alternar 1lo6ueo de controles de la 1arra de
<erramientas ditor de .ormularios.
2*

sto 1lo6uear8 todos los controles del .ormulario en sus posiciones
actuales' de .orma 6ue no los podr8 mo,er accidentalmente una ,e2 6ue
est+n en la u1icacin deseada. $e 1lo6uear8n los controles slo en el
.ormulario seleccionadoW los controles de otros .ormularios no se ,en
a.ectados. s un comando de alternar' por lo 6ue puede usarlo tam1i+n
para des1lo6uear las posiciones de los controles.
>ara ajustar la posicin de controles 1lo6ueados
>uede OarrastrarO el control 6ue tiene el en.o6ue si presiona la
tecla C7=% ( la tecla de direccin adecuada.
Yo 1ienY
>uede cam1iar las propiedades 7op ( %e.t del control en la ,entana
>ropiedades.
\a tiene la inter.a2 de la aplicacin O^0ola' mundo[O' como se muestra en
la fgura 2.!.
&igura 2.! %a inter.a2 de la aplicacin O^0ola' mundo[O
sta1lecer propiedades
l siguiente paso consiste en esta1lecer las propiedades de los o1jetos
6ue <a creado. %a ,entana >ropiedades 9fgura 2./: proporciona una
manera .8cil de esta1lecer las propiedades de todos los o1jetos de un
.ormulario. >ara a1rir la ,entana >ropiedades' elija el comando Ventana
>ropiedades del men) Ver' <aga clic en el 1otn Ventana >ropiedades de
la 1arra de <erramientas o utilice el men) conte4tual del control.
2!

&igura 2./ %a ,entana >ropiedades
%a ,entana >ropiedades consta de los siguientes elementosU
Cuadro del o1jetoU presenta el nom1re del o1jeto para el 6ue
puede esta1lecer propiedades. 0aga clic en la Zec<a situada a la
derec<a del cuadro #1jeto para presentar la lista de o1jetos del
.ormulario actual.
&ic<as de ordenU elija entre una lista al.a1+tica de propiedades o
una ,ista jer8r6uica di,idida en categor?as lgicas' como las 6ue
tratan de la apariencia' .uentes o posicin.
%ista de propiedadesU la columna de la i26uierda presenta todas
las propiedades del o1jeto seleccionado. >uede modifcar ( ,er los
,alores en la columna de la derec<a.
>ara esta1lecer propiedades desde la ,entana >ropiedades
1. n el men) Ver' elija >ropiedades o <aga clic en el 1otn
>ropiedades de la 1arra de <erramientas.
%a ,entana >ropiedades presenta los ,alores del .ormulario o control
seleccionado.
2. n la lista >ropiedades' seleccione el nom1re de una propiedad.
*. n la columna de la derec<a' escri1a o seleccione el nue,o ,alor
de la propiedad.
%as propiedades enumeradas tienen una lista predefnida de ,alores.
>uede presentar la lista si <ace clic en la Zec<a <acia a1ajo 6ue <a( a la
derec<a del cuadro Valores o puede recorrer la lista <aciendo do1le clic
en un elemento de la lista.
n el ejemplo O^0ola' mundo[O necesitar8 cam1iar los ,alores de tres
propiedades. 5se el ,alor predeterminado para las dem8s propiedades.
#1jeto >ropiedad Valor
&orm Caption ^0ola' mundo[
2/

7e4tBo4 7e4t 9Vac?o:
CommandButt
on
Caption Aceptar
sta1lecer la propiedad Icon
7odos los .ormularios en Visual Basic tienen un icono gen+rico
predeterminado 6ue aparece cuando minimi2a ese .ormulario. $in
em1argo' pro1a1lemente cam1iar8 este icono por uno 6ue ilustre el uso
del .ormulario en su aplicacin. >ara asignar un icono a un .ormulario'
esta1le2ca la propiedad Icon para ese .ormulario. >uede usar iconos de
*2 4 *2 p?4eles 6ue eran est8ndar en las ,ersiones de ;icroso.t HindoMs
de 1" 1its ( 6ue se utili2an tam1i+n en HindoMs 9/ ( HindoMs @7' as?
como los iconos de 1" 4 1" p?4eles empleados en HindoMs 9/.
scri1ir cdigo
%a ventana Editor de cdigo es el lugar donde escri1e el cdigo de Visual
Basic para su aplicacin. l cdigo consta de instrucciones del lenguaje'
constantes ( declaraciones. ;ediante la ,entana ditor de cdigo puede
,er ( modifcar r8pidamente el cdigo de su aplicacin.
>ara a1rir la ,entana Cdigo
0aga do1le clic en el .ormulario o el control para el 6ue desea
escri1ir cdigo.
Yo 1ienY
n la ,entana 4plorador de pro(ectos' seleccione el nom1re de un
.ormulario o un mdulo ( elija Ver cdigo.
%a fgura 2." muestra la ,entana ditor de cdigo 6ue aparece cuando
<ace do1le clic en el control 1otn de comando ( los e,entos de ese
comando.
&igura 2." %a ,entana ditor de cdigo
2"

>uede elegir presentar todos los procedimientos en la misma ,entana
Cdigo o presentar un )nico procedimiento cada ,e2.
>ara presentar todos los procedimientos en la misma ,entana Cdigo
1. n el men) 0erramientas' seleccione #pciones.
2. n la fc<a ditor del cuadro de di8logo #pciones' acti,e la casilla
de ,erifcacin situada a la i26uierda de Ver mdulo completo de
.orma predeterminada. %a casilla de ,erifcacin a la i26uierda de
$eparador de procedimientos agrega o 6uita una l?nea separadora
entre los procedimientos.
Yo 1ienY
0aga clic en el 1otn Ver mdulo completo en la es6uina in.erior
i26uierda de la ,entana ditor de cdigo.
>ara presentar un procedimiento cada ,e2 en la ,entana Cdigo
1. n el men) 0erramientas' seleccione #pciones.
2. n la fc<a ditor del cuadro de di8logo #pciones' desacti,e la
casilla de ,erifcacin 6ue <a( a la i26uierda de Ver mdulo
completo de .orma predeterminada.
Yo 1ienY
0aga clic en el 1otn Ver procedimiento en la es6uina in.erior i26uierda
de la ,entana ditor de cdigo.
%a ,entana Cdigo inclu(e los siguientes elementosU
Cuadro de lista #1jetoU presenta el nom1re del o1jeto
seleccionado. 0aga clic en la Zec<a de la derec<a del cuadro de
lista para presentar una lista de todos los o1jetos asociados con el
.ormulario.
Cuadro de lista >rocedimientoU enumera los procedimientos o
e,entos de un o1jeto. l cuadro presenta el nom1re del
procedimiento seleccionado' en este caso ClicS. lija la Zec<a 6ue
<a( a la derec<a del cuadro para presentar todos los
procedimientos del o1jeto.
23

Crear procedimientos de e,ento
l cdigo en una aplicacin de Visual Basic se di,ide en 1lo6ues menores
llamados procedimientos. 5n procedimiento de evento' como los 6ue
crear8 a6u?' contiene cdigo 6ue se ejecuta cuando se produce un
e,ento 9como cuando un usuario <ace clic en un 1otn:. 5n
procedimiento de e,ento de un control com1ina el nom1re real del
control 9especifcado en la propiedad @ame:' un car8cter de su1ra(ado
9_: ( el nom1re del e,ento. >or ejemplo' si 6uiere 6ue un 1otn de
comando llamado Command1 in,o6ue un procedimiento de e,ento
cuando se <aga clic en +l' utilice el procedimiento Command1_ClicS.
>ara crear un procedimiento de e,ento
1. n el cuadro de lista #1jeto' seleccione el nom1re de un o1jeto del
.ormulario acti,o. 9l .ormulario activo es el .ormulario 6ue
actualmente tiene el en.o6ue.:
>ara este ejemplo' elija el 1otn de comando' Command1.
2. n el cuadro de lista >rocedimiento' seleccione el nom1re de un
e,ento del o1jeto seleccionado.
A6u?' el procedimiento ClicS (a est8 seleccionado puesto 6ue es el
procedimiento predeterminado para un 1otn de comando. #1ser,e 6ue
a<ora se presenta en la ,entana Cdigo una plantilla para el
procedimiento de e,ento.
*. scri1a el siguiente cdigo entre las instrucciones $u1 ( nd $u1U
!. 7e4t1.7e4t ` O^0ola' mundo[O
l procedimiento de e,ento de1er?a parecerse a +steU
>ri,ate $u1 Command1_ClicS 9:
7e4t1.7e4t ` O^0ola' mundo[O
nd $u1
#1ser,ar8 6ue a6u? el cdigo simplemente cam1ia la propiedad 7e4t del
control llamado 7e4t1 para 6ue sea O^0ola' mundo[O. %a sinta4is de este
ejemplo tiene el .ormato objeto.propiedad' donde 7e4t1 es el o1jeto (
7e4t la propiedad. >uede usar esta sinta4is para cam1iar los ,alores de
las propiedades de cual6uier .ormulario o control como respuesta a los
e,entos 6ue se producen mientras se ejecuta su aplicacin.
28

>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la
creacin de otros tipos de procedimientos' ,ea OIntroduccin a los
procedimientosO en O&undamentos de programacinO.
jecutar la aplicacin
>ara ejecutar la aplicacin' elija Iniciar en el men) jecutar' <aga clic en
el 1otn Iniciar de la 1arra de <erramientas o presione &/. 0aga clic en
el 1otn de comando 6ue <a creado en el .ormulario ( ,er8 cmo
aparece O^0ola' mundo[O en el cuadro de te4to.
La aplicaci!n de ejeplo &irstapp
Visual Basic proporciona una gran cantidad de <erramientas' m8s de las
6ue <a usado en la primera aplicacin' as? 6ue pronto usar8 otras
muc<as caracter?sticas para administrar ( personali2ar sus aplicaciones.
=e,isar las aplicaciones de ejemplo puede ser una e4celente .orma de
aprender m8s acerca de Visual Basic. l siguiente ejemplo ilustra lo .8cil
6ue es crear una )til aplicacin en Visual Basic.
%a aplicacin &irstapp muestra cmo pueden usarse un control Data ( un
control Grid para presentar una ta1la de in.ormacin de una 1ase de
datos. Visual Basic .acilita el acceso a la in.ormacin de la 1ase de datos
desde su aplicacin. l control Data proporciona la capacidad de
despla2arse a tra,+s del conjunto de registros de la 1ase de datos'
sincroni2ando la presentacin de los registros en el control Prid con la
posicin en el conjunto de registros.
%a aplicacin consta de un control de datos 9Data:' un control de
cuadr?cula Ze4i1le 9;$&le4Prid:' un control de cuadro de lista 9%istBo4: (
dos 1otones de comando 9CommandButton:. %a cuadr?cula muestra una
ta1la con in.ormacin de productos e4istentes en la 1ase de datos
@ort<Mind. Cuando el usuario seleccione un elemento mediante los
1otones de despla2amiento del control Data' se presentar8 en dic<o
control el nom1re del producto seleccionado. l usuario puede tam1i+n
agregar elementos a la Olista de comprasO en el control de cuadro de
lista si <ace do1le clic en la seleccin actual de la cuadr?cula.
>ara agregar elementos al cuadro de lista' use el m+todo AddItem. 95n
mtodo es una .uncin de Visual Basic 6ue act)a so1re un o1jeto en
particular' en este caso el o1jeto %istBo4.: %a sinta4is para especifcar un
m+todo 9objeto.mtodo: es similar a la sinta4is para esta1lecer una
propiedad 9objeto.propiedad:. l m+todo AddItem le permite agregar
elementos din8micamente al cuadro de lista mientras se est8
ejecutando la aplicacin. >or el contrario' el m+todo Clear se utili2a para
6uitar todos los elementos del cuadro de lista.
29

>ara o1tener m8s in.ormacin >ara aprender m8s acerca de los
m+todos' ,ea ODescripcin de las propiedades' m+todos ( e,entosO en
O&ormularios' controles ( men)sO.
Crear un pro(ecto
>ara empe2ar a crear esta aplicacin' elija @ue,o pro(ecto en el men)
Arc<i,o' seleccione entonces G est8ndar en el cuadro de di8logo
@ue,o pro(ecto 9cuando inicie por primera ,e2 Visual Basic aparecer8 el
cuadro de di8logo @ue,o pro(ecto:. Visual Basic crea un proyecto nue,o
( presenta un .ormulario nue,o. >ara di1ujar la inter.a2' utilice un control
Data' un control ;$&le4Prid' un control %istBo4 ( dos controles
CommandButton. l control ;$&le4Prid no se encuentra en el cuadro de
<erramientas predeterminado' por lo 6ue necesitar8 agregarloU
>ara agregar un control al cuadro de <erramientas
1. $eleccione Componentes en el men) conte4tual del cuadro de
<erramientas. 9>ara mostrar el men) conte4tual puede <acer clic
con el 1otn secundario del mouse dentro de la ,entana del
cuadro de <erramientas.:
Aparecer8 el cuadro de di8logo Componentes.
2. Bus6ue ;$&le4Prid 9;icroso.t &le4Prid ".0: en el cuadro de lista
Controles ( acti,e la casilla de ,erifcacin 6ue <a( a su i26uierda.
*. 0aga clic en el 1otn Aceptar.
l icono del control ;$&le4Prid aparecer8 en el cuadro de <erramientas.
5tilice el cuadro de <erramientas para colocar en el .ormulario un control
Data' un control ;$&le4Prid' un control de cuadro de lista ( dos 1otones
de comando. $i no recuerda cmo <acerlo' ,ea OCrear la inter.a2O
anteriormente en este cap?tulo.
sta1lecer propiedades
n la ,entana >ropiedades' esta1le2ca las propiedades de los o1jetos de
acuerdo a la siguiente ta1la. 5se los ,alores predeterminados para las
dem8s propiedades.
#1jeto >ropiedad Valor
&orm Caption >roductos
*0

Data1 Data1ase@a
me
=ecord$ourc
e
rutaX@Mind.m
d1
;$&le4Prid1 Data$ource Data1
Command1 Caption Borrar
Command2 Caption $alir
%a propiedad Data1ase@ame del control Data de1e incluir la ruta real de
la 1ase de datos. De .orma predeterminada' la 1ase de datos @Mind.md1
se instala en el mismo directorio 6ue Visual Basic. Cuando seleccione la
propiedad Data1ase@ame en la ,entana >ropiedades' puede <acer clic
con el 1otn en la parte derec<a de la propiedad para presentar un
cuadro de di8logo est8ndar para e4aminar ( 1uscar el arc<i,o. 5na ,e2
6ue se <a(a esta1lecido la propiedad Data1ase@ame' la propiedad
=ecord$ource de la ,entana >ropiedades contendr8 una lista de ta1las o
conjuntos de registros de la 1ase de datos seleccionada. Al esta1lecer la
propiedad Data$ource del control ;$&le4Prid a Data1 se ,incula
autom8ticamente la cuadr?cula al control Data.
scri1ir cdigo de e,entos
7odo el cdigo de la aplicacin est8 contenido en los procedimientos de
e,ento Command1_ClicS' Command2_ClicS' Data1_=eposition (
;$&le4Prid1_D1lClicS. 0aga do1le clic en el .ormulario o el control para
presentar la ,entana Cdigo ( despu+s escri1a el cdigo de cada
procedimiento de e,ento.
Agregue este cdigo al procedimiento de e,ento Command1_ClicS para
1orrar el cuadro de lista cuando el usuario <ace clic en el 1otnU
>ri,ate $u1 Command1_ClicS 9:
%ist1.Clear a Borra el cuadro de lista.
nd $u1
*1

n la instruccin anterior' est8 in,ocando al m+todo Clear del cuadro de
lista %ist1. l m+todo Clear elimina el contenido del cuadro de lista.
Agregue este cdigo al procedimiento de e,ento Command2_ClicS para
descargar de la memoria el .ormulario ( terminar la aplicacinU
>ri,ate $u1 Command2_ClicS 9:
5nload &orm1
nd a 7ermina la aplicacin.
nd $u1
n el procedimiento anterior' la primera instruccin in,oca el e,ento
5nload del .ormulario. $i necesita reali2ar una .uncin de cierre' como
guardar un arc<i,o' podr?a situar el cdigo en el procedimiento de
e,ento 5nload del .ormulario. %a segunda instruccin llama a la .uncin
nd' 6ue fnali2a la aplicacin.
Agregue este cdigo al procedimiento de e,ento Data1_=eposition para
actuali2ar el t?tulo cada ,e2 6ue se seleccione un registroU
>ri,ate $u1 Data1_=eposition 9:
Data1.Caption ` Data1.=ecordset9O@om1re>roductoO:
nd $u1
n la instruccin anterior est8 asignando el ,alor de la derec<a 9el
contenido del campo 7?tulo en el recordset del control Data: a la
propiedad de la i26uierda 9la propiedad Caption del o1jeto del control
Data:.
Agregue este cdigo al procedimiento de e,ento ;$&le4Prid_D1lClicS
para agregar un art?culo al cuadro de lista cuando el usuario <aga do1le
clic en una fla seleccionadaU
>ri,ate $u1 ;$&le4Prid1_D1lClicS 9:
%ist1.AddItem ;$&le4Prid.7e4t
nd $u1
n la instruccin anterior est8 in,ocando al m+todo AddItem del cuadro
de lista 9%ist1:. l te4to 6ue se agrega al cuadro de lista est8 contenido
en el argumento del m+todo' en este caso' el ,alor del campo 7?tulo en
el recordset del control Data. >asar un ,alor a un argumento es similar a
asignar un ,alor a una propiedadW a di.erencia 6ue en la instruccin de
asignacin' no se re6uiere el signo igual.
Puardar un pro(ecto
*2

>ara fnali2ar el tra1ajo en la aplicacin' elija Puardar pro(ecto en el
men) Arc<i,o. Visual Basic le pedir8 6ue guarde el .ormulario ( el
pro(ecto por separado. 5n posi1le nom1re para el pro(ecto es O%ista de
compras de @ort<MindO. n HindoMs 9/ ( en HindoMs @7 est8 permitido
usar nom1res de arc<i,os de <asta 2// caracteres de longitud ( pueden
incluir espacios en 1lanco. %as ,ersiones anteriores de HindoMs ten?an
los nom1res de arc<i,o limitados a oc<o caracteres' con una e4tensin
de tres caracteres.
;ejorar su aplicacin
\a <a terminado su primera aplicacin en Visual BasicU reali2a una
.uncin sencilla pero )til. >uede usar esta aplicacin como 1ase para
agregar .uncionalidad similar a su propia aplicacin' sustitu(endo sus
propios datos en lugar de @Mind.md1. >or supuesto' para <acer esta
aplicacin ,erdaderamente )til' podr?a agregar .uncionalidad para
guardar o imprimir el contenido del cuadro de lista' agregar in.ormacin
adicional como el precio ( la disponi1ilidad e incluso recopilar
in.ormacin de la tarjeta de cr+dito ( transmitir un pedido a tra,+s de
Internet. A medida 6ue contin)e a tra,+s de este Manual del
programador encontrar8 ejemplos para reali2ar todo esto ( muc<o m8s.
&orularios, controles y en's
l primer paso para crear una aplicacin con Visual Basic es crear la
inter.a2' la parte ,isual de la aplicacin con la 6ue ,a a interactuar el
usuario. %os .ormularios ( controles son los elementos de desarrollo
18sicos 6ue se usan para crear la inter.a2W son los o1jetos con los 6ue se
tra1aja para desarrollar la aplicacin.
%os .ormularios son o1jetos 6ue e4ponen las propiedades 6ue defnen su
apariencia' los m+todos 6ue defnen su comportamiento ( los e,entos
6ue defnen la .orma en 6ue interact)an con el usuario. ;ediante el
esta1lecimiento de las propiedades del .ormulario ( la escritura de
cdigo de Visual Basic para responder a sus e,entos se personali2a el
o1jeto para cu1rir las necesidades de la aplicacin.
%os controles son o1jetos 6ue est8n contenidos en los o1jetos de
.ormularios. Cada tipo de control tiene su propio conjunto de
propiedades' m+todos ( e,entos' 6ue lo <acen adecuado para una
fnalidad determinada. Algunos de los controles 6ue puede usar en las
aplicaciones son m8s adecuados para escri1ir o mostrar te4to' mientras
6ue otros controles permiten tener acceso a otras aplicaciones (
procesan los datos como si la aplicacin remota .ormara parte del
cdigo.
**

ste cap?tulo presenta los conceptos 18sicos del tra1ajo con .ormularios
( controles' ( las propiedades' m+todos ( e,entos 6ue tienen asociados.
$e e4plican muc<os de los controles est8ndar' as? como elementos
espec?fcos de .ormularios como men)s ( cuadros de di8logo.
7emas
Descripcin de las propiedades' m+todos ( e,entos
Introduccin a los o1jetos ( a las propiedades' m+todos ( e,entos
asociados.
Dise-ar un .ormulario
&undamentos del tra1ajo con propiedades' m+todos ( e,entos de
un .ormulario.
0acer clic en los 1otones para reali2ar acciones
Introduccin al control de 1otn de comando.
Controles para mostrar e introducir te4to
Introduccin a los controles de eti6ueta ( cuadro de te4to.
Controles 6ue muestran opciones a los usuarios
Introduccin a los controles de casilla de ,erifcacin' 1otn de
opcin' cuadro de lista' cuadro com1inado ( 1arra de
despla2amiento.
Controles 6ue muestran im8genes ( gr8fcos
Introduccin a los controles de cuadro de imagen' imagen' .orma (
l?nea.
Controles adicionales
Introduccin a otros controles est8ndar de Visual Basic.
Descripcin del en.o6ue
4plicacin 1re,e del en.o6ue cuando se aplica a los controles.
Confgurar el orden de ta1ulacin
*!

Introduccin al concepto de orden de ta1ulacin en un .ormulario.
&undamentos de los men)s
Introduccin a los controles de men) ( al ditor de men)s.
>edir datos al usuario mediante cuadros de di8logo
Introduccin a los cuadros de di8logo.
Aplicacin de ejemplo
Controls.,1p
%os ejemplos de cdigo de este cap?tulo est8n tomados de la
aplicacin de ejemplo Controls.,1p 6ue se encuentra en el
directorio $amples.
Descripci!n de las propiedades, $todos y e#entos
%os .ormularios ( controles de Visual Basic son o1jetos 6ue e4ponen sus
propios m+todos' propiedades ( e,entos. %as propiedades se pueden
considerar como atri1utos de un o1jeto' los m+todos como sus acciones
( los e,entos como sus respuestas.
5n o1jeto de uso diario como el glo1o de un ni-o tiene tam1i+n
propiedades' m+todos ( e,entos. ntre las propiedades de un glo1o se
inclu(en atri1utos ,isi1les como el alto' el di8metro ( el color. #tras
propiedades descri1en su estado 9inZado o desinZado: o atri1utos 6ue
no son ,isi1les' como su edad. >or defnicin' todos los glo1os tienen
estas propiedadesW lo 6ue ,ar?a de un glo1o a otro son los ,alores de
estas propiedades.
5n glo1o tiene tam1i+n m+todos o acciones in<erentes 6ue puede
e.ectuar. 7iene un m+todo inZar 9la accin de llenarlo de <elio: o un
m+todo desinZar 9e4peler su contenido: ( un m+todo ele,arse 9si se deja
escapar:. De nue,o' todos los glo1os pueden e.ectuar estos m+todos.
%os glo1os tienen' adem8s' respuestas predefnidas a ciertos e,entos
e4ternos. >or ejemplo' un glo1o responder?a al e,ento de pinc<arlo
desinZ8ndose o al e,ento de soltarlo ele,8ndose en el aire.
*/

&igura *.1 %os o1jetos tienen propiedades' responden a e,entos (
ejecutan m+todos
$i se pudiera programar un glo1o' el cdigo de Visual Basic podr?a ser
como el siguiente. >ara esta1lecer las propiedades del glo1oU
Plo1o.Color ` =ojo
Plo1o.Di8metro ` 10
Plo1o.InZado ` 7rue
#1ser,e la sinta4is del cdigoU el o1jeto 9Plo1o: seguido de la propiedad
9.Color: seguida de la asignacin del ,alor 9=ojo:. >odr?a modifcar el
color del glo1o desde el cdigo si repitiera esta instruccin ( sustitu(era
el ,alor por otro di.erente. 7am1i+n es posi1le esta1lecer las propiedades
en la ,entana >ropiedades mientras se est8 dise-ando la aplicacin.
%os m+todos de un glo1o se in,ocan de esta .ormaU
Plo1o.InZar
Plo1o.DesinZar
Plo1o.le,ar /
%a sinta4is es similar a la sinta4is de las propiedadesU el o1jeto 9un
nom1re: seguido de un m+todo 9un ,er1o:. n el tercer ejemplo <a( un
elemento adicional' llamado argumento' 6ue indica la distancia 6ue se
ele,a. Algunos m+todos tendr8n uno o m8s argumentos para descri1ir
m8s a .ondo la accin 6ue se ,a a ejecutar.
l glo1o puede responder a un e,ento como se muestra a continuacinU
$u1 Plo1o_>inc<a2o9:
Plo1o.DesinZar
Plo1o.0acer=uido OBangO
*"

Plo1o.InZado ` &alse
Plo1o.Di8metro ` 1
nd $u1
n este caso' el cdigo descri1e el comportamiento del glo1o cuando se
produce un e,ento >inc<a2oU in,oca el m+todo DesinZar ( luego in,oca
el m+todo 0acer=uido con un argumento OBangO 9el tipo de ruido 6ue se
,a a <acer:. Como el glo1o (a no est8 inZado' la propiedad InZado tiene
el ,alor &alse ( la propiedad Di8metro adopta un nue,o ,alor.
$i 1ien no puede programar un glo1o' s? puede programar un .ormulario
o un control de Visual Basic. Como programador' tiene el controlU decide
6u+ propiedades se de1en modifcar' 6u+ m+todos se de1en in,ocar o a
6u+ e,entos <a( 6ue responder para conseguir la apariencia ( el
comportamiento deseados.
Dise(ar un )orulario
%os o1jetos de un .ormulario son los elementos de desarrollo 18sicos de
una aplicacin de Visual Basic' las ,entanas reales con las 6ue
interact)a el usuario cuando ejecuta la aplicacin. %os .ormularios tienen
sus propios e,entos' propiedades ( m+todos con los 6ue se puede
controlar su apariencia ( comportamiento.
&igura *.2 %os .ormularios ( controles tienen sus propios e,entos'
propiedades ( m+todos
l primer paso para dise-ar un .ormulario consiste en esta1lecer sus
propiedades. >uede esta1lecer las propiedades de un .ormulario en
tiempo de diseo en la ,entana >ropiedades o en tiempo de ejecucin'
escri1iendo cdigo.
@ota n tiempo de diseo' 6ue es cual6uier momento mientras est8
desarrollando una aplicacin en el entorno de Visual Basic' se tra1aja
con .ormularios ( controles' se esta1lecen propiedades ( se escri1e
cdigo para los e,entos. iempo de ejecucin es cual6uier momento
mientras se ejecuta realmente la aplicacin ( se interact)a con ella
como lo <ar?a un usuario.
sta1lecer las propiedades de un .ormulario
*3

;uc<as propiedades de un .ormulario a.ectan a su apariencia .?sica. %a
propiedad Caption determina el te4to 6ue muestra la 1arra de t?tulo del
.ormulario ( la propiedad Icon esta1lece el icono 6ue aparece cuando se
minimi2a un .ormulario. %as propiedades ;a4Button ( ;inButton
determinan si el .ormulario se puede ma4imi2ar o minimi2ar. $i cam1ia
la propiedad Border$t(le puede controlar el comportamiento de cam1io
de tama-o del .ormulario.
%as propiedades 0eig<t ( Hidt< determinan el tama-o inicial de un
.ormulario' mientras 6ue las propiedades %e.t ( 7op determinan la
u1icacin del .ormulario en relacin con la es6uina superior i26uierda de
la pantalla. Con la propiedad HindoM$tate puede esta1lecer si el
.ormulario se inicia en estado ma4imi2ado' minimi2ado o normal.
%a propiedad @ame esta1lece el nom1re con el 6ue <ar8 re.erencia al
.ormulario en el cdigo. De .orma predeterminada' cuando se agrega un
.ormulario por primera ,e2 a un pro(ecto' su nom1re es &orm1' &orm2'
etc. s con,eniente asignar a la propiedad @ame un ,alor m8s
signifcati,o' como O.rmntr(O para un .ormulario de entrada de pedidos.
%a mejor manera de .amiliari2arse con las numerosas propiedades de los
.ormularios es e4perimentar. Cam1ie algunas propiedades de un
.ormulario en la ,entana >ropiedades 9fgura *.*: ( ejecute la aplicacin
para ,er su e.ecto. >uede aprender m8s acerca de cada propiedad si la
selecciona ( presiona &1 para ,er A(uda conte4tual.
&igura *.* %a ,entana >ropiedades
,entos ( m+todos de un .ormulario
Como o1jetos 6ue son' los .ormularios pueden ejecutar m+todos (
responder a e,entos.
l e,ento =esi2e de un .ormulario se desencadena siempre 6ue se
cam1ia el tama-o de un .ormulario' (a sea por una accin del usuario o
a tra,+s del cdigo. sto permite reali2ar acciones como mo,er o
cam1iar el tama-o de los controles de un .ormulario cuando <an
cam1iado sus dimensiones.
*8

l e,ento Acti,ate se produce siempre 6ue un .ormulario se con,ierte en
el .ormulario acti,oW el e,ento Deacti,ate se produce cuando otro
.ormulario u otra aplicacin se con,ierten en acti,o. stos e,entos son
adecuados para iniciar o fnali2ar acciones del .ormulario. >or ejemplo'
en el e,ento Acti,ate podr?a escri1ir cdigo para resaltar el te4to de un
determinado cuadro de te4toW con el e,ento Deacti,ate podr?a guardar
los cam1ios e.ectuados en un arc<i,o o en una 1ase de datos.
>ara <acer ,isi1le un .ormulario se in,oca el m+todo $<oMU
&orm2.$<oM
In,ocar el m+todo $<oM tiene el mismo e.ecto 6ue asignar el ,alor 7rue
a la propiedad Visi1le del .ormulario.
;uc<os m+todos de un .ormulario implican te4to o gr8fcos. %os m+todos
>rint' %ine' Circle ( =e.res< son )tiles para imprimir o di1ujar
directamente en la superfcie de un .ormulario. stos ( otros m+todos se
e4plican en O7ra1ajar con te4to ( gr8fcosO.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de los .ormularios' ,ea O;8s acerca de los .ormulariosO en OCrear
la inter.a2 de usuarioO.
Hacer clic en los *otones para reali+ar acciones
%a .orma m8s sencilla de permitir al usuario interactuar con una
aplicacin es proporcionarle un 1otn para 6ue <aga clic en +l. >uede
usar el control de 1otn de comando 6ue proporciona Visual Basic o
crear su propio O1otnO mediante un control de imagen 6ue contenga un
gr8fco' por ejemplo un icono.
5sar los 1otones de comando
%a ma(or?a de las aplicaciones de Visual Basic tienen 1otones de
comando 6ue permiten al usuario <acer clic en ellos para reali2ar
acciones. Cuando el usuario <ace clic en el 1otn' +ste no solamente
reali2a una accin' sino 6ue' adem8s' parece 6ue se est8 presionando (
soltando. $iempre 6ue el usuario <ace clic en un 1otn se in,oca el
procedimiento de e,ento ClicS. >ara reali2ar cual6uier accin 6ue desee
puede escri1ir cdigo en el procedimiento de e,ento ClicS.
0a( muc<as .ormas de elegir un 1otn de comando en tiempo de
ejecucinU
5sar un mouse 9ratn: para <acer clic en el 1otn.
*9

;o,er el en.o6ue al 1otn presionando la tecla 7AB ( elegir luego
el 1otn presionando la BA==A $>ACIAD#=A o @7=A=. 9Vea
ODescripcin del en.o6ueO' m8s adelante en este cap?tulo.:
>resionar una tecla de acceso a un 1otn de comando 9A%7E la
letra su1ra(ada:.
Asignar a la propiedad Value del 1otn de comando el ,alor 7rue
en el cdigoU
cmdCerrar.Value ` 7rue
In,ocar el e,ento ClicS del 1otn de comando en el cdigoU
cmdCerrar_ClicS
$i el 1otn de comando es el botn de comando predeterminado
para el .ormulario' al presionar @7=A= se elige el 1otn' incluso
aun6ue cam1ie el en.o6ue a un control di.erente de un 1otn de
comando. >ara especifcar un 1otn de comando predeterminado
en tiempo de dise-o' asigne a la propiedad De.ault del 1otn el
,alor 7rue.
$i el 1otn de comando es el botn !ancelar predeterminado para
el .ormulario' al presionar $C se elige el 1otn' incluso aun6ue
cam1ie el en.o6ue a otro control. >ara especifcar un 1otn
Cancelar predeterminado en tiempo de dise-o' asigne a la
propiedad Cancel del 1otn el ,alor 7rue.
7odas estas acciones <acen 6ue Visual Basic in,o6ue el procedimiento
de e,ento ClicS.
%a aplicacin >rue1a de 1otones
5tilice la propiedad Caption para mostrar te4to en el 1otn e indicar al
usuario lo 6ue <ace el 1otn. n la fgura *.!' el ejemplo >rue1a de
1otones de la aplicacin de ejemplo Controls contiene un 1otn de
comando cu(a propiedad Caption es OCam1iar la se-alO. 9>ara ,er una
,ersin operati,a de este ejemplo' ,ea el arc<i,o Button..rm de la
aplicacin de ejemplo Controls.,1p.:
#1ser,e 6ue la tecla de m+todo a1re,iado para este 1otn es b$c'
representada por el su1ra(ado. Insertar un s?m1olo D en el te4to de la
propiedad Caption <ace 6ue el car8cter siguiente sea la tecla de m+todo
a1re,iado para el 1otn 9por ejemplo' Cam1iar la Dse-al:.
&igura *.! Botn de comando con un t?tulo
!0

Cuando un usuario <ace clic en el 1otn de comando' se ejecuta el
cdigo contenido en el procedimiento de e,ento ClicS del 1otn de
comando. n el ejemplo aparece un icono de sem8.oro di.erente cada
,e2 6ue se <ace clic en el 1otn.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de las
propiedades adicionales del 1otn de comando' ,ea O5sar los controles
est8ndar de Visual BasicO.
Controles para ostrar e introducir te,to
%os controles de eti6uetas ( cuadros de te4to se usan para mostrar o
introducir te4to. 5tilice eti6uetas cuando desee 6ue la aplicacin
muestre te4to en un .ormulario ( utilice cuadros de te4to cuando desee
permitir al usuario escri1ir te4to. %as eti6uetas contienen te4to 6ue slo
se puede leer' mientras 6ue los cuadros de te4to contienen te4to 6ue se
puede modifcar.
>ara proporcionar esta caracter?stica 5se este control
7e4to 6ue el usuario puede modifcarW
por ejemplo' un campo de entrada de
pedidos o un cuadro de contrase-a
7e4tBo4 9cuadro de te4to:
7e4to 6ue slo se muestraW por
ejemplo' para identifcar un campo de
un .ormulario o mostrar instrucciones
al usuario
%a1el 9eti6ueta:
%as eti6uetas ( los cuadros de te4to se e4plican en las secciones
siguientesU
!1

5sar eti6uetas para mostrar te4to &undamentos de la utili2acin
del control de eti6ueta.
7ra1ajar con cuadros de te4to &undamentos de la utili2acin de
los cuadros de te4to.
Usar eti-uetas para ostrar te,to
5n control %a1el 9eti6ueta: muestra te4to 6ue el usuario no puede
modifcar directamente. >uede usar eti6uetas para identifcar controles
6ue no tienen una propiedad Caption' como los cuadros de te4to ( las
1arras de despla2amiento. l te4to real 6ue muestra una eti6ueta est8
controlado por la propiedad Caption' 6ue se puede esta1lecer en tiempo
de dise-o en la ,entana >ropiedades o en tiempo de ejecucin si la
asigna en el cdigo.
De .orma predeterminada' el t?tulo es la )nica parte ,isi1le del control de
eti6ueta. $in em1argo' si asigna a la propiedad Border$t(le el ,alor 1 9lo
6ue puede <acer en tiempo de dise-o:' la eti6ueta aparece con un 1orde
6ue le da una apariencia similar a un cuadro de te4to. 7am1i+n puede
cam1iar la apariencia de la eti6ueta si esta1lece las propiedades
BacSColor' BacS$t(le' &oreColor ( &ont.
Cam1iar el tama-o de una eti6ueta para ajustarla a su contenido
%os t?tulos de eti6uetas de una )nica l?nea se pueden especifcar en
tiempo de dise-o en la ,entana >ropiedades. >ero B( si desea escri1ir un
t?tulo m8s largo o un t?tulo 6ue cam1ie en tiempo de ejecucinC %as
eti6uetas tienen dos propiedades 6ue a(udan a cam1iar el tama-o de
los controles para ajustarlo a t?tulos m8s grandes o m8s pe6ue-osU
Auto$i2e ( HordHrap.
%a propiedad Auto$i2e determina si se de1e cam1iar autom8ticamente
el tama-o de un control para ajustarlo a su contenido. $i tiene el ,alor
7rue' la eti6ueta crece <ori2ontalmente para ajustarse a su contenido'
como muestra la fgura *./.
&igura *./ jemplo de Auto$i2e
!2

%a propiedad HordHrap <ace 6ue la eti6ueta cre2ca ,erticalmente para
ajustarse a su contenido' mientras conser,a el mismo anc<o' como
muestra la fgura *.". >ara ,er una ,ersin operati,a de este ejemplo'
,ea el arc<i,o HordMrap..rm en la aplicacin de ejemplo Controls.,1p.
&igura *." jemplo de HordHrap
@ota $i ejecuta el ejemplo de Auto$i2e desde Controls.,1p' o1ser,ar8
6ue para 6ue .uncione realmente el ejemplo de HordHrap tienen 6ue
estar acti,adas am1as casillas de ,erifcacin. sto se de1e a 6ue' para
6ue tenga e.ecto la propiedad HordHrap de la eti6ueta' Auto$i2e de1e
tener el ,alor 7rue. l anc<o de la eti6ueta slo aumenta si el anc<o de
una )nica pala1ra supera el anc<o actual del control.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de las propiedades del control de eti6ueta' ,ea O5sar los
controles est8ndar de Visual BasicO.
.ra*ajar con cuadros de te,to
%os cuadros de te4to son controles ,ers8tiles 6ue permiten o1tener
in.ormacin del usuario o mostrar te4to. @o se de1en usar cuadros de
te4to para mostrar te4to 6ue no desee 6ue el usuario cam1ie' a menos
6ue asigne a la propiedad %ocSed el ,alor 7rue.
!*

l te4to real 6ue muestra un cuadro de te4to est8 controlado por la
propiedad 7e4t. $e puede esta1lecer de tres .ormas di.erentesU en
tiempo de dise-o en la ,entana >ropiedades' en tiempo de ejecucin si
la esta1lece en el cdigo o mediante el te4to 6ue escri1e el usuario en
tiempo de ejecucin. $e puede recuperar el contenido actual de un
cuadro de te4to si lee la propiedad 7e4t en tiempo de ejecucin.
Cuadros de te4to de m)ltiples l?neas ( ajuste autom8tico de te4to
De .orma predeterminada' un cuadro de te4to presenta una )nica l?nea
de te4to ( no muestra 1arras de despla2amiento. $i el te4to es m8s largo
6ue el espacio disponi1le' slo ser8 ,isi1le parte del te4to. s posi1le
modifcar la apariencia ( el comportamiento de un cuadro de te4to
mediante dos propiedades' ;ulti%ine ( $crollBars' 6ue slo est8n
disponi1les en tiempo de dise-o.
@ota %a propiedad $crollBars no se de1e con.undir con los controles de
1arra de despla2amiento' 6ue no est8n adjuntos a cuadros de te4to (
tienen su propio conjunto de propiedades.
$i asigna a ;ulti%ine el ,alor 7rue acti,ar8 un cuadro de te4to para 6ue
acepte o muestre m)ltiples l?neas de te4to en tiempo de ejecucin. 5n
cuadro de te4to con m)ltiples l?neas ajusta autom8ticamente el te4to
siempre ( cuando no <a(a una 1arra de despla2amiento <ori2ontal. %a
propiedad $crollBars tiene el ,alor 0Q@one 9ninguna 1arra: de .orma
predeterminada. l ajuste autom8tico de l?nea a<orra al usuario la
incomodidad de insertar saltos de l?nea al fnal de las l?neas. Cuando una
l?nea de te4to es m8s larga de lo 6ue se puede mostrar en una l?nea' el
cuadro de te4to ajusta autom8ticamente el te4to a la l?nea siguiente.
@o se pueden introducir saltos de l?nea en la ,entana >ropiedades en
tiempo de dise-o. Dentro de un procedimiento' para crear un salto de
l?nea <a( 6ue insertar un retorno de carro seguido de un a,ance de l?nea
9caracteres A@$I 1* ( 10:. 7am1i+n puede usar la constante ,1Cr%. para
insertar una com1inacin de retorno de carro ( a,ance de l?nea. >or
ejemplo' el siguiente procedimiento de e,ento coloca dos l?neas de te4to
en un cuadro de te4to de m)ltiples l?neas 97e4to1: cuando se carga el
.ormularioU
$u1 &orm_%oad 9:
7e4to1.7e4t ` OA6u? <a( dos l?neas enO _
D ,1Cr%. D Oun cuadro de te4toO
nd $u1
7ra1ajar con te4to en un cuadro de te4to
!!

>uede controlar el punto de insercin ( el comportamiento de la
seleccin de un cuadro de te4to mediante las propiedades $el$tart'
$el%engt< ( $el7e4t. stas propiedades slo est8n disponi1les en tiempo
de ejecucin.
%a primera ,e2 6ue un cuadro de te4to reci1e el en.o6ue' el punto de
insercin predeterminado' o posicin del cursor' del cuadro de te4to est8
a la i26uierda de cual6uier te4to e4istente. l usuario puede mo,erlo
desde el teclado o con el mouse. $i el cuadro de te4to pierde el en.o6ue
( lo ,uel,e a recuperar' el punto de insercin estar8 donde el usuario lo
<u1iera dejado la )ltima ,e2.
n algunos casos este comportamiento puede ser desconcertante para
el usuario. n una aplicacin de procesamiento de te4tos' el usuario
podr?a esperar 6ue los caracteres nue,os aparecieran a continuacin de
cual6uier te4to e4istente. n una aplicacin de entrada de datos' el
usuario podr?a esperar 6ue lo 6ue escri1a sustitu(a a cual6uier dato
e4istente. %as propiedades $el$tart ( $el%engt< permiten modifcar el
comportamiento para 6ue cumpla una fnalidad determinada.
%a propiedad $el$tart es un n)mero 6ue indica 6ue el punto de insercin
est8 dentro de la cadena de te4to' siendo 0 la posicin situada m8s a la
i26uierda. $i la propiedad $el$tart tiene un ,alor igual o ma(or 6ue el
n)mero de caracteres 6ue <a( en el cuadro de te4to' el punto de
insercin se situar8 despu+s del )ltimo car8cter' como muestra la fgura
*.3. >ara ,er una ,ersin .uncional de este ejemplo' ,ea el arc<i,o
7e4t..rm de la aplicacin de ejemplo Controls.,1p.
&igura
*.3 jemplo de
punto de
insercin
%a propiedad $el%engt< es un ,alor num+rico 6ue esta1lece el anc<o del
punto de insercin. $i asigna a $el%engt< un n)mero ma(or 6ue 0 se
seleccionar8n ( resaltar8n ese n)mero de caracteres a partir del punto
de insercin actual. %a fgura *.8 muestra el comportamiento de la
seleccin.
&igura *.8 jemplo de la seleccin
!/

$i el usuario comien2a a escri1ir mientras est8 seleccionado un 1lo6ue
de te4to' se reempla2ar8 el te4to seleccionado. n algunos casos' 6ui28s
desee reempla2ar una seleccin de te4to con el te4to nue,o mediante
un comando de pegado. %a propiedad $el7e4t es una cadena de te4to
6ue puede asignar en tiempo de ejecucin para reempla2ar la seleccin
actual. $i no <a( te4to seleccionado' $el7e4t insertar8 su te4to en el
punto de insercin actual.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de las propiedades del control de cuadro de te4to' ,ea O5sar los
controles est8ndar de Visual BasicO.
Controles -ue uestran opciones a los usuarios
%a ma(or?a de las aplicaciones necesitan presentar opciones a los
usuarios' 6ue ,an desde una simple opcin de tipo s? o no <asta
seleccionar de una lista 6ue contiene cientos de posi1ilidades. Visual
Basic inclu(e ,arios controles est8ndar 6ue a(udan a presentar
opciones. n la ta1la siguiente se resumen estos controles ( su uso
adecuado.
>ara proporcionar esta caracter?stica 5se este control
5n conjunto pe6ue-o de opciones
entre las 6ue el usuario puede elegir
una o m8s.
C<ecSBo4 9casillas de
,erifcacin:
5n conjunto pe6ue-o de opciones
entre las 6ue el usuario slo puede
elegir una.
#ptionButton 91otones de opcinW
use marcos si son necesarios
grupos adicionales:
!"

5na lista desplega1le de opciones
entre las 6ue puede elegir el usuario.
%istBo4 9cuadro de lista:
5na lista desplega1le de opciones
junto con un cuadro de te4to. l
usuario puede elegir de la lista o
escri1ir una opcin en el cuadro de
te4to.
Com1oBo4 9cuadro com1inado:
%as casillas de ,erifcacin' 1otones de opcin' cuadros de lista (
cuadros com1inados se e4plican en las secciones siguientesU
$eleccionar opciones indi,iduales con casillas de
,erifcacin &undamentos de la utili2acin del control de casilla
de ,erifcacin.
Agrupar opciones con 1otones de opcin &undamentos de la
utili2acin del control de 1otn de opcin.
5sar cuadros de lista ( cuadros com1inados Introduccin a los
controles de cuadro de lista ( de cuadro com1inado.
5sar 1arras de despla2amiento como dispositi,os de
entrada Bre,e introduccin al control de 1arra de
despla2amiento.
Seleccionar opciones indi#iduales con casillas de
#eri%caci!n
5na casilla de ,erifcacin indica si una condicin determinada est8
acti,ada o desacti,ada. $e usan casillas de ,erifcacin en una
aplicacin para o.recer a los usuarios opciones de tipo ,erdadero ( .also
o s? ( no. Como las casillas de ,erifcacin .uncionan
independientemente una de otra' el usuario puede acti,ar cual6uier
n)mero de casillas de ,erifcacin al mismo tiempo. >or ejemplo' en la
fgura *.9 pueden estar acti,adas @egrita ( Cursi,a.
&igura *.9 Casillas de ,erifcacin
!3

%a aplicacin C<ecS Bo4
l ejemplo de casilla de ,erifcacin usa una casilla de ,erifcacin para
determinar si el te4to se presenta en .uente normal o cursi,a. >ara ,er
una ,ersin .uncional de este ejemplo' ,ea el arc<i,o C<ecS..rm en la
aplicacin de ejemplo Controls.,1p.
%a aplicacin tiene un cuadro de te4to' una eti6ueta' un 1otn de
comando ( dos casillas de ,erifcacin' como muestra la fgura *.10.
&igura *.10 jemplo de casilla de ,erifcacin
n la ta1la siguiente se muestran los ,alores
de las propiedades de los o1jetos de la aplicacin.
#1jeto >ropiedad Valor
&orm @ame
Caption
.rmC<ecS
jemplo de casilla de
,erifcacin
7e4tBo4 @ame
7e4t
t4tDispla(
jemplo de te4to
>rimera C<ecSBo4 @ame
Caption
c<SBold
D@egrita
$egunda C<ecSBo4 @ame
Caption
c<SItalic
CDursi,a
!8

CommandButton @ame
Caption
cmdClose
DCerrar
Cuando acti,a Bold o Italic' la propiedad Value de la casilla de
,erifcacin es 1W cuando no est8 acti,ada' su propiedad Value es 0. l
,alor predeterminado de Value es 0. >or eso' a menos 6ue modif6ue
Value' la casilla de ,erifcacin estar8 desacti,ada la primera ,e2 6ue se
muestre. >uede usar las constantes ,1C<ecSed ( ,15nc<ecSed para
representar los ,alores 1 ( 0.
,entos de la aplicacin C<ecS Bo4
l e,ento ClicS de la casilla de ,erifcacin se produce en cuanto <ace
clic en la casilla. ste procedimiento de e,ento comprue1a si se <a
acti,ado la casilla de ,erifcacin 9es decir' si su propiedad Value `
,1C<ecSed:. $i es as?' el te4to reci1e el atri1uto de negrita o cursi,a
esta1leciendo las propiedades Bold o Italic del o1jeto &ont de,uelto por
la propiedad &ont del cuadro de te4to.
>ri,ate $u1 c<SBold_ClicS 9:
I. C<SBold.Value ` ,1C<ecSed 7<en a $i est8 acti,ada.
t4tDispla(.&ont.Bold ` 7rue
lse a $i no est8 acti,ada.
t4tDispla(.&ont.Bold ` &alse
nd I.
nd $u1
>ri,ate $u1 c<SItalic_ClicS 9:
I. C<SItalic.Value ` ,1C<ecSed 7<en a $i est8 acti,ada.
t4tDispla(.&ont.Italic ` 7rue
lse a $i no est8 acti,ada.
t4tDispla(.&ont.Italic ` &alse
nd I.
nd $u1
Agrupar opciones con *otones de opci!n
%os 1otones de opcin presentan al usuario un conjunto de dos o m8s
opciones. >ero' a di.erencia de las casillas de ,erifcacin' los 1otones de
opcin de1en .uncionar siempre como parte de un grupoW al acti,ar un
1otn de opcin se desacti,an inmediatamente todos los dem8s 1otones
del grupo. Al defnir un 1otn de opcin se indica al usuario OA6u? tiene
un conjunto de opciones entre las 6ue puede elegir una ( slo unaO.
!9

>or ejemplo' en el grupo de 1otones de opcin 6ue muestra la fgura
*.11' el usuario puede seleccionar uno de los tres 1otones de opcin.
&igura *.11 $eleccionar un 1otn de opcin
Crear grupos de 1otones de opcin
7odos los 1otones de opcin 6ue se colocan directamente en un
.ormulario 9es decir' no en un marco o en un cuadro de imagen:
constitu(en un grupo. $i desea crear grupos adicionales de 1otones de
opcin' de1e colocarlos dentro de marcos o en cuadros de imagen.
7odos los 1otones de opcin 6ue <a(a dentro de un marco dado
constitu(en un grupo independiente' al igual 6ue todos los 1otones de
opcin 6ue <a(a dentro de un cuadro de imagen. Cuando cree un grupo
independiente de esta .orma' di1uje siempre primero el marco o el
cuadro de imagen (' despu+s' di1uje encima los 1otones de opcin. %a
fgura *.12 muestra un .ormulario con dos grupos de 1otones de opcin.
&igura *.12 Prupos de 1otones de opcin
Cuando di1uja 1otones de opcin dentro de un marco' el usuario slo
puede seleccionar un 1otn de opcin del grupo.
>ara agrupar los controles en un marco
1. $eleccione el control &rame del cuadro de <erramientas ( di1uje el
marco en el .ormulario.
/0

2. $eleccione el control #ptionButton en el cuadro de <erramientas (
di1uje el control dentro del marco.
*. =epita el paso 2 para cada 1otn de opcin adicional 6ue desee
agregar al marco.
Di1ujar el marco primero ( di1ujar despu+s cada control en el marco
permite mo,er el marco ( los controles juntos. $i intenta mo,er
controles e4istentes a un marco' los controles no se mo,er8n con el
marco.
@ota $i tiene controles 6ue desea agrupar en un marco' puede
seleccionarlos todos ( cortarlos (' a continuacin' pegarlos en el control
de marco o de imagen.
Contenedores para controles
$i 1ien los controles son o1jetos independientes' e4iste una cierta
relacin primaria y secundaria entre los .ormularios ( los controles. %a
fgura *.12 demuestra cmo pueden estar contenidos los 1otones de
opcin dentro de un .ormulario o dentro de un control de marco.
>ara entender el concepto de contenedores' de1e comprender 6ue todos
los controles son secundarios del .ormulario en el 6ue se di1ujan. De
<ec<o' la ma(or?a de los controles admiten la propiedad de slo lectura
>arent' 6ue de,uel,e el .ormulario en el 6ue est8 u1icado un control. $er
secundario a.ecta a la colocacin de un control en el .ormulario primario.
%as propiedades %e.t ( 7op de un control son relati,as al .ormulario
primario ( no se pueden mo,er los controles .uera de los l?mites del
.ormulario primario. ;o,er un contenedor mue,e tam1i+n los controles'
( la posicin del control relati,a a las propiedades %e.t ( 7op del
contenedor no cam1ia' (a 6ue el control se mue,e con el contenedor.
$eleccionar o desacti,ar 1otones de opcin
0a( ,arias .ormas de seleccionar un 1otn de opcinU
0acer clic en +l con el mouse en tiempo de ejecucin.
Ir al grupo de 1otones de opcin con el ta1ulador ( usar luego las
teclas de direccin para seleccionar un 1otn de opcin del grupo.
Asignar a la propiedad Value el ,alor 7rue en el cdigoU
opt#pcin.Value ` 7rue
5sar una tecla de m+todo a1re,iado especifcada en el t?tulo de la
eti6ueta.
/1

>ara <acer 6ue un 1otn sea el predeterminado en un grupo de 1otones
de opcin' asigne a su propiedad Value el ,alor 7rue en tiempo de
dise-o. l 1otn permanecer8 seleccionado <asta 6ue un usuario
seleccione otro 1otn de opcin di.erente o <asta 6ue lo modif6ue el
cdigo.
>ara desacti,ar un 1otn de opcin' asigne a su propiedad na1led el
,alor &alse. Cuando se ejecute el programa aparecer8 atenuado' lo 6ue
signifca 6ue no est8 disponi1le.
%a aplicacin #pciones
l .ormulario 6ue aparece en la fgura *.1* usa 1otones de opcin para
determinar el tipo de procesador ( el sistema operati,o de un e6uipo
fcticio. Cuando el usuario selecciona un 1otn de opcin de cual6uiera
de los grupos' el t?tulo de la eti6ueta cam1ia para reZejar las opciones
acti,as. >ara ,er una ,ersin .uncional de este ejemplo' ,ea el arc<i,o
#ptions..rm de la aplicacin de ejemplo Controls.,1p.
&igura *.1* jemplo de 1otn de opcin
n la ta1la siguiente se muestran los ,alores de las propiedades de los
o1jetos de la aplicacin.
#1jeto >ropiedad Valor
%a1el @ame
Caption
l1lDispla(
9Vac?o:
CommandButton @ame
Caption
cmdClose
DCerrar
>rimer @ame opt!8"
/2

#ptionButton Caption D!8"
$egundo
#ptionButton
@ame
Caption
Value
opt/8"
D>entium
7rue
7ercer
#ptionButton
@ame
Caption
opt"8"
>Dentium >ro
&rame @ame
Caption
.ra$(stem
D$istema operati,o
Cuarto
#ptionButton
@ame
Caption
optHin9/
DHindoMs 9/
Fuinto
#ptionButton
@ame
Caption
Value
optHin@7
HindoMs D@7
7rue
,entos de la aplicacin #pciones
%a aplicacin #pciones responde a los e,entos de la .orma siguienteU
l e,ento ClicS para los tres primeros 1otones de opcin asigna
una descripcin correspondiente a una ,aria1le de cadena de
.ormulario' strComputer.
l e,ento ClicS para los dos )ltimos 1otones de opcin asigna una
descripcin correspondiente a una segunda ,aria1le de .ormulario'
str$(stem.
%a cla,e de este planteamiento es el uso de estas dos ,aria1les de
.ormulario' strComputer ( str$(stem. stas ,aria1les contienen
di.erentes ,alores de cadena' dependiendo de 6u+ 1otones de opcin se
<a(an seleccionado en )ltimo lugar.
Cada ,e2 6ue se selecciona un nue,o 1otn de opcin' el cdigo de su
e,ento ClicS actuali2a la ,aria1le apropiadaU
>ri,ate $u1 opt/8"_ClicS9:
/*

strComputer ` O>entiumO
Call Displa(Caption
nd $u1
%uego llama a un procedimiento $u1' denominado Displa(Caption' 6ue
concatena las dos ,aria1les ( actuali2a la propiedad Caption de la
eti6uetaU
$u1 Displa(Caption9:
l1lDispla(.Caption ` O0a seleccionado un O D _
strComputer D O 6ue ejecuta O D str$(stem
nd $u1
$e usa un procedimiento $u1 por6ue el procedimiento para actuali2ar la
propiedad Caption es esencialmente el mismo para los cinco 1otones de
opcinU slo cam1ia el ,alor de las ,aria1les de una instancia a la
siguiente. sto a<orra tener 6ue repetir el mismo cdigo en cada uno de
los e,entos ClicS.
>ara o1tener m8s in.ormacin %as ,aria1les ( procedimientos $u1 se
e4plican con m8s detalle en O&undamentos de programacinO.
Usar los cuadros de lista y los cuadros co*inados
%os cuadros de lista ( los cuadros com1inados presentan al usuario una
lista de opciones. De .orma predeterminada' las opciones se muestran
,erticalmente en una )nica columna' aun6ue tam1i+n puede esta1lecer
m)ltiples columnas. $i el n)mero de elementos supera a los 6ue se
pueden mostrar en el cuadro com1inado o el cuadro de lista' aparecen
autom8ticamente 1arras de despla2amiento en el control. l usuario
puede entonces despla2arse por la lista <acia arri1a o <acia a1ajo o de
i26uierda a derec<a. %a fgura *.1! muestra un cuadro de lista de una
)nica columna.
&igura *.1! Cuadro de lista de una )nica columna
5n cuadro com1inado a)na las caracter?sticas de un cuadro de te4to (
un cuadro de lista. ste control permite al usuario seleccionar opciones
/!

si escri1e te4to en el cuadro com1inado o selecciona un elemento de la
lista. %a fgura *.1/ muestra un cuadro com1inado.
&igura *.1/ Cuadro com1inado
A di.erencia de otros controles 6ue contienen un )nico ,alor' por
ejemplo la propiedad Caption de una eti6ueta o la propiedad 7e4t de un
cuadro de te4to' los cuadros de lista ( los cuadros com1inados contienen
m)ltiples ,alores o una coleccin de ,alores. 7ienen m+todos integrados
para agregar' 6uitar ( recuperar ,alores de sus colecciones en tiempo de
ejecucin. >ara agregar ,arios elementos a un cuadro de lista llamado
%ista1' el cdigo ser?a como el siguienteU
%ista1.AddItem O>ar?sO
%ista1.AddItem O@ue,a \orSO
%ista1.AddItem O$an &ranciscoO
%os cuadros de lista ( los cuadros com1inados son una manera e.ecti,a
de presentar al usuario gran cantidad de opciones en un espacio
limitado.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de los controles de cuadro de lista ( cuadro com1inado' ,ea
O5sar los controles est8ndar de Visual BasicO.
Controles -ue uestran i/genes y gr/%cos
Como HindoMs es una inter.a2 gr8fca de usuario' es importante tener
una .orma de presentar im8genes gr8fcas en la inter.a2 de una
aplicacin. Visual Basic inclu(e cuatro controles 6ue .acilitan el tra1ajo
con gr8fcosU control de cuadro de imagen' control de imagen' control de
.orma ( control de l?nea.
A ,eces se <ace re.erencia a los controles de imagen' .orma ( l?nea
como controles gr8fcos OligerosO. =e6uieren menos recursos del sistema
//

(' por consiguiente' se muestran m8s deprisa 6ue el control de cuadro
de imagenW contienen un su1conjunto de las propiedades' m+todos (
e,entos 6ue est8n disponi1les en el cuadro de imagen. Cada uno de
ellos es m8s adecuado para una fnalidad determinada.
>ara proporcionar esta caracter?stica 5se este control
Contenedor para otros controles >icture 9cuadro de imagen:
;+todos gr8fcos o de impresin. >icture 9cuadro de imagen:
;ostrar una imagen. Image 9control de imagen: o
>icture 9cuadro de imagen:
;ostrar un elemento gr8fco simple $<ape 9control de .orma: o %ine
9control de l?nea:
%os cuadros de imagen' controles de imagen' controles de .orma (
controles de l?nea se e4plican en las secciones siguientesU
7ra1ajar con el control de cuadro de imagen &undamentos de la
utili2acin del control de cuadro de imagen.
Controles gr8fcos ligeros &undamentos de la utili2acin de los
controles de imagen' .orma ( l?nea.
%a aplicacin Images jemplo de utili2acin de los controles
gr8fcos.
.ra*ajar con el control de cuadro de iagen
%a utili2acin principal del control de cuadro de imagen es mostrar una
imagen al usuario. %a imagen real 6ue se muestra est8 determinada por
la propiedad >icture. %a propiedad >icture contiene el nom1re de arc<i,o
9( la ruta de acceso opcional: para el arc<i,o de imagen 6ue desea
mostrar.
@ota %os o1jetos &orm 9de .ormulario: tienen tam1i+n una propiedad
>icture 6ue se puede esta1lecer para mostrar una imagen directamente
so1re el .ondo del .ormulario.
/"

>ara presentar o reempla2ar una imagen en tiempo de ejecucin' puede
usar la .uncin %oad>icture para esta1lecer la propiedad >icture. De1e
proporcionar el nom1re 9( una ruta de acceso opcional: para la imagen.
%a .uncin %oad>icture controla los detalles de cmo cargar ( mostrar la
imagenU
pic>rincipal.>icture ` %oad>icture9OVA@P#P0.B;>O:
l control de cuadro de imagen tiene una propiedad Auto$i2e 6ue'
cuando tiene el ,alor 7rue' <ace 6ue el cuadro de imagen cam1ie de
tama-o autom8ticamente para coincidir con las dimensiones de su
contenido. 0a( 6ue tener muc<o cuidado al dise-ar el .ormulario si
piensa usar un cuadro de imagen con la propiedad Auto$i2e acti,ada. %a
imagen cam1iar8 de tama-o sin tener en cuenta los dem8s controles del
.ormulario' causando posi1lemente resultados inesperados' como tapar
otros controles. s con,eniente pro1arloW para ello' cargue cada una de
las im8genes en tiempo de dise-o.
5sar el cuadro de imagen como contenedor
l control de cuadro de imagen puede usarse tam1i+n como contenedor
para otros controles. Como en el control de marco' puede di1ujar otros
controles encima del cuadro de imagen. %os controles contenidos se
mue,en con el cuadro de imagen ( sus propiedades 7op ( %e.t ser8n
relati,as al cuadro de imagen en lugar de ser relati,as al .ormulario.
5na utili2acin com)n para el contenedor del cuadro de imagen es como
1arra de <erramientas o como 1arra de estado. >uede colocar controles
de imagen en +l para 6ue act)en como 1otones o agregar eti6uetas para
presentar mensajes de estado. $i asigna a la propiedad Align el ,alor
7op' Bottom' %e.t o =ig<t' el cuadro de imagen se Opegar8O al 1orde del
.ormulario. %a fgura *.1" muestra un cuadro de imagen cu(a propiedad
Align tiene el ,alor Bottom. Contiene dos controles de eti6ueta 6ue se
pueden usar para mostrar mensajes de estado.
&igura *.1" Cuadro de imagen utili2ado como 1arra de estado
#tros usos del cuadro de imagen
/3

l control de cuadro de imagen tiene ,arios m+todos 6ue lo <acen )til
para otras fnalidades. l cuadro de imagen puede considerarse un
lien2o en 1lanco so1re el 6ue se puede pintar' di1ujar o imprimir. s
posi1le usar un )nico control para mostrar te4to' gr8fcos o incluso una
simple animacin.
l m+todo >rint permite escri1ir te4to en el control de cuadro de imagen
igual 6ue se escri1e en una impresora. 0a( ,arias propiedades de
.uentes disponi1les para controlar las caracter?sticas del te4to por medio
del m+todo >rintW se puede usar el m+todo Cls para 1orrar lo escrito.
$e pueden usar los m+todos Circle' %ine' >oint ( >set para di1ujar
gr8fcos en el cuadro de imagen. 0a( propiedades como DraMHidt<'
&illColor ( &ill$t(le 6ue permiten personali2ar la apariencia de los
gr8fcos.
s posi1le crear animacin con el m+todo >aint>icture' si mue,e
im8genes dentro del control de imagen ( cam1ia r8pidamente entre
,arias im8genes di.erentes.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca del control de cuadro de imagen' ,ea O5sar los controles est8ndar
de Visual BasicO.
&undaentos de los en's
$i desea 6ue la aplicacin proporcione un conjunto de comandos a los
usuarios' los men)s o.recen una .orma cmoda ( co<erente de agrupar
comandos ( una manera sencilla de 6ue los usuarios tengan acceso a
ellos.
%a fgura *.21 ilustra los elementos de una inter.a2 de men) en un
.ormulario sin t?tulo.
&igura *.21 %os elementos de la inter.a2 de men) en un .ormulario de
Visual Basic
/8

%a barra de men"s aparece en el .ormulario inmediatamente de1ajo de
la barra de t#tulo ( contiene uno o m8s t#tulos de men"s. Cuando <ace
clic en un t?tulo de men) 9como Arc<i,o:' se despliega un men) 6ue
contiene una lista de elementos de men). %os elementos de men)
pueden incluir comandos 9como @ue,o ( $alir:' 1arras de separacin (
t?tulos de su1men)s. Cada elemento de men) 6ue ,e el usuario
corresponde a un control de men) defnido en el ditor de men)s 96ue
se descri1e m8s adelante en este mismo cap?tulo:.
>ara 6ue la aplicacin sea m8s .8cil de usar' de1e agrupar los comandos
de men) seg)n su .uncin. n la fgura *.21' por ejemplo' los comandos
relacionados con arc<i,os 9@ue,o' A1rir ( Puardar comod: se
encuentran todos en el men) Arc<i,o.
Algunos elementos de men) reali2an una accin directamenteW por
ejemplo' el elemento $alir del men) Arc<i,o cierra la aplicacin. #tros
elementos de men) muestran un cuadro de di$logo 9una ,entana 6ue
re6uiere 6ue el usuario proporcione in.ormacin 6ue la aplicacin
necesita para reali2ar la accin:. stos elementos de men) de1en ir
seguidos de puntos suspensi,os 9d:. >or ejemplo' cuando elige Puardar
como... en el men) Arc<i,o aparece el cuadro de di8logo Puardar como.
5n control de men) es un o1jeto. Como otros o1jetos' tiene propiedades
6ue puede usar para defnir su apariencia ( su comportamiento. >uede
esta1lecer la propiedad Caption' las propiedades na1led ( Visi1le' la
propiedad C<ecSed ( otras' en tiempo de dise-o o en tiempo de
ejecucin. %os controles de men) contienen slo un e,ento' el e,ento
ClicS' 6ue se in,oca al seleccionar el control de men) con el mouse o
mediante el teclado.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de los controles de men)' ,ea OCrear men)s con el ditor de
men)sO en OCrear la inter.a2 de usuarioO.
;en)s emergentes
/9

5n men" emergente es un men) Zotante 6ue aparece so1re un
.ormulario ( 6ue es independiente de la 1arra de men)s' como muestra
la fgura *.22. %os elementos 6ue aparecen en el men) emergente
dependen de la u1icacin del puntero cuando se presiona el 1otn
secundario del mouseW por tanto' los men)s emergentes se llaman
tam1i+n men"s conte%tuales. 9n HindoMs 9/' para acti,ar los men)s
conte4tuales <a( 6ue <acer clic con el 1otn secundario del mouse.:
De1e usar men)s emergentes para proporcionar un m+todo efciente de
tener acceso a comandos comunes 6ue dependan del conte4to. >or
ejemplo' si <ace clic con el 1otn secundario del mouse en un cuadro de
te4to' aparecer8 un men) conte4tual' como muestra la fgura *.22.
&igura *.22 5n men) emergente
n tiempo de ejecucin se puede mostrar como men) emergente
cual6uier men) 6ue tenga al menos un elemento de men). >ara
presentar un men) emergente' use el m+todo >opup;enu.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de cmo crear men)s emergentes' ,ea OCrear men)s con el
ditor de men)sO en OCrear la inter.a2 de usuarioO.
5sar el ditor de men)s
Con el ditor de men)s es posi1le agregar comandos nue,os a men)s
e4istentes' reempla2ar comandos de men) e4istentes con sus propios
comandos' crear nue,os men)s ( 1arras de men)s' ( modifcar (
eliminar men)s ( 1arras de men)s e4istentes. %a principal ,entaja del
ditor de men)s es su .acilidad de uso. >uede personali2ar los men)s de
una manera completamente interacti,a 6ue conlle,a mu( poca
programacin.
>ara presentar el ditor de men)s
"0

n el men) 0erramientas' elija ditor de men)s.
$e a1rir8 el ditor de men)s 6ue muestra la fgura *.2*
&igura *.2* l ditor de men)s
Aun6ue la ma(or?a de las propiedades del control de men) pueden
esta1lecerse mediante el ditor de men)s' todas las propiedades de
men) est8n tam1i+n disponi1les en la ,entana >ropiedades.
@ormalmente se crean los men)s en el ditor de men)s' pero para
modifcar r8pidamente una propiedad puede usar la ,entana
>ropiedades.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional
acerca de cmo crear men)s ( usar el ditor de men)s' ,ea OCrear
men)s con el ditor de men)sO en OCrear la inter.a2 de usuarioO.
Editor de en's 0cuadro de di/logo1
"1

%e permite crear men)s personali2ados para la aplicacin ( defnir sus
propiedades.
#pciones del cuadro de di8logo
7?tulo
%e permite escri1ir el nom1re del comando o del men) 6ue desea 6ue
apare2ca en la 1arra de men)s o en un men).
$i desea crear una 1arra separadora en el men)' escri1a un )nico guin
9Q: en el cuadro 7?tulo.
>ara dar al usuario acceso a tra,+s del teclado a un elemento del men)'
escri1a el signo D delante de una letra. n tiempo de ejecucin' esta
letra aparecer8 su1ra(ada 9el signo D no ser8 ,isi1le: ( el usuario tendr8
acceso al men) o al comando si presiona las teclas Alt ( la
correspondiente a la letra su1ra(ada. $i necesita 6ue apare2ca en el
men) el signo D' de1er8 escri1ir dos signos D consecuti,os.
@om1reU
%e permite escri1ir un nom1re de control para el elemento del men). l
nom1re de control es un identifcador 6ue slo se utili2a para tener
acceso al elemento del men) en el cdigo' no aparece en ning)n men).
endice
%e permite asignar un ,alor num+rico 6ue determina la posicin del
control en una
;atri2 de controles. sta posicin no tiene ninguna relacin con la
u1icacin del control en la pantalla.
;+todo a1re,iado
%e permite seleccionar una tecla de m+todo a1re,iado para cada
comando.
"2

Id. de conte4to de A(uda
%e permite asignar un ,alor num+rico )nico para el Id. de conte4to. ste
,alor se utili2a para encontrar el tema de A(uda apropiado en el arc<i,o
de A(uda identifcado mediante la propiedad 0elp&ile.
@egotiate>osition
%e permite seleccionar la propiedad @egotiate>osition del men). sta
propiedad determina si el men) aparece o no en un .ormulario
contenedor ( cmo aparece.
C<ecSed
%e permite <acer 6ue apare2ca inicialmente una marca de ,erifcacin a
la i26uierda de un elemento del men). $e utili2a normalmente para
indicar si una opcin de alternar est8 acti,ada o no.
na1led
%e permite seleccionar si el elemento del men) de1e responder a
e,entos. Desacti,e esta opcin si desea 6ue el elemento del men) no
est+ disponi1le ( apare2ca atenuado.
Visi1le
%e permite <acer 6ue un elemento apare2ca en el men).
HindoM%ist
Determina si el control del men) contiene una lista de .ormularios
secundarios ;DI a1iertos en una aplicacin ;DI.
&lec<a a la derec<a
>asa el men) seleccionado a un ni,el in.erior cada ,e2 6ue <ace clic en
el 1otn. >uede crear <asta cuatro ni,eles de su1men)s.
&lec<a a la i26uierda
>asa el men) seleccionado a un ni,el superior cada ,e2 6ue <ace clic en
el 1otn. >uede crear <asta cuatro ni,eles de su1men)s.
&lec<a arri1a
"*

Cada ,e2 6ue se <ace clic en este 1otn' el elemento seleccionado del
men) se mue,e <acia arri1a una posicin dentro del mismo ni,el de
men).
&lec<a a1ajo
Cada ,e2 6ue se <ace clic en este 1otn' el elemento seleccionado del
men) se mue,e <acia a1ajo una posicin dentro del mismo ni,el de
men).
%ista ;en)s
s un cuadro de lista 6ue muestra en orden jer8r6uico todos los
elementos del men). %os elementos de los su1men)s aparecen
indentados para indicar su u1icacin o su ni,el en la jerar6u?a.
$iguienteU $elecciona la l?nea siguiente.
InsertarU Inserta una l?nea en el cuadro de lista' inmediatamente encima
de la l?nea actualmente seleccionada.
liminarU limina Borra la l?nea actualmente seleccionada.
AceptarU Cierra el ditor de men)s ( aplica todos los cam1ios e.ectuados
en el )ltimo .ormulario seleccionado. l men) est8 disponi1le en tiempo
de dise-o' pero si selecciona un men) en la .ase de dise-o' se a1re la
,entana Cdigo para el e,ento Clic de ese men) en lugar de ejecutarse
el cdigo del e,ento.
CancelarU Cierra el ditor de men)s ( cancela todos los cam1ios.
.ra*ajar con proyectos
Cuando se desarrolla una aplicacin' se tra1aja con un arc<i,o de
pro(ecto para administrar todos los di.erentes arc<i,os 6ue se crean. 5n
pro(ecto consta deU
5n arc<i,o de pro(ecto 6ue reali2a el seguimiento de todos los
componentes 9.,1p:
5n arc<i,o para cada .ormulario 9..rm:.
5n arc<i,o de datos 1inarios para cada .ormulario 6ue contiene
datos so1re propiedades de controles del .ormulario 9..r4:. stos
"!

arc<i,os no se pueden modifcar ( los genera autom8ticamente
cual6uier arc<i,o ..rm 6ue tenga propiedades en .ormato 1inario'
como >icture o Icon.
#pcionalmente' un arc<i,o para cada mdulo de clase 9.cls:.
#pcionalmente' un arc<i,o para cada mdulo est8ndar 9.1as:.
#pcionalmente' uno o m8s arc<i,os con controles Acti,eG 9.oc4:.
#pcionalmente' un )nico arc<i,o de recursos 9.res:.
l arc&ivo de proyecto es simplemente una lista de todos los arc<i,os (
o1jetos asociados con el pro(ecto' as? como in.ormacin acerca de las
opciones de entorno esta1lecidas. sta in.ormacin se actuali2a cada
,e2 6ue se guarda el pro(ecto. 7odos los arc<i,os ( o1jetos tam1i+n se
pueden compartir con otros pro(ectos.
Cuando <a completado todos los arc<i,os del pro(ecto puede con,ertir
el pro(ecto en un arc<i,o ejecuta1le 9.e4e:U en el men) Arc<i,o' elija el
comando Penerar proyecto.e%e.
@ota Con las ediciones >ro.esional ( mpresarial de Visual Basic
tam1i+n puede crear otro tipo de arc<i,os ejecuta1les' como arc<i,os
.oc4 ( .dll. n las re.erencias de este cap?tulo se supone un pro(ecto .e4e
est8ndarW para o1tener in.ormacin adicional acerca de otros tipos de
pro(ectos' ,ea la Gu#a de &erramientas componentes' disponi1le en las
ediciones >ro.esional ( st8ndar.
>ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de la
creacin de ejecuta1les' ,ea OCrear ( ejecutar un arc<i,o ejecuta1leO
m8s adelante en este cap?tulo. >ara o1tener in.ormacin acerca de
arc<i,os de datos 1inarios ( arc<i,os de pro(ecto' ,ea Ospecifcaciones'
limitaciones ( .ormatos de arc<i,os de Visual BasicO.
4plorador de pro(ectos
Cuando se crean' agregan o 6uitan arc<i,os modifca1les de un
pro(ecto' Visual Basic reZeja los cam1ios en la ,entana 4plorador de
pro(ectos' 6ue contiene una lista actuali2ada de los arc<i,os del
pro(ecto. %a ,entana 4plorador de pro(ectos de la fgura !.1 muestra
algunos tipos de arc<i,os 6ue puede incluir un pro(ecto de Visual Basic.
&igura !.1 Ventana del 4plorador de pro(ectos
"/

Arc<i,os de pro(ecto
Cada ,e2 6ue guarda un pro(ecto' Visual Basic actuali2a el arc<i,o de
pro(ecto 9.,1p:. 5n arc<i,o de pro(ecto contiene la misma lista de
arc<i,os 6ue aparece en la ,entana del 4plorador de pro(ectos' as?
como re.erencias a los controles Acti,eG ( o1jetos inserta1les 6ue se
usan en el pro(ecto.
>ara a1rir un arc<i,o de pro(ecto e4istente' <aga do1le clic en el icono'
elija el comando A1rir pro(ecto en el men) Arc<i,o o arrastre el arc<i,o
( col6uelo en la ,entana del 4plorador de pro(ectos.
>ara o1tener m8s in.ormacin l .ormato espec?fco de la in.ormacin
almacenada en el arc<i,o .,1p se descri1e en Ospecifcaciones'
limitaciones ( .ormatos de arc<i,o de Visual BasicO.
Estructura de un proyecto de Visual Basic
%as siguientes secciones descri1en los di.erentes tipos de arc<i,os (
o1jetos 6ue se pueden incluir en un pro(ecto.
;dulos de .ormulario
%os mdulos de .ormulario 9e4tensin de nom1re de arc<i,o ..rm:
pueden contener te4to descripti,o del .ormulario ( sus controles'
inclu(endo los ,alores de sus propiedades. 7am1i+n pueden contener
declaraciones de .ormulario de constantes' ,aria1les ( procedimientos
e4ternos' as? como procedimientos de e,ento ( procedimientos
generales.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la
creacin de .ormularios' ,ea ODesarrollar una aplicacin con Visual
BasicO ( OCrear la inter.a2 de usuarioO. >ara o1tener in.ormacin acerca
del .ormato ( el contenido de arc<i,os de .ormulario' ,ea
Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO.
""

;dulos de clase
%os mdulos de clase 9e4tensin de nom1re de arc<i,o .cls: son
similares a los mdulos de .ormulario' e4cepto en 6ue no tienen inter.a2
de usuario ,isi1le. >uede usar mdulos de clase para crear sus propios
o1jetos' inclu(endo cdigo para m+todos ( propiedades.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la
escritura de cdigo en mdulos de clase' ,ea OCrear clases propiasO en
O>rogramar con o1jetosO.
;dulos est8ndar
%os mdulos est8ndar 9e4tensin de nom1re de arc<i,o .1as: pueden
contener declaraciones p)1licas o a ni,el de mdulo de tipos'
constantes' ,aria1les' procedimientos e4ternos ( procedimientos
p)1licos.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca del uso
de mdulos' ,ea O&undamentos de programacinO ( O>rogramar con
o1jetosO.
Arc<i,os de recursos
%os arc<i,os de recursos 9e4tensin de nom1re de arc<i,o .res:
contienen mapas de 1its' cadenas de te4to ( otros datos 6ue se pueden
modifcar sin ,ol,er a modifcar el cdigo. >or ejemplo' si piensa locali2ar
su aplicacin a un idioma e4tranjero' puede guardar todas las cadenas
de te4to de la inter.a2 de usuario ( los mapas de 1its en un arc<i,o de
recursos' ( simplemente traducir el arc<i,o de recursos en ,e2 de la
aplicacin completa. 5n pro(ecto slo puede contener un arc<i,o de
recursos.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
uso de arc<i,os de recursos' ,ea O5sar un arc<i,o de recursosO (
OAspectos internacionalesO m8s adelante en este cap?tulo.
Documentos Acti,eG
%os documentos Acti,eG 9.do1: son similares a los .ormularios' pero se
muestran en un e4plorador de Internet como Internet 4plorer. %as
ediciones >ro.esional ( mpresarial de Visual Basic son capaces de crear
documentos Acti,eG.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
los documentos Acti,eG' ,ea OCrear componentes Acti,eGO en la Gu#a de
"3

&erramientas componentes' disponi1le en las ediciones >ro.esional (
mpresarial.
;dulos de controles de usuario ( de p8ginas de propiedades
%os mdulos de controles de usuario 9.ctl: ( de p8ginas de propiedades
9.pag: son similares a los .ormularios' pero se usan para crear controles
Acti,eG ( las p8ginas de propiedades asociadas para mostrar
propiedades en tiempo de dise-o. %as ,ersiones >ro.esional (
mpresarial de Visual Basic pueden crear controles Acti,eG.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
la creacin de controles Acti,eG' ,ea OCrear un control Acti,eGO en
OCrear componentes Acti,eGO' dentro de la Gu#a de &erramientas
componentes' disponi1le en las ediciones >ro.esional ( st8ndar.
Componentes
Adem8s de arc<i,os ( mdulos' tam1i+n es posi1le agregar otro tipo de
componentes a un pro(ecto.
Controles Acti,eG
%os controles Acti,eG 9e4tensin de nom1re de arc<i,o .oc4: son
controles opcionales 6ue se pueden agregar al cuadro de <erramientas (
se pueden usar en .ormularios. Cuando instala Visual Basic' los arc<i,os
6ue contienen los controles incluidos en Visual Basic se copian a un
directorio com)n 9el su1directorio XHindoMsX$(stem en HindoMs 9/:.
4isten controles Acti,eG adicionales disponi1les en di,ersas .uentes.
7am1i+n puede crear sus propios controles mediante las ediciones
>ro.esional ( mpresarial de Visual Basic.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
uso de los controles Acti,eG incluidos' ,ea O5sar controles Acti,eGO en la
Gu#a de &erramientas componentes' disponi1le en las ediciones
pro.esional ( empresarial.
#1jetos inserta1les
%os objetos insertables' como un o1jeto 0oja de c8lculo de ;icroso.t
4cel' son componentes 6ue se pueden usar como 1lo6ues para generar
soluciones integradas. 5na solucin integrada puede contener datos en
di.erentes .ormatos' como <ojas de c8lculo' mapas de 1its ( te4to'
creados por di.erentes aplicaciones.
"8

>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
uso de o1jetos de otras aplicaciones' ,ea O>rogramar con componentesO.
=e.erencias
7am1i+n puede agregar re.erencias a componentes Acti,eG e4ternos 6ue
se pueden usar en la aplicacin. >ara asignar re.erencias se usa el
cuadro de di8logo =e.erencias' al 6ue se tiene acceso mediante el
comando =e.erencias del men) >ro(ecto.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
re.erencias' ,ea O5sar o1jetos de otras aplicacionesO m8s adelante en
este cap?tulo.
Dise-adores Acti,eG
%os dise-adores Acti,eG son <erramientas para dise-ar clases a partir
de las cuales es posi1le crear o1jetos. %a inter.a2 de dise-o para
.ormularios es el dise-ador predeterminado. >uede <a1er disponi1les
otros dise-adores adicionales desde otros or?genes.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
los dise-adores Acti,eG' ,ea ODise-adores Acti,eGO en el cap?tulo
9'O>rogramar con o1jetosO.
Controles est8ndar
%os controles est8ndar los proporciona Visual Basic. %os controles
est8ndar' como CommandButton 91otn de comando: o &rame 9marco:'
siempre est8n incluidos en el cuadro de <erramientas' al contrario de lo
6ue ocurre con los controles Acti,eG ( los o1jetos inserta1les' 6ue se
pueden agregar ( 6uitar del cuadro de <erramientas.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
los controles est8ndar' ,ea O&ormularios' controles ( men)sO ( O5sar
controles est8ndar de Visual BasicO.
Crear, a*rir y guardar proyectos
0a( cuatro comandos del men) Arc<i,o 6ue permiten crear' a1rir (
guardar pro(ectos.
Comando de men) Descripcin
"9

@ue,o pro(ecto Cierra el pro(ecto actual ( le pregunta si desea
guardar los arc<i,os modifcados. >uede elegir un
tipo de pro(ecto desde el cuadro de di8logo @ue,o
pro(ecto. A continuacin' Visual Basic crea un
pro(ecto nue,o con un )nico arc<i,o nue,o.
A1rir pro(ecto Cierra el pro(ecto actual ( le pregunta si desea
guardar los cam1ios. A continuacin' Visual Basic
a1re un pro(ecto e4istente' inclu(endo los
.ormularios' mdulos ( controles Acti,eG
enumerados en el arc<i,o de pro(ecto 9.,1p:.
Puardar pro(ecto Actuali2a el arc<i,o del pro(ecto actual ( todos sus
mdulos de .ormulario' est8ndar ( de clase.
Puardar pro(ecto
como
Actuali2a el arc<i,o del pro(ecto actual' guardando
el arc<i,o de pro(ecto con un nom1re 6ue especifca
el propio usuario. Visual Basic tam1i+n le pide 6ue
guarde cual6uier .ormulario o mdulo 6ue <a(a
cam1iado.
7am1i+n es posi1le compartir arc<i,os entre pro(ectos. 5n arc<i,o
concreto' como un .ormulario' puede .ormar parte de ,arios pro(ectos.
%os cam1ios 6ue realice a un .ormulario o un mdulo en un pro(ecto
a.ectar8n a todos los pro(ectos 6ue compartan ese mdulo.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
uso compartido de arc<i,os' ,ea OAgregar' 6uitar ( guardar arc<i,osO
m8s adelante en este cap?tulo.
7ra1ajar con ,arios pro(ectos
n las ,ersiones >ro.esional ( mpresarial de Visual Basic es posi1le
tener m8s de un pro(ecto a1ierto a la ,e2. sto es )til para generar (
pro1ar soluciones 6ue contengan controles creados por el usuario u
otros componentes. Cuando est+ cargado m8s de un pro(ecto' el t?tulo
de la ,entana del 4plorador de pro(ectos cam1iar8 a Prupo de
30

pro(ectos ( se mostrar8n los componentes de todos los pro(ectos
a1iertos.
>ara agregar un pro(ecto adicional al grupo de pro(ectos actual
1. n el men) Arc<i,o' elija Agregar pro(ecto.
Aparecer8 el cuadro de di8logo Agregar pro(ecto.
2. $eleccione un pro(ecto e4istente o un nue,o pro(ecto ( elija A1rir.
>ara 6uitar un pro(ecto del grupo de pro(ectos actual
1. $eleccione un pro(ecto o un componente de un pro(ecto en el
4plorador de pro(ectos.
2. n el men) Arc<i,o' elija Fuitar pro(ecto.
>ara o1tener m8s in.ormacin >ara sa1er m8s detalles acerca del
tra1ajo con m)ltiples pro(ectos' ,ea OCrear componentes Acti,eGO en la
Gu#a de &erramientas componentes' disponi1le en las ediciones
pro.esional ( empresarial.
Agregar, -uitar y guardar arc"i#os
7ra1ajar con arc<i,os de un pro(ecto es similar a tra1ajar con los
pro(ectos propiamente dic<os.
>ara agregar un arc<i,o a un pro(ecto
1. $eleccione >ro(ecto' Agregar tipo'de'arc&ivo 9donde
tipo'de'arc&ivo es el tipo de arc<i,o:.
Aparecer8 el cuadro de di8logo Agregar tipo'de'arc&ivo 9fgura
!.2:.
2. $eleccione un tipo de arc<i,o e4istente o uno nue,o ( elija A1rir.
&igura !.2 Cuadro de di8logo Agregar .ormulario
31

Cuando se agrega un arc<i,o a un pro(ecto' simplemente se est8
inclu(endo en el pro(ecto una re.erencia al arc<i,o e4istente' no
agregando una copia de un arc<i,o. >or tanto' si e.ect)a cam1ios en un
arc<i,o ( lo guarda' los cam1ios a.ectar8n a cual6uier pro(ecto 6ue
contenga dic<o arc<i,o. >ara cam1iar un arc<i,o sin a.ectar a otros
pro(ectos' seleccione el arc<i,o en el 4plorador de pro(ectos' elija
Puardar arc&ivo como en el men) Arc<i,o ( guarde el arc<i,o con un
nom1re nue,o.
@ota >uede arrastrar ( colocar arc<i,os desde el 4plorador de
HindoMs' el Administrador de arc<i,os o el ntorno de red a la ,entana
>ro(ecto para agregarlos al pro(ecto. 7am1i+n puede arrastrar ( colocar
arc<i,os .oc4 en el cuadro de <erramientas para agregar controles
nue,os.
>ara 6uitar un arc<i,o de un pro(ecto
1. $eleccione el arc<i,o en el 4plorador de pro(ectos.
2. n el men) >ro(ecto' elija Fuitar arc&ivo.
*. l arc<i,o se 6uitar8 del pro(ecto pero no del disco.
$i 6uita un arc<i,o de un pro(ecto' Visual Basic actuali2a la in.ormacin
del arc<i,o de pro(ecto al guardarlo. $in em1argo' si elimina un arc<i,o
desde .uera de Visual Basic' Visual Basic no podr8 actuali2ar el arc<i,o
de pro(ectoW por tanto' cuando a1ra el pro(ecto' Visual Basic mostrar8
un mensaje de error indicando 6ue .alta un arc<i,o.
>ara guardar un )nico arc<i,o sin guardar el pro(ecto
1. $eleccione el arc<i,o en el 4plorador de pro(ectos.
2. n el men) Arc<i,o' elija Puardar arc&ivo.
Com1inar te4to
32

7am1i+n puede insertar te4to e4istente de otros arc<i,os dentro de uno
de sus mdulos de cdigo. sto es )til para agregar una lista de
constantes o para agregar .ragmentos de cdigo 6ue <a(a guardado en
arc<i,os de te4to.
>ara insertar un arc<i,o de te4to en el cdigo
1. n la ,entana >ro(ecto' seleccione el .ormulario o el mdulo en el
6ue desea insertar cdigo.
2. lija el 1otn Ver cdigo ( mue,a el cursor al lugar del editor de
cdigo donde desee insertar cdigo.
*. n el men) dicin' elija Insertar arc<i,o.
!. $eleccione el nom1re del arc<i,o de te4to 6ue desea insertar (
elija A1rir.
@ota $i modifca arc<i,os de cdigo .uente de Visual Basic con un
editor de cdigo o de te4to distinto de Visual Basic' tenga cuidado de no
cam1iar los ,alores del atri1uto VB_>redeclaredId. $i cam1ia este
atri1uto es posi1le 6ue genere gra,es pro1lemas en las clases
Plo1al;ulti5se ( Plo1al$ingle5se.
n general' no de1e modifcar atri1utos manualmente' si lo <ace puede
situar el mdulo en un estado interno de inconsistencia.
Crear y ejecutar un arc"i#o ejecuta*le
n Visual Basic puede crear un arc<i,o ejecuta1le 9.e4e: mediante el
procedimiento siguiente.
>ara crear un arc<i,o ejecuta1le en Visual Basic
1. n el men) Arc<i,o' elija Penerar arc&ivo .e4e donde arc&ivo es el
nom1re de aplicacin para el pro(ecto.
2. scri1a un nom1re de arc<i,o o e4amine los directorios (
seleccione un nom1re de arc<i,o ejecuta1le e4istente para
reempla2arlo por una nue,a ,ersin.
*. $i <ace clic en el 1otn #pciones tam1i+n puede especifcar una
serie de detalles espec?fcos de la ,ersin del arc<i,o ejecuta1le
mediante el cuadro de di8logo >ropiedades del pro(ecto.
!. $i desea modifcar el n)mero de ,ersin del pro(ecto' esta1le2ca
los n)meros apropiados en >rincipal' $ecundario ( =e,isin. $i
selecciona Incremento autom8tico' el n)mero de =e,isin se
3*

incrementar8 autom8ticamente cada ,e2 6ue ejecute el comando
Penerar arc&ivo .e4e para este pro(ecto.
/. >ara especifcar un nom1re nue,o para la aplicacin' escri1a un
nom1re nue,o 1ajo Aplicacin' en el cuadro 7?tulo. $i desea
especifcar un icono nue,o' elija uno en la lista.
". 7am1i+n puede especifcar comentarios espec?fcos de la ,ersin
so1re di,ersos aspectos en el cuadro In.ormacin de ,ersin
9comentarios' nom1re de la organi2acin' marcas comerciales
legales' derec<os de autor' etc.: si selecciona un tema del cuadro
de lista ( escri1e la in.ormacin en el cuadro de te4to.
3. lija Aceptar para cerrar el cuadro de di8logo >ropiedades del
pro(ecto ( despu+s elija Aceptar en el cuadro de di8logo Penerar
proyecto para compilar ( ,incular el arc<i,o ejecuta1le.
>uede iniciar el arc<i,o ejecuta1le de la misma manera 6ue cual6uier
aplicacin HindoMsU <aga do1le clic en el icono del arc<i,o ejecuta1le.
@ota %a generacin de un arc<i,o ejecuta1le desde la l?nea de
comandos en una sesin D#$ puede ser )til cuando desee compilar un
pro(ecto desde un programa. n un arc<i,o por lotes' escri1aU
V1" VmaSe nombre'proyectoJ.,1pL Jnombre'ejecutableL
n nombre'proyecto' escri1a el nom1re del arc<i,o de pro(ecto. 5se la
,aria1le nombre'ejecutable para cam1iar el nom1re del arc<i,o
ejecuta1le resultante.
Compilacin condicional
%a compilacin condicional le permite compilar de .orma selecti,a
ciertas partes del programa. >uede incluir caracter?sticas espec?fcas del
programa en di.erentes ,ersiones' como cam1iar los fltros para mostrar
.ec<as ( datos monetarios de una aplicacin distri1uida en di.erentes
idiomas.
>ara o1tener m8s in.ormacin >ara aprender m8s acerca de la
compilacin condicional' ,ea O5sar la compilacin condicionalO en
ODetalles de programacinO.
De%nir opciones del proyecto
Visual Basic permite personali2ar cada pro(ecto esta1leciendo una serie
de propiedades. 5se el cuadro de di8logo >ropiedades del pro(ecto' al
6ue se tiene acceso mediante el comando >ropiedades de proyecto del
3!

men) >ro(ecto. %os ,alores de las propiedades se guardan en el arc<i,o
de pro(ecto 9.,1p:.
n la ta1la siguiente se descri1en algunas opciones 6ue puede
esta1lecer.
#pcin Descripcin
#1jeto inicial >rimer .ormulario 6ue Visual Basic presenta en
tiempo de ejecucin o $u1 ;ain 9 :.
@om1re de pro(ecto Identifca el pro(ecto en el cdigo. @o puede
contener puntos 9.: ni espacios en 1lanco' ( no
de1e comen2ar por caracteres no al.a1+ticos.
$i es el nom1re de una clase p)1lica' el
nom1re de pro(ecto ( el nom1re de clase no
pueden e4ceder de *3 caracteres.
Arc<i,o de A(uda @om1re del arc<i,o de A(uda asociado con el
pro(ecto.
Id. de conte4to de la
A(uda del pro(ecto
Identifcador de conte4to del tema de A(uda
espec?fco al 6ue se llama cuando el usuario
<ace clic en el 1otn OCO mientras la 1i1lioteca
de o1jetos de la aplicacin est8 seleccionada
en el 4aminador de o1jetos.
Descripcin del pro(ecto @om1re descripti,o del pro(ecto. $e presenta
en los cuadros de di8logo =e.erencias (
4aminador de o1jetos.
0a( disponi1les otras muc<as opciones' inclu(endo las de compilar'
componentes ( m)ltiples procesos. Cuando est+ preparado para tener
acceso a algunas de las opciones m8s a,an2adas' puede o1tener m8s
in.ormacin en la A(uda.
>ara o1tener m8s in.ormacin >ara aprender acerca de cmo
esta1lecer las opciones de entorno 6ue a.ectan a todos los pro(ectos'
,ea ODesarrollar una aplicacin con Visual BasicO.
3/

Estructura de una aplicaci!n en Visual Basic
5na aplicacin no es m8s 6ue un conjunto de instrucciones para 6ue el
e6uipo realice una o ,arias tareas. %a estructura de una aplicacin es la
.orma en 6ue se organi2an las instruccionesW es decir' dnde se
almacenan las instrucciones ( el orden en 6ue se ejecutan.
%as aplicaciones sencillas' como el ejemplo cl8sico O0ola mundoO' tienen
una estructura sencillaW la organi2acin no es mu( importante cuando
slo se tiene una l?nea de cdigo. A medida 6ue las aplicaciones se ,an
<aciendo m8s complejas' resulta o1,ia la necesidad de organi2ar o
estructurar. Imagine el caos resultante si su aplicacin se ejecutara en
un orden aleatorio. Adem8s de controlar la ejecucin de una aplicacin'
la estructura es importante para el programadorU Ble resulta sencillo
encontrar una instruccin determinada en la aplicacinC
>uesto 6ue una aplicacin de Visual Basic se 1asa en o1jetos' la
estructura de su cdigo se apro4ima muc<o a su representacin .?sica en
pantalla. >or defnicin' los o1jetos contienen datos ( cdigo. l
.ormulario 6ue ,e en la pantalla es una representacin de las
propiedades 6ue defnen su apariencia ( su comportamiento intr?nseco.
>or cada .ormulario de una aplicacin <a( un mdulo de (ormulario
relacionado 9con la e4tensin de nom1re de arc<i,o ..rm: 6ue contiene
su cdigo.
&igura /.1 5n .ormulario ( su mdulo de .ormulario relacionado
Cada mdulo de .ormulario contiene procedimientos de evento
9secciones de cdigo donde se colocan las instrucciones 6ue se
3"

ejecutar8n como respuesta a e,entos espec?fcos:. %os .ormularios
pueden contener controles. >or cada control de un .ormulario' e4iste el
correspondiente conjunto de procedimientos de e,ento en el mdulo de
.ormulario. Adem8s de procedimientos de e,ento' los mdulos de
.ormulario pueden contener procedimientos generales 6ue se ejecutan
como respuesta a una llamada desde cual6uier procedimiento de
e,ento.
l cdigo 6ue no est+ relacionado con un control o un .ormulario
espec?fco se puede colocar en un tipo di.erente de mdulo' un mdulo
est$ndar 9.1as:. $e de1en colocar en un mdulo est8ndar los
procedimientos 6ue se puedan usar como respuesta a e,entos de
di,ersos o1jetos' en lugar de duplicar el cdigo en los procedimientos de
e,ento de cada o1jeto.
$e utili2a un mdulo de clase 9.cls: para crear o1jetos a los 6ue se puede
llamar desde procedimientos de la aplicacin. ;ientras 6ue un mdulo
est8ndar slo contiene cdigo' un mdulo de clase contiene cdigo (
datos 9puede considerarse como un control sin representacin .?sica:.
;ientras 6ue en OAdministrar pro(ectosO se descri1en los componentes
6ue puede agregar a una aplicacin' este cap?tulo e4plica cmo escri1ir
cdigo en los distintos componentes 6ue con.orman una aplicacin. De
.orma predeterminada' el pro(ecto contiene un )nico mdulo de
.ormulario. >uede agregar mdulos adicionales de .ormulario' clase (
est8ndar' si es necesario. %os mdulos de clase se descri1en en
O>rogramar con o1jetosO.
Cmo .unciona una aplicacin controlada por e,entos 5na
e4plicacin del modelo controlado por e,entos.
Especi%caciones, liitaciones y )oratos de arc"i#os
de Visual Basic
n este ap+ndice se descri1en los re6uisitos de sistema' las limitaciones
de un pro(ecto de Visual Basic' los tipos de arc<i,os 6ue se pueden
incluir en el pro(ecto de Visual Basic ( las descripciones de los arc<i,os
de .ormulario 9..rm: ( de pro(ecto 9.,1p:.
@ota A pesar de 6ue muc<as de estas limitaciones se descri1en en
t+rminos de un n)mero espec?fco' tenga en cuenta 6ue otras
condiciones 9como la memoria disponi1le ( los recursos del sistema:
pueden imponer una restriccin antes de 6ue se llegue a ese l?mite.
7emas
33

=e6uisitos del sistema para aplicaciones de Visual Basic
=e6uisitos del sistema para las aplicaciones creadas en Visual
Basic.
%imitaciones de los pro(ectos
%imitaciones 6ue restringen la .orma de escri1ir cdigo' el n)mero
de controles 6ue puede usar en una aplicacin o la manera en 6ue
se administra la entrada de datos.
&ormatos de arc<i,os de pro(ecto
%os arc<i,os de tiempo de dise-o ( de ejecucin 6ue se pueden
incluir en el pro(ecto de Visual Basic.
structuras de .ormularios
Descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto
9.,1p:.
2e-uisitos del sistea para aplicaciones de Visual
Basic
>ara las aplicaciones de Visual Basic se re6uiere el siguiente <ardMare (
so.tMareU
;icroprocesador >entium
N
90;02 o superior.
>antalla VPA de "!04!80 o de resolucin superior compati1le con
;icroso.t HindoMs.
2! ;B de =A; para HindoMs 9/' *2 ;B para HindoMs @7.
;icroso.t HindoMs @7 *./1 o posterior' o ;icroso.t HindoMs 9/ o
posterior.
;icroso.t Internet 4plorer ,ersin !.01 o posterior 9,ersin !.01
$er,ice >acS 1 o posterior para programadores de aplicaciones
D07;% ( !.% para los usuarios fnales de dic<as aplicaciones:.
=e6uisitos de espacio en disco duroU
dicin st8ndarU instalacin t?pica !8;B' instalacin
completa 80;B.
38

dicin >ro.esionalU instalacin t?pica !8;B' instalacin
completa 80;B.
dicin mpresarialU instalacin t?pica 128;B' instalacin
completa 1!3;B.
Componentes adicionales 9si son necesarios:U ;$D@ 9para
documentacin:U "3;B' Internet 4plorer !.4U
apro4imadamente "";B.
CDQ=#; 9no se supone soporte para ;$QD#$:.
Liitaciones de los proyectos
5n )nico pro(ecto puede contener <asta *2.000 OidentifcadoresO
9cual6uier pala1ra cla,e no reser,ada:' 6ue inclu(en entre otros
.ormularios' controles' mdulos' ,aria1les' constantes' procedimientos'
.unciones ( o1jetos. #1ser,e 6ue el n)mero real de identifcadores se
limita a la memoria disponi1le.
%os nom1res de ,aria1les en Visual Basic no pueden tener m8s de 2//
caracteres ( los nom1res de .ormularios' controles' mdulos ( clases
pueden tener un m84imo de !0 caracteres. Visual Basic no impone
ning)n l?mite en cuanto al n)mero de o1jetos distintos de un pro(ecto.
&oratos de arc"i#os de proyecto
;icroso.t Visual Basic utili2a ( crea una serie de arc<i,os tanto en
tiempo de dise-o como en tiempo de ejecucin. %os arc<i,os 6ue el
pro(ecto o la aplicacin re6uerir8n dependen de su alcance (
.uncionalidad.
4tensiones de arc<i,os de pro(ecto
Visual Basic crea ,arios arc<i,os cuando se crea ( compila un pro(ecto.
stos se pueden di,idir como sigueU tiempo de dise-o' otros desarrollos
( tiempo de ejecucin.
%os arc<i,os de tiempo de dise-o son los ladrillos de su pro(ectoU por
ejemplo' mdulos de Basic 9.1as: ( mdulos de .ormulario 9..rm:.
#tros procesos ( .unciones del entorno de desarrollo de Visual Basic
crean di,ersos arc<i,osU por ejemplo' arc<i,os de dependencias del
Asistente de empa6uetado ( distri1ucin 9.dep:.
Arc<i,os ,arios ( de tiempo de dise-o
39

%a siguiente ta1la muestra todos los arc<i,os de tiempo de dise-o (
otros arc<i,os 6ue se pueden crear al desarrollar una aplicacinU
4tensin Descripcin
.1as ;dulo de Basic
.cls ;dulo de clase
.ctl Arc<i,o de control de usuario
.ct4 Arc<i,o 1inario de control de usuario
.dca Cac<+ de dise-ador acti,o
.dd. Arc<i,o de in.ormacin CAB del Asistente de
empa6uetado ( distri1ucin
.dep Arc<i,o de dependencias del Asistente de empa6uetado (
distri1ucin
.do1 Arc<i,o de .ormulario de documento Acti,eG
.do4 Arc<i,o 1inario de .ormulario de documento Acti,eG
.dsr Arc<i,o de dise-ador acti,o
.ds4 Arc<i,o 1inario de dise-ador acti,o
.dMs Arc<i,o de secuencia de guiones del Asistente para
despliegue
..rm Arc<i,o de .ormulario
..r4 Arc<i,o 1inario de .ormulario
.log Arc<i,o de registro de errores de carga
80

.oca Arc<i,o de cac<+ de 1i1lioteca de tipos de controles
.pag Arc<i,o de p8gina de propiedades
.pg4 Arc<i,o 1inario de p8gina de propiedades
.res Arc<i,o de recursos
.tl1 Arc<i,o 7(pe%i1 de Automati2acin remota
.,1g Arc<i,o de pro(ecto de grupo de Visual Basic
.,1l Arc<i,o de control de licencia
.,1p Arc<i,o de pro(ecto de Visual Basic
.,1r Arc<i,o de registro de Automati2acin remota
.,1M Arc<i,o de espacio de tra1ajo de pro(ecto de Visual Basic
.,12 Arc<i,o de inicio del Asistente
.Mct >lantilla 07;% de clase de He1.
Arc<i,os de tiempo de ejecucin
Al compilar la aplicacin' todos los arc<i,os necesarios de tiempo de
ejecucin se inclu(en en los arc<i,os ejecuta1les de tiempo de
ejecucin. %a siguiente ta1la muestra los arc<i,os de tiempo de
ejecucinU
4tensi
n
Descripcin
.dll Componente Acti,eG en proceso
.e4e Arc<i,o ejecuta1le o componente
81

Acti,eG
.oc4 Control Acti,eG
.,1d Arc<i,o de estado de documento
Acti,eG
.Mct >lantilla 07;% de clase de He1
Agregar controles a un proyecto
s posi1le personali2ar' para cada pro(ecto' el conjunto de controles
disponi1les en el cuadro de <erramientas. Cual6uier control
proporcionado de1e estar en el cuadro de <erramientas para 6ue se
pueda agregar a un .ormulario del pro(ecto. l conjunto 18sico de
controles est8ndar 6ue siempre aparece en el cuadro de <erramientas se
descri1e en O&ormularios' controles ( men)sO.
Agregar controles Acti,eG a un pro(ecto
>uede agregar controles Acti,eG ( o1jetos inserta1les a un pro(ecto si
los agrega desde el cuadro de <erramientas.
>ara agregar un control al cuadro de <erramientas de un pro(ecto
1. n el men) >ro(ecto' elija Componentes.
Aparecer8 el cuadro de di8logo Componentes' tal como se muestra
en la fgura !.*. %os elementos mostrados en este cuadro de
di8logo inclu(en todos los controles Acti,eG registrados' o1jetos
inserta1les ( dise-adores Acti,eG.
2. >ara agregar un control 9e4tensin de nom1re de arc<i,o .oc4: o
un o1jeto inserta1le al cuadro de <erramientas' acti,e la casilla de
,erifcacin 6ue <a( a la i26uierda del nom1re del control deseado.
>ara ,er los controles con e4tensiones de arc<i,o .oc4' seleccione
la fc<a Controles. >ara ,er o1jetos inserta1les' como un gr8fco de
;icroso.t 4cel' seleccione la fc<a #1jetos inserta1les.
*. lija Aceptar para cerrar el cuadro de di8logo Componentes. 7odos
los controles Acti,eG 6ue <a(a seleccionado aparecer8n a<ora en
el cuadro de <erramientas.
82

&igura !.* Cuadro de di8logo Componentes
>ara agregar controles Acti,eG al cuadro de di8logo Componentes' elija
el 1otn 4aminar ( 1us6ue en otros directorios arc<i,os con la
e4tensin .oc4. Cuando agregue un control Acti,eG a la lista de controles
disponi1les' Visual Basic acti,ar8 autom8ticamente su casilla de
,erifcacin.
@ota Cada control Acti,eG ,iene acompa-ado de un arc<i,o con
e4tensin .oca. ste arc<i,o almacena in.ormacin de 1i1lioteca de tipos
( otros datos espec?fcos del control. %os arc<i,os .oca se almacenan
<a1itualmente en el mismo directorio 6ue los controles Acti,eG ( se
,uel,en a crear cuando sea necesario 9los tama-os ( las .ec<as de los
arc<i,os pueden cam1iar:.
Fuitar controles de un pro(ecto
>ara 6uitar un control de un pro(ecto
1. n el men) >ro(ecto' elija Componentes.
Aparecer8 el cuadro de di8logo Componentes.
2. Desacti,e la casilla de ,erifcacin 6ue <a( junto al control 6ue
desea 6uitar.
l icono del control desaparecer8 del cuadro de <erramientas.
@ota @o puede 6uitar ning)n control del cuadro de <erramientas si una
instancia de ese control se est8 usando en cual6uier .ormulario del
pro(ecto.
5sar o1jetos de otras aplicaciones
8*

7am1i+n puede usar o1jetos de otras aplicaciones' como los incluidos en
la 1i1lioteca de o1jetos de ;icroso.t 4cel' (a sea como controles del
cuadro de <erramientas o como o1jetos programa1les en el cdigo. >ara
agregar o1jetos al cuadro de <erramientas' ,ea OAgregar controles a un
pro(ectoO.
>ara 6ue los o1jetos de otra aplicacin est+n disponi1les en el cdigo'
pero no como controles' defna una re.erencia a la 1i1lioteca de o1jetos
de esa aplicacin.
>ara agregar una re.erencia a la 1i1lioteca de o1jetos de otra aplicacin
1. n el men) >ro(ecto' elija =e.erencias.
Aparecer8 el cuadro de di8logo =e.erencias' como se muestra en
la fgura !.!.
2. Acti,e la casilla de ,erifcacin correspondiente a la re.erencia 6ue
desea agregar al pro(ecto.
>ara agregar re.erencias a aplicaciones no enumeradas en el
cuadro de di8logo =e.erencias' elija el 1otn 4aminar ( seleccione
la aplicacin.
*. lija Aceptar para agregar al pro(ecto las re.erencias
seleccionadas.
&igura !.! Cuadro de di8logo =e.erencias
8!

$i no ,a a usar ning)n o1jeto de una 1i1lioteca a la 6ue se <ace
re.erencia' es con,eniente desacti,ar la casilla de ,erifcacin de dic<a
re.erencia para reducir al m?nimo el n)mero de re.erencias a o1jetos 6ue
Visual Basic de1e resol,er reduciendo as? el tiempo de compilacin del
pro(ecto.
5na ,e2 6ue <a defnido las re.erencias a las 1i1liotecas de o1jetos 6ue
desea' puede 1uscar un o1jeto espec?fco' junto con sus m+todos (
propiedades' en el 4aminador de o1jetosW para ello' elija 4aminador de
o1jetos en el men) Ver. >uede usar en el cdigo cual6uier o1jeto
enumerado en el 4aminador de o1jetos.
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca del
4aminador de o1jetos' ,ea OBuscar ( e4aminar o1jetosO en O>rogramar
con o1jetosO.
5sar un arc<i,o de recursos
5n arc<i,o de recursos le permite reunir en un )nico lugar todo el te4to
( todos los mapas de 1its espec?fcos de una ,ersin para una
aplicacin. sto puede incluir declaraciones de constantes' iconos' te4to
de pantalla ( otro material 6ue pueda cam1iar entre ,ersiones
traducidas o entre re,isiones o confguraciones espec?fcas.
>ara agregar un arc<i,o a un pro(ecto
1. n el men) >ro(ecto' elija Agregar arc<i,o.
Aparecer8 el cuadro de di8logo Agregar arc<i,o.
2. $eleccione un arc<i,o de recurso e4istente 9.res: ( elija A1rir.
5n pro(ecto slo puede tener un arc<i,o de recursosW si agrega un
segundo arc<i,o con e4tensin .res' se producir8 un error.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
contenido de un arc<i,o de recursos' ,ea OAspectos internacionalesO.
3anual del prograador
Bien,enido al ;anual del programador de Visual Basic
N
' un manual
completo acerca de la programacin con Visual Basic. >ara poner orden
a las numerosas caracter?sticas ( posi1ilidades de Visual Basic' el
;anual del programador est8 di,ido en dos partes.
8/

%a primera parte trata los conceptos 18sicos ( proporciona los
.undamentos para los programadores nue,os en Visual Basic. %a
segunda parte trata conceptos ( t+cnicas de programacin m8s
a,an2ados. %os ap+ndices contienen in.ormacin adicional )til acerca de
cmo de1e usar el producto.
>artes
>rincipios 18sicos de Visual Basic
5na introduccin a la programacin en Visual Basic.
BFu+ permite <acer Visual BasicC
7emas a,an2ados de programacin en Visual Basic.
specifcaciones' limitaciones ( .ormatos de arc<i,o de Visual Basic
Detalles t+cnicos para Visual Basic.
Con,enciones de cdigo de Visual Basic
=ecomendaciones para escri1ir cdigo consistente ( legi1le.
;odifcadores del compilador de cdigo nati,o
Detalles acerca de los modifcadores de la l?nea de comandos para
compilar cdigo nati,o.
Agregar A(uda a su aplicacin
=ecomendaciones para agregar A(uda en pantalla a una aplicacin
de Visual Basic.
&undamentos de programacin
ste cap?tulo presenta los componentes esenciales del lenguaje Visual
Basic. 7ras crear la inter.a2 de la aplicacin mediante .ormularios (
controles' necesitar8 escri1ir el cdigo 6ue defna el comportamiento de
la aplicacin. Como cual6uier lenguaje moderno de programacin' Visual
Basic acepta ciertas construcciones de programacin ( elementos de
lenguaje comunes.
Visual Basic es un lenguaje de programacin 1asado en o1jetos. %a
simple mencin de la pala1ra o1jetos puede pro,ocar e4cesi,a ansiedad
en muc<os programadores. @o se preocupeU 6ui28 sin sa1erlo' <a estado
tra1ajando con o1jetos la ma(or parte de su ,ida. 5na ,e2 6ue <a(a
8"

comprendido algunos conceptos 18sicos' los o1jetos le .acilitar8n la
programacin m8s 6ue nunca.
$i <a programado en otros lenguajes' gran parte del material 6ue se
presenta en este cap?tulo le resultar8 .amiliar. Aun6ue la ma(or?a de las
construcciones son similares a otros lenguajes' la naturale2a orientada a
e,entos de Visual Basic presenta algunas di.erencias sutiles. >rocure
a1ordar este material con la mente a1iertaW una ,e2 6ue <a(a
comprendido las di.erencias podr8 1enefciarse de ellas.
$i programa desde <ace poco' el material de este cap?tulo le ser,ir8 de
introduccin para la construccin de 1lo6ues 18sicos de cdigo. 5na ,e2
6ue comprenda los conceptos 18sicos' ser8 capa2 de crear potentes
aplicaciones con Visual Basic.
7emas
structura de una aplicacin en Visual Basic
Introduccin a los di,ersos componentes o mdulos 6ue componen
una aplicacin de Visual Basic.
Antes de empe2ar a codifcar
Bre,e discusin de algunas consideraciones 6ue se de1en tener en
cuenta al dise-ar una aplicacin.
;ec8nica de la escritura de cdigo
Introduccin a las caracter?sticas del ditor de cdigo' as? como las
reglas ( normas para escri1ir cdigo.
Introduccin a las ,aria1les' constantes ( tipos de datos
Introduccin a los elementos 18sicos del lenguaje Visual Basic.
Introduccin a los procedimientos
Introduccin a los procedimientos $u1 ( &unction.
Introduccin a las estructuras de control
Introduccin a las estructuras de decisin ( 1ucles.
7ra1ajar con o1jetos
Introduccin a la utili2acin de o1jetos en cdigo de Visual Basic.
83

Aplicacin de ejemplo
Vcr.,1p
;uc<os de los ejemplos de cdigo de este cap?tulo se <an tomado
de la aplicacin de ejemplo Vcr.,1p 6ue se encuentra en el
directorio $amples.
structura de una aplicacin en Visual Basic
5na aplicacin no es m8s 6ue un conjunto de instrucciones para 6ue el
e6uipo realice una o ,arias tareas. %a estructura de una aplicacin es la
.orma en 6ue se organi2an las instruccionesW es decir' dnde se
almacenan las instrucciones ( el orden en 6ue se ejecutan.
%as aplicaciones sencillas' como el ejemplo cl8sico O0ola mundoO' tienen
una estructura sencillaW la organi2acin no es mu( importante cuando
slo se tiene una l?nea de cdigo. A medida 6ue las aplicaciones se ,an
<aciendo m8s complejas' resulta o1,ia la necesidad de organi2ar o
estructurar. Imagine el caos resultante si su aplicacin se ejecutara en
un orden aleatorio. Adem8s de controlar la ejecucin de una aplicacin'
la estructura es importante para el programadorU Ble resulta sencillo
encontrar una instruccin determinada en la aplicacinC
>uesto 6ue una aplicacin de Visual Basic se 1asa en o1jetos' la
estructura de su cdigo se apro4ima muc<o a su representacin .?sica en
pantalla. >or defnicin' los o1jetos contienen datos ( cdigo. l
.ormulario 6ue ,e en la pantalla es una representacin de las
propiedades 6ue defnen su apariencia ( su comportamiento intr?nseco.
>or cada .ormulario de una aplicacin <a( un mdulo de (ormulario
relacionado 9con la e4tensin de nom1re de arc<i,o ..rm: 6ue contiene
su cdigo.
&igura /.1 5n .ormulario ( su mdulo de .ormulario relacionado
88

Cada mdulo de .ormulario contiene procedimientos de evento
9secciones de cdigo donde se colocan las instrucciones 6ue se
ejecutar8n como respuesta a e,entos espec?fcos:. %os .ormularios
pueden contener controles. >or cada control de un .ormulario' e4iste el
correspondiente conjunto de procedimientos de e,ento en el mdulo de
.ormulario. Adem8s de procedimientos de e,ento' los mdulos de
.ormulario pueden contener procedimientos generales 6ue se ejecutan
como respuesta a una llamada desde cual6uier procedimiento de
e,ento.
l cdigo 6ue no est+ relacionado con un control o un .ormulario
espec?fco se puede colocar en un tipo di.erente de mdulo' un mdulo
est$ndar 9.1as:. $e de1en colocar en un mdulo est8ndar los
procedimientos 6ue se puedan usar como respuesta a e,entos de
di,ersos o1jetos' en lugar de duplicar el cdigo en los procedimientos de
e,ento de cada o1jeto.
$e utili2a un mdulo de clase 9.cls: para crear o1jetos a los 6ue se puede
llamar desde procedimientos de la aplicacin. ;ientras 6ue un mdulo
est8ndar slo contiene cdigo' un mdulo de clase contiene cdigo (
datos 9puede considerarse como un control sin representacin .?sica:.
;ientras 6ue en OAdministrar pro(ectosO se descri1en los componentes
6ue puede agregar a una aplicacin' este cap?tulo e4plica cmo escri1ir
cdigo en los distintos componentes 6ue con.orman una aplicacin. De
.orma predeterminada' el pro(ecto contiene un )nico mdulo de
.ormulario. >uede agregar mdulos adicionales de .ormulario' clase (
est8ndar' si es necesario. %os mdulos de clase se descri1en en
O>rogramar con o1jetosO.
89

Cmo .unciona una aplicacin controlada por e,entos 5na
e4plicacin del modelo controlado por e,entos.
Antes de empe2ar a codifcar
Fui28 la parte m8s importante 9( a menudo ol,idada: en la creacin de
una aplicacin en Visual Basic es la .ase de dise-o. Aun6ue resulta o1,io
6ue necesita dise-ar una inter.a2 de usuario para la aplicacin' puede
no parecer tan o1,ia la necesidad de dise-ar la estructura del cdigo. %a
.orma en 6ue estructure una aplicacin puede <acer 6ue ,ar?e su
.uncionamiento' as? como el mantenimiento ( la .acilidad de uso del
cdigo.
l cdigo de una aplicacin de Visual Basic est8 organi2ado de .orma
jer8r6uica. 5na aplicacin t?pica est8 compuesta por uno o m8s
mdulosU un mdulo de .ormulario por cada .ormulario de la aplicacin'
mdulos est8ndares opcionales para el cdigo compartido ( mdulos de
clase opcionales. Cada mdulo contiene uno o m8s procedimientos 6ue
contienen cdigoU procedimientos de e,ento' procedimientos $u1 o
&unction ( procedimientos >ropert(.
Determinar 6u+ procedimientos pertenecen a cada mdulo depender8
del tipo de aplicacin 6ue est+ creando. Como Visual Basic est8 1asado
en o1jetos' esto le a(udar8 a pensar en la aplicacin en .uncin de los
o1jetos 6ue representa. l dise-o de la aplicacin de ejemplo de este
cap?tulo' Vcr.,1p' est8 1asado en los o1jetos 6ue contienen un gra1ador
de ,?deo ( un tele,isor. %a aplicacin VC= consta de dos mdulos de
.ormulario' un mdulo est8ndar ( dos mdulos de clase. >uede usar el
4aminador de o1jetos para ,er la estructura del pro(ecto 9fgura /.2:.
&igura /.2 %a estructura del pro(ecto VC= se muestra en el 4aminador
de o1jetos
l .ormulario principal de la aplicacin VC= 9.rmVC=: es una
representacin ,isual de una com1inacin de VC= ( una pantalla de
tele,isin 9fgura /.*:. st8 compuesto de ,arios o1jetos 6ue
90

representan a los 6ue se pueden encontrar en la ,ersin del mundo real.
5n grupo de 1otones de comando 9cmd>la(' cmd=ecord' etc.: simulan
los 1otones utili2ados para usar un ,?deo. l VC= de so.tMare contiene
tam1i+n un reloj 9l1l7ime:' un indicador de canal 9l1lC<annel:'
indicadores de .uncin 9s<p>la(' s<p=ecord' etc.: ( una pantalla de
tele,isin 9pic7V:. %os procedimientos de e,ento de todos estos o1jetos
est8n contenidos en el mdulo de .ormulario Vcr..rm.
&igura /.* l .ormulario principal de la aplicacin VC=
n muc<os casos <a( procedimientos repetiti,os compartidos por ,arios
o1jetos. >or ejemplo' cuando OpresionaO los 1otones =eproducir'
=e1o1inar o Pra1ar' es necesario 6ue est+n acti,ados los 1otones >ausa
( >arar. n lugar de repetir el cdigo en el procedimiento de e,ento ClicS
de cada 1otn' es mejor crear un procedimiento $u1 compartido al 6ue
pueda llamar cada 1otn. $i es necesario modifcar estas rutinas en el
.uturo' puede <acer todas las modifcaciones en un )nico lugar. ste
procedimiento compartido ( otros est8n en el mdulo est8ndar' Vcr.1as.
Algunas partes de un VC= no son ,isi1les' como el mecanismo de
transporte de cinta o la lgica para gra1ar un programa de tele,isin.
Del mismo modo' otras .unciones del VC= de so.tMare no tienen
representacin ,isual. st8n implementadas en dos mdulos de claseU
=ecorder.cls ( 7ape.cls. l cdigo para iniciar el proceso de Ogra1acinO
est8 en el mdulo cls=ecorder' ( el cdigo para controlar la direccin (
,elocidad de la OcintaO est8 en el mdulo cls7ape. %as clases defnidas en
estos mdulos no tienen re.erencias directas a otros o1jetos de los
91

.ormularios. >uesto 6ue son mdulos de cdigo independientes' se
pueden reusar .8cilmente para crear un gra1ador de audio sin
modifcaciones.
Adem8s del dise-o de la estructura del cdigo' es importante esta1lecer
con,enciones de nomenclatura. De .orma predeterminada' Visual Basic
asigna el nom1re &orm1 al primer .ormulario de un pro(ecto' al segundo
&orm2 ( as? sucesi,amente. $i tiene muc<os .ormularios en una
aplicacin' es con,eniente darles nom1res signifcati,os para e,itar
con.usiones cuando escri1a o modif6ue el cdigo. n OCon,enciones de
nomenclatura de Visual BasicO se sugieren algunas con,enciones de
nomenclatura.
$eg)n ,a(a aprendiendo m8s so1re o1jetos ( escritura de cdigo' podr8
consultar en la aplicacin VC= algunos ejemplos de t+cnicas de
codifcacin.
;ec8nica de la escritura de cdigo
Antes de empe2ar' es importante comprender la mec8nica de escritura
de cdigo en Visual Basic. Como cual6uier lenguaje de programacin'
Visual Basic tiene sus propias reglas para organi2ar' modifcar ( dar
.ormato al cdigo.
%os temas siguientes presentan los procedimientos ( mdulos de cdigo'
muestran la utili2acin 18sica del ditor de cdigo ( e4plican las reglas
18sicas para escri1ir cdigo.
;dulos de cdigo Introduccin a los di.erentes tipos de
procedimientos ( mdulos de cdigo 6ue contienen.
5sar el ditor de cdigo Introduccin al tra1ajo con cdigo
mediante el ditor de cdigo.
Conceptos 18sicos del cdigo An8lisis de las reglas del lenguaje
;dulos de cdigo
l cdigo en Visual Basic se almacena en mdulos. 0a( tres tipos de
mdulosU de .ormulario' est8ndar ( de clase.
%as aplicaciones sencillas pueden consistir en un )nico .ormulario ( todo
el cdigo de la aplicacin reside en ese mdulo de .ormulario. A medida
6ue sus aplicaciones ,a(an creciendo ( siendo m8s sofsticadas'
agregar8 .ormularios adicionales. A ,eces tendr8 cdigo com)n 6ue
desear8 ejecutar en ,arios .ormularios. @o 6uerr8 duplicar el cdigo en
92

am1os .ormularios' por lo 6ue crear8 un mdulo independiente 6ue
contenga un procedimiento 6ue ejecuta el cdigo com)n. ste mdulo
independiente de1e ser un mdulo est8ndar. Con el tiempo' puede
construir una 1i1lioteca de mdulos 6ue contenga los procedimientos
compartidos.
Cada mdulo est8ndar' de clase ( de .ormulario puede contener lo
siguienteU
Declaraciones. >uede colocar declaraciones de constantes' tipos'
,aria1les ( procedimientos de 1i1liotecas de ,?nculos din8micos
9D%%: al ni,el de mdulo de .ormulario' de clase o est8ndar.
>rocedimientos. 5n procedimiento $u1' &unction o >ropert(
contiene partes de cdigo 6ue se pueden ejecutar como una
unidad. $e descri1en en la seccin OIntroduccin a los
procedimientosO' m8s adelante en este mismo cap?tulo.
;dulos de .ormulario
%os mdulos de .ormulario 9e4tensin de nom1re de arc<i,o ..rm: son la
1ase de la ma(or?a de las aplicaciones de Visual Basic. >ueden contener
procedimientos 6ue controlen e,entos' procedimientos generales (
declaraciones a ni,el de .ormulario de ,aria1les' constantes' tipos (
procedimientos e4ternos. $i e4amina un mdulo de .ormulario con un
editor de te4tos' podr8 ,er las descripciones del .ormulario ( sus
controles' as? como los ,alores de sus propiedades. l cdigo 6ue se
escri1e en un mdulo de .ormulario es espec?fco de la aplicacin a la
6ue pertenece el .ormulario ( puede <acer re.erencia a otros .ormularios
u o1jetos de la aplicacin.
;dulos est8ndar
%os mdulos est8ndar 9e4tensin de nom1re de arc<i,o .1as: son
contenedores de los procedimientos ( declaraciones a los 6ue tienen
acceso otros mdulos de la aplicacin. >ueden contener declaraciones
glo1ales 9disponi1les para toda la aplicacin: o a ni,el de mdulo de
,aria1les' constantes' tipos' procedimientos e4ternos ( procedimientos
glo1ales. l cdigo 6ue se escri1e en un mdulo est8ndar no est8 ligado
necesariamente a una aplicacin determinadaW si tiene cuidado de no
<acer re.erencia a controles o .ormularios por su nom1re' puede reusar
un mdulo est8ndar en distintas aplicaciones.
9*

;dulos de clase
%os mdulos de clase 9e4tensin de nom1re de arc<i,o .cls: son la 1ase
de la programacin orientada a o1jetos en Visual Basic. >uede escri1ir
cdigo en mdulos de clase para crear nue,os o1jetos. stos o1jetos
nue,os pueden incluir propiedades ( m+todos personali2ados. n
realidad' los .ormularios slo son mdulos de clase 6ue pueden tener
controles ( 6ue pueden mostrar ,entanas de .ormulario.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
la escritura de cdigo en mdulos de clases' ,ea O>rogramar con
o1jetosO.
@ota %as ediciones >ro.esional ( mpresarial de Visual Basic inclu(en
tam1i+n documentos Acti,eG' dise-adores de Acti,eG ( controles de
usuario. stos introducen nue,os tipos de mdulos con di.erentes
e4tensiones de nom1re de arc<i,o. Desde el punto de ,ista de la
escritura de cdigo' estos mdulos de1en considerarse igual 6ue los
mdulos de .ormulario.
5sar el ditor de cdigo
l ditor de cdigo de Visual Basic es una ,entana donde se escri1e la
ma(or parte del cdigo. s como un procesador de te4tos mu(
especiali2ado con cierto n)mero de caracter?sticas 6ue .acilita en gran
medida la escritura de cdigo en Visual Basic. %a ,entana del ditor de
cdigo se muestra en la fgura /.!.
Como tra1aja con el cdigo de Visual Basic en mdulos' se a1re una
,entana distinta del ditor de cdigo por cada mdulo 6ue seleccione en
el 4plorador de pro(ectos. l cdigo de cada mdulo est8 su1di,idido
en distintas secciones para cada o1jeto del mdulo. >ara pasar de una
seccin a otra se utili2a el cuadro de lista #1jeto. n un mdulo de
.ormulario' la lista inclu(e una seccin general' una seccin para el
.ormulario propiamente dic<o ( una seccin para cada control del
.ormulario. >ara un mdulo de clase' la lista inclu(e una seccin general
( una seccin de claseW para un mdulo est8ndar slo se muestra una
seccin general.
Cada seccin de cdigo puede contener ,arios procedimientos distintos'
a los 6ue se tiene acceso mediante el cuadro de lista >rocedimiento. %a
lista de procedimientos de un mdulo de .ormulario contiene una
seccin distinta para cada procedimiento de e,ento del .ormulario o el
control. >or ejemplo' la lista de procedimientos de un control %a1el
inclu(e secciones para los e,entos C<ange' ClicS ( D1lClicS' entre otros.
%os mdulos de clase slo muestran los procedimientos de e,ento para
9!

la propia clase 9Initiali2e ( 7erminate:. %os mdulos est8ndar no
muestran ning)n procedimiento de e,ento' (a 6ue un mdulo est8ndar
no acepta e,entos.
%a lista de procedimientos de la seccin general de un mdulo contiene
una )nica seleccin' la seccin de declaraciones' donde se colocan las
declaraciones a ni,el de mdulo de ,aria1les' constantes ( D%%. $eg)n
,a(a agregando procedimientos $u1 o &unction a un mdulo' dic<os
procedimientos se agregan al cuadro de lista >rocedimiento 1ajo la
seccin de declaraciones.
n la ,entana del ditor de cdigo <a( disponi1les dos ,istas distintas
del cdigo. >uede elegir ,er un )nico procedimiento cada ,e2 o ,er
todos los procedimientos del mdulo' estando cada procedimiento
separado del siguiente mediante una l?nea 9como se muestra en la
fgura /.!:. >ara cam1iar entre las dos ,istas' utilice los 1otones Ver
seleccin de la es6uina in.erior i26uierda de la ,entana del editor.
7erminar el cdigo de .orma autom8tica
Visual Basic <ace 6ue la escritura de cdigo sea muc<o m8s sencilla
mediante caracter?sticas 6ue llenan autom8ticamente instrucciones'
propiedades ( argumentos. A medida 6ue ,a introduciendo cdigo' el
editor muestra listas de elecciones adecuadas' prototipos de
instrucciones o .unciones' o ,alores. 0a( opciones para acti,ar o
desacti,ar estas ( otras confguraciones de cdigo en la fc<a ditor del
cuadro de di8logo #pciones' al 6ue se tiene acceso a tra,+s del
comando #pciones del men) 0erramientas.
Cuando especifca el nom1re de un control en el cdigo' la caracter?stica
%ista de miem1ros autom8tica presenta una lista desplega1le con las
propiedades disponi1les para ese control 9fgura /./:. scri1a las
primeras letras del nom1re de la propiedad ( se seleccionar8 en la listaW
la tecla 7AB completar8 la escritura. sta opcin resulta tam1i+n mu(
)til cuando no sepa con seguridad 6u+ propiedades <a( disponi1les para
un determinado control. Incluso aun6ue <a(a elegido desacti,ar la
caracter?stica %ista de miem1ros autom8tica' podr8 tener acceso a esta
caracter?stica mediante la com1inacin de teclas CtrlQf.
%a caracter?stica In.ormacin r8pida autom8tica muestra la sinta4is de
las instrucciones ( .unciones 9fgura /.":. Cuando escri1a el nom1re de
una instruccin o .uncin ,8lida de Visual Basic se mostrar8 la sinta4is
inmediatamente de1ajo de la l?nea actual' con el primer argumento en
negrita. 5na ,e2 6ue <a(a escrito el ,alor del primer argumento' se
mostrar8 en negrita el segundo argumento. 7am1i+n se puede tener
9/

acceso a In.ormacin r8pida autom8tica con la com1inacin de teclas
CtrlQI.
;arcadores
>uede usar marcadores para marcar l?neas de cdigo en el editor de
cdigo para 6ue pueda ,ol,er m8s tarde a ellas. %o comandos para
alternar marcadores ( para despla2arse por los marcadores e4istentes
est8n disponi1les en el men) dicin' elemento del men) ;arcadores' o
en la 1arra de <erramientas dicin.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
las com1inaciones de teclas para tener acceso a +stas ( otras .unciones
en la ,entana del ditor de cdigo' ,ea OCrear m+todos a1re,iados de
tecladoO en el cap?tulo 3.
Conceptos 18sicos del cdigo
sta seccin presenta in.ormacin acerca de la mec8nica de escritura de
cdigo' inclu(endo di,idir ( com1inar l?neas de cdigo' agregar
comentarios al cdigo' usar n)meros en el cdigo ( seguir las
con,enciones de nomenclatura en Visual Basic.
Di,idir una )nica instruccin en ,arias l?neas
>uede di,idir una instruccin larga en ,arias l?neas en la ,entana del
ditor de cdigo si utili2a el car$cter de continuacin de l#nea 9un
espacio en 1lanco seguido de un signo de su1ra(ado:. %a utili2acin de
este car8cter puede <acer 6ue sea m8s .8cil leer el cdigo' tanto en la
pantalla como impreso en papel. l cdigo siguiente se <a di,idido en
tres l?neas mediante caracteres de continuacin de l?nea 9 _:U
Data1.=ecord$ource ` _
O$%C7 g &=#; 7itles' >u1lis<ersO _
D OH0= >u1lis<ers.>u1Id ` 7itles.>u1ID _
D OA@D >u1lis<ers.$tate ` aCAaO
@o puede poner un comentario despu+s de un car8cter de continuacin
de l?nea en la misma l?nea. 7am1i+n <a( algunas limitaciones so1re
dnde se puede usar el car8cter de continuacin de l?nea.
Com1inar instrucciones en una l?nea
@ormalmente <a( una instruccin de Visual Basic por l?nea ( no <a(
ning)n terminador de instruccin. $in em1argo' puede colocar dos o
9"

m8s instrucciones en una l?nea si utili2a un signo de dos puntos 9U: para
separarlasU
7e4t1.7e4t ` O0olaO U =ed ` 2// U 7e4t1.BacSColor ` _
=ed
$in em1argo' para <acer el cdigo m8s legi1le' es mejor colocar cada
instruccin en una l?nea distinta.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin' ,ea
Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO.
Agregar comentarios al cdigo
$eg)n ,a(a le(endo los ejemplos de esta gu?a' a menudo ,er8 el
s?m1olo de comentario 9a:. ste s?m1olo indica a Visual Basic 6ue pase
por alto las pala1ras 6ue ,an a continuacin de +l. stas pala1ras son
comentarios situados en el cdigo para el desarrollador ( otros
programadores 6ue ,a(an a e4aminar despu+s el cdigo. >or ejemploU
a ste comentario comien2a en el 1orde i26uierdo de
a la pantalla.
7e4t1.7e4t ` O0olaO a >one un saludo amistoso
a en el cuadro de te4to.
%os comentarios pueden seguir a una instruccin en la misma l?nea o
pueden ocupar una l?nea completa. Am1os se ilustran en el cdigo
anterior. =ecuerde 6ue los comentarios no pueden ir detr8s de un
car8cter de continuacin de l?nea en la misma l?nea.
@ota >uede agregar o eliminar s?m1olos 6ue indican comentarios en un
1lo6ue de cdigo seleccionando dos o m8s l?neas de cdigo (
seleccionando los 1otones Blo6ue con comentarios o Blo6ue sin
comentarios en la 1arra de <erramientas dicin.
Descripcin de los sistemas de numeracin
%a ma(or?a de los n)meros de este documento son decimales 91ase 10:.
>ero en ocasiones es con,eniente usar n)meros <e4adecimales 91ase
1": o n)meros octales 91ase 8:. Visual Basic representa los n)meros
<e4adecimales con el prefjo D0 ( los octales con D#. %a ta1la siguiente
muestra los mismos n)meros en .ormato decimal' octal ( <e4adecimal.
Decimal #ctal 0e4adeci
93

mal
9 D#11 D09
1/ D#13 D0&
1" D#20 D010
20 D#2! D01!
2// D#*33 D0&&
@ormalmente no tendr8 6ue aprender los sistemas <e4adecimales u
octal (a 6ue el e6uipo puede tra1ajar con n)meros en cual6uier sistema.
$in em1argo' algunos sistemas de numeracin se prestan a
determinadas tareas' como la utili2acin de n)meros <e4adecimales
para confgurar los colores de la pantalla ( los controles.
Con,enciones de nomenclatura en Visual Basic
Cuando escri1e cdigo en Visual Basic' declara ( asigna nom1re a
muc<os elementos 9procedimientos $u1 ( &unction' ,aria1les'
constantes' etc.:. %os nom1res de procedimientos' ,aria1les (
constantes 6ue declara en el cdigo de Visual Basic de1en seguir estas
directricesU
De1en comen2ar por una letra.
@o pueden contener puntos o caracteres de declaracin de tipos
9caracteres especiales 6ue especifcan tipos de datos.
@o pueden superar los 2// caracteres. %os nom1res de controles'
.ormularios' clases ( mdulos no de1en e4ceder los !0 caracteres.
@o pueden ser iguales 6ue las pala1ras cla,e restringidas.
5na palabra clave restringida es una pala1ra 6ue Visual Basic utili2a
como parte de su lenguaje. sto inclu(e a las instrucciones predefnidas
9como I. ( %oop:' .unciones 9como %en ( A1s: ( operadores 9como #r (
;od:.
98

>ara o1tener m8s in.ormacin >ara ,er la lista completa de pala1ras
cla,e' ,ea la )e(erencia del lenguaje.
%os .ormularios ( controles pueden tener el mismo nom1re 6ue una
pala1ra cla,e restringida. >or ejemplo' puede tener un control 6ue se
llame %oop. $in em1argo' en el cdigo no puede <acer re.erencia a ese
control de la .orma <a1itual' (a 6ue Visual Basic supone 6ue se est8
refriendo a la pala1ra cla,e %oop. >or ejemplo' este cdigo pro,oca un
errorU
%oop.Visi1le ` 7rue a >ro,oca un error.
>ara re.erirse a un .ormulario o un control 6ue tenga el mismo nom1re
6ue una pala1ra cla,e restringida' de1e califcarlo o ponerlo entre
corc<etesU J L. >or ejemplo' este cdigo no pro,oca un errorU
;i&orm.%oop.Visi1le ` 7rue a Califcado con el nom1re del
a .ormulario.
J%oopL.Visi1le ` 7rue a Con corc<etes tam1i+n .unciona.
>uede usar corc<etes de esta .orma cuando <aga re.erencia a
.ormularios ( controles' pero no cuando declare una ,aria1le o defna un
procedimiento con el mismo nom1re 6ue una pala1ra cla,e restringida.
7am1i+n se pueden usar corc<etes para 6ue Visual Basic acepte
nom1res de otras 1i1liotecas de tipos 6ue entren en conZicto con
pala1ras cla,e restringidas.
@ota >uesto 6ue escri1ir corc<etes puede resultar tedioso' e,ite la
utili2acin de pala1ras cla,e restringidas en los nom1res de .ormularios
( controles. $in em1argo' puede usar esta t+cnica si una ,ersin
posterior de Visual Basic defne una pala1ra cla,e nue,a 6ue entre en
conZicto con un nom1re de .ormulario o control e4istente ( est+
actuali2ando el cdigo para 6ue .uncione con la ,ersin nue,a.
&unciones de con,ersin de tipos
Cada .uncin con,ierte una e4presin a un tipo de datos espec?fco.
$inta4is
CBool9e%presin:
CB(te9e%presin:
CCur9e%presin:
CDate9e%presin:
99

CD1l9e%presin:
CDec9e%presin:
CInt9e%presin:
C%ng9e%presin:
C$ng9e%presin:
C$tr9e%presin:
CVar9e%presin:
l argumento o1ligatorio e%presin es cual6uier e4presin de cadena o
e4presin num+rica.
7ipos de,ueltos
l nom1re de la .uncin determina el tipo de,uelto' como se muestra a
continuacinU
&uncin 7ipo de,uelto Inter,alo del argumento
e%presin
C1ool Boolean Cual6uier e4presin de cadena o
num+rica ,8lida.
C1(te B(te 0 a 2//.
Ccur Currenc( Q922.**3.20*."8/.!33'/808 a
922.**3.20*."8/.!33'/803.
Cdate Date Cual6uier e4presin de .ec<a.
CD1l Dou1le Q1'393"9*1*!8"2*2*08 a
Q!'9!0"/"!/8!12!3Q*2! para
,alores negati,osW
!'9!0"/"!/8!12!3Q*2! a
1'393"9*1*!8"2*2*08 para
,alores positi,os.
100

Cdec Decimal EVQ
39.228.1"2./1!.2"!.**3./9*./!*.
9/0.**/ para n)meros 1asados
en cero' es decir' n)meros sin
decimales. >ara n)meros con 28
decimales' el inter,alo es
EVQ
3'92281"2/1!2"!**3/9*/!*9/0
**/. %a menor posicin para un
n)mero 6ue no sea cero es
0'0000000000000000000000000
001.
Cint Integer Q*2.3"8 a *2.3"3W las .racciones
se redondean.
C%ng %ong Q2.1!3.!8*."!8 a 2.1!3.!8*."!3W
las .racciones se redondean.
C$ng $ingle Q*'!0282**8 a Q1'!01298Q!/
para ,alores negati,osW
1'!01298Q!/ a *'!0282**8
para ,alores positi,os.
C$tr $tring l mismo inter,alo 6ue Dou1le
para ,alores num+ricos. l mismo
inter,alo 6ue $tring para ,alores
no num+ricos.
C,ar Variant l ,alor de retorno de C$tr
depende del argumento
e%presin.
Comentarios
$i la e4presin del argumento e%presin 6ue se pasa a la .uncin est8
.uera del inter,alo del tipo de dato al 6ue se ,a a con,ertir' se produce
un error.
101

n general' el cdigo se puede documentar utili2ando las .unciones de
con,ersin de tipos de datos para indicar 6ue el resultado de alguna de
las operaciones se de1er?a e4presar como un tipo de datos en particular'
no como el tipo de datos predeterminado. >or ejemplo' utilice Ccur para
.or2ar la ejecucin de operaciones con aritm+tica monetaria en los casos
en los 6ue se <ar?a con precisin simple' do1le precisin o aritm+tica
entera.
De1e utili2ar .unciones de con,ersin de tipos en lugar de Val para
proporcionar con,ersiones 6ue recono2can las ,ariantes internacionales.
>or ejemplo' cuando utili2a CCur' se reconocen di.erentes separadores
decimales' di.erentes separadores de millares ( ,arias opciones
monetarias dependiendo de la confguracin regional esta1lecida en su
e6uipo.
Cuando la parte .raccionaria es e4actamente 0'/' CInt ( C%ng siempre
redondean al n)mero par m8s cercano. >or ejemplo' 0'/ redondea a 0' (
1'/ redondea a 2. CInt ( C%ng se di.erencian de las .unciones &i4 ( Int en
6ue truncan' en lugar de redondear' la parte .raccionaria de un n)mero.
Adem8s' &i4 ( Int siempre de,uel,en un ,alor del mismo tipo del 6ue se
le pasa.
5tilice la .uncin IsDate para determinar si se puede con,ertir date a
una .ec<a o una <ora. CDate reconoce literales de .ec<a ( literales de
<ora adem8s de n)meros comprendidos dentro del inter,alo de .ec<as
acepta1les. Al con,ertir un n)mero a una .ec<a' la parte num+rica
entera se con,ierte a una .ec<a. Cual6uier parte .raccionaria del n)mero
se con,ierte a la <ora del d?a' comen2ando a medianoc<e.
CDate reconoce .ormatos de .ec<a 6ue se ajusten a la confguracin
regional de su sistema. s posi1le 6ue no se determine el orden correcto
del d?a' mes ( a-o si se proporciona en un .ormato di.erente del 6ue
reconoce la confguracin de .ec<a. Adem8s' no se puede reconocer un
.ormato de .ec<a largo si contiene la cadena del d?a de la semana.
$e proporciona una .uncin CVDate por compati1ilidad con ,ersiones
anteriores de Visual Basic. %a sinta4is de la .uncin CVDate es id+ntica a
la de la .uncin CDateW sin em1argo' CVDate de,uel,e un Variant de
su1tipo Date en lugar del tipo Date real. >uesto 6ue a<ora <a( un tipo de
dato intr?nseco Date' no es necesario CVDate. $e puede o1ser,ar el
mismo e.ecto al con,ertir una e4presin a Date ( asignarla despu+s a un
Variant. sta t+cnica es co<erente con la con,ersin de todos los dem8s
tipos intr?nsecos a sus e6ui,alentes su1tipos Variant.
@ota %a .uncin CDec no de,uel,e un tipo de dato discretoW en su lugar'
siempre de,uel,e un Variant con los ,alores con,ertidos a un su1tipo
Decimal.
102

Introduccin a las ,aria1les' constantes ( tipos de datos
A menudo necesitar8 almacenar ,alores temporalmente cuando est+
reali2ando c8lculos con Visual Basic. >or ejemplo' puede 6ue desee
calcular di,ersos ,alores' compararlos ( reali2ar distintas operaciones
con ellos' dependiendo de los resultados de la comparacin. @ecesitar8
conser,ar los ,alores si desea compararlos' pero no necesitar8
almacenarlos en una propiedad.
Visual Basic' como la ma(or?a de los lenguajes de programacin' utili2a
variables para almacenar ,alores. %as ,aria1les tienen un nom1re 9la
pala1ra 6ue utili2a para re.erirse al ,alor 6ue contiene la ,aria1le: ( un
tipo de dato 96ue determina la clase de datos 6ue puede almacenar la
,aria1le:. $e pueden usar matrices para almacenar colecciones
inde4adas de ,aria1les relacionadas.
*as constantes tam1i+n almacenan ,alores pero' como su nom1re
indica' estos ,alores permanecen constantes durante la ejecucin de la
aplicacin. %a utili2acin de constantes puede <acer m8s legi1le el
cdigo (a 6ue proporciona nom1res signifcati,os en ,e2 de n)meros.
Visual Basic incorpora una serie de constantes' pero puede crear sus
propias constantes.
*os tipos de datos controlan el almacenamiento interno de datos en
Visual Basic. De .orma predeterminada' Visual Basic utili2a el tipo de
dato Variant. 0a( otros tipos de datos disponi1les 6ue le permiten
optimi2ar el cdigo en cuanto a ,elocidad ( tama-o cuando no necesite
la Ze4i1ilidad 6ue proporciona el tipo Variant.
>ara o1tener in.ormacin m8s detallada' ,eaU
Varia1les Introduccin a las ,aria1lesU 6u+ son ( cmo usarlas.
Descripcin del alcance de las ,aria1les An8lisis de cmo se
aplica el alcance a las ,aria1les.
7emas a,an2ados so1re ,aria1les In.ormacin detallada so1re las
,aria1les.
Varia1les est8ticas Introduccin a la utili2acin de ,aria1les
est8ticas para preser,ar ,alores.
Constantes Introduccin a la utili2acin de constantes para
representar ,alores.
7ipos de datos An8lisis de los tipos de datos disponi1les en Visual
Basic.
10*

7emas a,an2ados so1re el tipo de dato Variant In.ormacin
detallada so1re el tipo de dato Variant.
;atrices Introduccin a la utili2acin de matrices para grupos de
,alores.
;atrices din8micas An8lisis so1re la utili2acin de matrices
din8micas para tra1ajar con grupos de ,alores
Varia1les
n Visual Basic puede usar ,aria1les para almacenar ,alores
temporalmente durante la ejecucin de una aplicacin. %as ,aria1les
tienen un nom1re 9la pala1ra 6ue utili2a para re.erirse al ,alor 6ue
contiene la ,aria1le: ( un tipo de dato 96ue determina la clase de datos
6ue la ,aria1le puede almacenar:.
>uede considerar una ,aria1le como un marcador de posicin en
memoria de un ,alor desconocido. >or ejemplo' suponga 6ue est8
creando un programa para una .ruter?a 6ue <aga un seguimiento del
precio de las man2anas. @o sa1e el precio de una man2ana o la cantidad
6ue se <a ,endido <asta 6ue no se produce realmente la ,enta. >uede
usar dos ,aria1les para almacenar los ,alores desconocidos 9,amos a
llamarlos >recio;an2anas ( ;an2anasVendidas:. Cada ,e2 6ue se
ejecuta el programa' el usuario especifca los ,alores de las dos
,aria1les. >ara calcular las ,entas totales ( mostrarlas en un cuadro de
te4to llamado t4tVentas' el cdigo de1er?a parecerse al siguienteU
t4tVentas.t4t ` >recio;an2anas g ;an2anasVendidas
%a e4presin de,uel,e un total distinto cada ,e2' dependiendo de los
,alores 6ue indi6ue el usuario. %as ,aria1les le permiten reali2ar un
c8lculo sin tener 6ue sa1er antes cu8les son los ,alores especifcados.
n este ejemplo' el tipo de dato de >recio;an2anas es Currenc(W el tipo
de dato de ;an2anasVendidas es Integer. %as ,aria1les pueden
representar otros muc<os ,alores como ,alores de te4to' .ec<as'
di,ersos tipos num+ricos e incluso o1jetos.
Almacenar ( recuperar datos en ,aria1les
5tilice instrucciones de asignacin para reali2ar c8lculos ( asignar el
resultado a una ,aria1leU
;an2anasVendidas ` 10 a $e pasa el ,alor 10 a
a la ,aria1le.
10!

;an2anasVendidas ` ;an2anasVendidas E 1 a $e incrementa la
,aria1le.
#1ser,e 6ue el signo igual del ejemplo es un operador de asignacin' no
un operador de igualdadW el ,alor 910: se asigna a la ,aria1le
9;an2anasVendidas:.
Declarar ,aria1les
Declarar una ,aria1le es decirle al programa algo de antemano. $e
declara una ,aria1le mediante la instruccin Dim' proporcionando un
nom1re a la ,aria1leU
Dim nombre+ariable JAs tipoL
%as ,aria1les 6ue se declaran en un procedimiento mediante la
instruccin Dim slo e4isten mientras se ejecuta el procedimiento.
Cuando termina el procedimiento' desaparece el ,alor de la ,aria1le.
Adem8s' el ,alor de una ,aria1le de un procedimiento es local de dic<o
procedimientoW es decir' no puede tener acceso a una ,aria1le de un
procedimiento desde otro procedimiento. stas caracter?sticas le
permiten usar los mismos nom1res de ,aria1les en distintos
procedimientos sin preocuparse por posi1les conZictos o modifcaciones
accidentales.
l nom1re de una ,aria1leU
De1e comen2ar con una letra.
@o puede incluir un punto o un car8cter de declaracin de tipo.
@o de1e e4ceder de 2// caracteres.
De1e ser )nica en el mismo alcance' 6ue es el inter,alo desde el
6ue se puede <acer re.erencia a la ,aria1leU un procedimiento'
.ormulario' etc.
%a cl8usula opcional As tipo de la instruccin Dim le permite defnir el
tipo de dato o de o1jeto de la ,aria1le 6ue ,a a declarar. %os tipos de
datos defnen el tipo de in.ormacin 6ue almacena la ,aria1le. Algunos
ejemplos de tipos de datos son $tring' Integer ( Currenc(. %as ,aria1les
tam1i+n pueden contener o1jetos de Visual Basic u otras aplicaciones.
Algunos ejemplos de tipos de o1jeto de Visual Basic' o clases' son
#1ject' &orm1 ( 7e4tBo4.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
los o1jetos' ,ea O>rogramar con o1jetosO ( O>rogramar con
10/

componentesO. %os tipos de datos se e4plican con m8s detalle en O7ipos
de datosO' m8s adelante en este mismo cap?tulo.
0a( otras .ormas de declarar ,aria1lesU
Declarar una ,aria1le en la seccin Declaraciones de un mdulo
de .ormulario' est8ndar o de clase' en ,e2 de en un procedimiento'
<ace 6ue la ,aria1le est+ disponi1le para todos los procedimientos
del mdulo.
Declarar una ,aria1le mediante la pala1ra cla,e >u1lic <ace 6ue
est+ accesi1le para toda la aplicacin.
Declarar una ,aria1le local mediante la pala1ra cla,e $tatic
preser,a su ,alor aun6ue termine el procedimiento.
Declaracin impl?cita
@o tiene por 6u+ declarar una ,aria1le antes de usarla. >or ejemplo'
podr?a escri1ir una .uncin donde no <iciera .alta declarar 7empVal antes
de usarlaU
&unction $a.e$6r9num:
7empVal ` A1s9num:
$a.e$6r ` $6r97empVal:
nd &unction
Visual Basic crea autom8ticamente una ,aria1le con ese nom1re' 6ue
puede usar como si la <u1iera declarado e4pl?citamente. Aun6ue es
cmodo' puede pro,ocar errores sutiles en el cdigo si se e6ui,oca de
nom1re de ,aria1le. >or ejemplo' suponga 6ue <a escrito esta .uncinU
&unction $a.e$6r9num:
7empVal ` A1s9num:
$a.e$6r ` $6r97emVal:
nd &unction
A primera ,ista' parece igual. >ero como se <a escrito errneamente la
,aria1le 7empVal en la tercera l?nea' la .uncin de,ol,er8 siempre cero.
Cuando Visual Basic encuentra un nom1re nue,o' no puede a,eriguar si
realmente desea declarar una ,aria1le nue,a o simplemente <a escrito
de .orma errnea una ,aria1le e4istente' por lo 6ue crea una ,aria1le
nue,a con ese nom1re.
10"

Declaracin e4pl?cita
>ara e,itar pro1lemas al e6ui,ocarse de nom1re en las ,aria1les' puede
estipular 6ue Visual Basic le a,ise siempre 6ue encuentre un nom1re
6ue no se <a(a declarado e4pl?citamente como una ,aria1le.
>ara declarar ,aria1les de .orma e4pl?cita
Inclu(a esta instruccin en la seccin Declaraciones del mdulo de
clase' de .ormulario o est8ndarU
#ption 4plicit
Yo 1ienY
n el men) 0erramientas' elija #pciones' <aga clic en la fc<a
ditor ( acti,e la opcin =e6uerir declaracin de ,aria1les. sto
inserta autom8ticamente la instruccin #ption 4plicit en los
mdulos nue,os' pero no en los (a creados' por lo 6ue tendr8 6ue
agregar manualmente #ption 4plicit a los mdulos e4istentes en
el pro(ecto.
$i <u1iera tenido e.ecto dic<a instruccin en el mdulo de .ormulario o
est8ndar 6ue contiene la .uncin $a.e$6r' Visual Basic <a1r?a reconocido
7empVal ( 7emVal como ,aria1les no declaradas ( <a1r?a generado
errores para am1as. De1er?a' por tanto' declarar e4pl?citamente
7empValU
&unction $a.e$6r9num:
Dim 7empVal
7empVal ` A1s9num:
$a.e$6r ` $6r97emVal:
nd &unction
A<ora podr8 comprender el pro1lema inmediatamente por6ue Visual
Basic <a1r8 mostrado un mensaje de error para la ,aria1le 7emVal 6ue
se <a escrito de .orma incorrecta. Como la instruccin #ption 4plicit le
a(uda a interceptar esta clase de errores' es con,eniente usarla en todo
el cdigo.
@ota %a instruccin #ption 4plicit .unciona so1re mdulo a mduloW
de1e colocarse en la seccin Declaraciones de todos los mdulos de
.ormulario' est8ndar o de clase en los 6ue desee 6ue Visual Basic
o1ligue a declarar e4pl?citamente las ,aria1les. $i acti,a =e6uerir
declaracin de ,aria1les' Visual Basic insertar8 #ption 4plicit en todos
los mdulos de .ormulario' est8ndares o de clase siguientes' pero no lo
103

agregar8 en el cdigo e4istente. De1er8 agregar manualmente #ption
4plicit a los mdulos (a e4istentes en el pro(ecto.
Descripcin del alcance de las ,aria1les
l alcance de una ,aria1le defne 6u+ partes del cdigo son conscientes
de su e4istencia. Cuando declara una ,aria1le en un procedimiento' slo
el cdigo de dic<o procedimiento puede tener acceso o modifcar el
,alor de la ,aria1leW tiene un alcance 6ue es local al procedimiento. A
,eces' sin em1argo' se necesita usar una ,aria1le con un alcance m8s
general' como a6uella cu(o ,alor est8 disponi1le para todos los
procedimientos del mismo mdulo o incluso para todos los
procedimientos de toda la aplicacin. Visual Basic le permite especifcar
el alcance de una ,aria1le cuando la declara.
sta1lecer el alcance de las ,aria1les
Dependiendo de cmo se declara' una ,aria1le tiene como alcance un
procedimiento 9local: o un mdulo.
Alcance >ri,ado >)1lico
@i,el de
procedimiento
%as ,aria1les son pri,adas
del procedimiento en el 6ue
aparecen.
@o es aplica1le. @o puede
declarar ,aria1les
p)1licas dentro de un
procedimiento.
@i,el de mdulo %as ,aria1les son pri,adas
del mdulo en el 6ue
aparecen.
%as ,aria1les est8n
disponi1les para todos los
mdulos.
Varia1les utili2adas en un procedimiento
%as ,aria1les a ni,el de procedimiento slo se reconocen en el
procedimiento en el 6ue se <an declarado. $e las conoce tam1i+n como
,aria1les locales. $e declaran mediante las pala1ras cla,e Dim o $tatic.
>or ejemploU
Dim int7emp As Integer
Yo 1ienY
108

$tatic int>ermanent As Integer
%os ,alores de ,aria1les locales declaradas con $tatic e4isten mientras
se ejecuta la aplicacin' mientras 6ue las ,aria1les declaradas con Dim
slo e4isten mientras se ejecuta el procedimiento.
%as ,aria1les locales resultan una eleccin apropiada para c8lculos
temporales. >or ejemplo' puede crear una docena de procedimientos
distintos 6ue contengan una ,aria1le llamada int7emp. Como cada
int7emp se <a declarado como una ,aria1le local' cada procedimiento
slo reconoce su propia ,ersin de int7emp. Cual6uier procedimiento
puede alterar el ,alor de su int7emp local sin 6ue ello a.ecte a las
,aria1les int7emp de los dem8s procedimientos.
Varia1les utili2adas en un mdulo
De .orma predeterminada' una ,aria1le a ni,el de mdulo est8
disponi1le para todos los procedimientos del mdulo' pero no para el
cdigo de otros mdulos. Cree ,aria1les a ni,el de mdulo declar8ndolas
con la pala1ra cla,e >ri,ate en la seccin Declaraciones al principio del
mdulo. >or ejemploU
>ri,ate int7emp As Integer
A ni,el de mdulo' no <a( di.erencia entre >ri,ate ( Dim' pero es
pre.eri1le >ri,ate por6ue contrasta con >u1lic ( <ace 6ue el cdigo sea
m8s .8cil de comprender.
Varia1les utili2adas por todos los mdulos
>ara <acer 6ue una ,aria1le a ni,el de mdulo est+ disponi1le para otros
mdulos' utilice la pala1ra cla,e >u1lic para declarar la ,aria1le. %os
,alores de las ,aria1les p)1licas est8n disponi1les para todos los
procedimientos de la aplicacin. Al igual 6ue todas las ,aria1les a ni,el
de mdulo' las ,aria1les p)1licas se declaran en la seccin
Declaraciones al principio del mdulo. >or ejemploU
>u1lic int7emp As Integer
@ota @o puede declarar ,aria1les p)1licas en un procedimiento' slo en
la seccin Declaraciones de un mdulo.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
las ,aria1les' ,ea O7emas a,an2ados so1re ,aria1lesO en este cap?tulo.
Constantes
109

A menudo ,er8 6ue el cdigo contiene ,alores constantes 6ue
reaparecen una ( otra ,e2. # puede 6ue el cdigo dependa de ciertos
n)meros 6ue resulten di.?ciles de recordar 9n)meros 6ue' por s? mismos'
no tienen un signifcado o1,io:.
n estos casos' puede mejorar muc<o la legi1ilidad del cdigo ( .acilitar
su mantenimiento si utili2a constantes. 5na constante es un nom1re
signifcati,o 6ue sustitu(e a un n)mero o una cadena 6ue no ,ar?a.
Aun6ue una constante recuerda ligeramente a una ,aria1le' no puede
modifcar una constante o asignarle un ,alor nue,o como ocurre con una
,aria1le. 0a( dos or?genes para las constantesU
!onstantes intr#nsecas o de,nidas por el sistema proporcionadas
por aplicaciones ( controles. %as constantes de Visual Basic se
muestran en Visual Basic 9VB: ( Visual Basic para aplicaciones
9VBA: ( las 1i1liotecas de o1jetos en el 4aminador de o1jetos.
#tras aplicaciones 6ue proporcionan 1i1liotecas de o1jetos' como
;icroso.t 4cel ( ;icroso.t >roject' tam1i+n proporcionan una lista
de constantes 6ue puede usar con sus o1jetos' m+todos (
propiedades. 7am1i+n se defnen constantes en la 1i1lioteca de
o1jetos de cada control Acti,eG. >ara o1tener m8s detalles acerca
de la utili2acin del 4aminador de o1jetos' ,ea O>rogramar con
o1jetosO.
*as constantes simblicas o de,nidas por el usuario se declaran
mediante la instruccin Const. %as constantes defnidas por el
usuario se descri1en en la pr4ima seccin' OCrear sus propias
constantesO.
n Visual Basic' los nom1res de constantes tienen un .ormato 6ue
com1ina ma()sculas ( min)sculas' con un prefjo 6ue indica la 1i1lioteca
de o1jetos 6ue defne la constante. %as constantes de las 1i1liotecas de
o1jetos de Visual Basic ( Visual Basic para aplicaciones tienen el prefjo
O,1OW por ejemplo' ,17ile0ori2ontal.
$e <a dise-ado el sistema de prefjos para e,itar colisiones accidentales
en casos donde las constantes tienen nom1res id+nticos ( representan
,alores di.erentes. Incluso con prefjos' es posi1le 6ue dos 1i1liotecas de
o1jetos puedan contener constantes id+nticas 6ue representen ,alores
di.erentes. %a constante a la 6ue se <ace re.erencia en cada caso
depende de la 1i1lioteca de o1jetos 6ue tenga ma(or prioridad. >ara
o1tener m8s in.ormacin acerca de la modifcacin de la prioridad de las
1i1liotecas de o1jetos' ,ea OCuadro de di8logo =e.erenciasO en el
cap?tulo !.
110

>ara estar totalmente seguro de e,itar colisiones en los nom1res de
constantes' puede califcar las re.erencias a constantes con la sinta4is
siguienteU
Jnombre-iblioteca.LJnombreMdulo.Lnombre!onstante
nombre-iblioteca suele ser el nom1re de clase del control o la 1i1lioteca'
nombreMdulo es el nom1re del mdulo 6ue defne la constante (
nombre!onstante es el nom1re de la constante. Cada uno de estos
elementos se defne en la 1i1lioteca de o1jetos ( se puede ,er en el
4aminador de o1jetos.
Crear constantes propias
%a sinta4is para declarar una constante es la siguienteU
J>u1lich>ri,ateL Const nombre!onstanteJAs tipoL ` e%presin
l argumento nombre!onstante es un nom1re sim1lico ,8lido 9las
reglas son las mismas 6ue para crear nom1res de ,aria1le: ( e%presin
est8 compuesta por constantes ( operadores de cadena o num+ricosW sin
em1argo' no puede usar llamadas a .unciones en e%presin.
5na instruccin Const puede representar una cantidad matem8tica o de
.ec<a ( <oraU
Const con>i ` *.1!1/92"/*/8939
>u1lic Const con;a4>lanetas As Integer ` 9
Const con&ec<a$alida ` A1V1V9/A
$e puede usar tam1i+n la instruccin Const para defnir constantes de
cadenaU
>u1lic Const conVersion ` O03.10.AO
Const con@om1reCla,e ` OnigmaO
>uede colocar m8s de una declaracin de constante en una )nica l?nea si
las separa con comasU
>u1lic Const con>i ` *.1!' con;a4>lanetas ` 9' con>o1;undial ` "E09
A menudo' la e4presin del lado derec<o del signo igual 9 ` : es un
n)mero o cadena literal' pero tam1i+n puede ser una e4presin 6ue d+
como resultado un n)mero o una cadena 9aun6ue la .uncin no puede
contener llamadas a .unciones:. >uede incluso defnir constantes en
t+rminos de constantes pre,iamente defnidasU
111

Const con>i2 ` con>i g 2
5na ,e2 6ue defna las constantes' puede colocarlas en el cdigo para
<acerlo m8s legi1le. >or ejemploU
$tatic $istema$olar91 7o con;a4>lanetas:
I. num>ersonas i con>op;undial 7<en 4it $u1
Alcance de las constantes defnidas por el usuario
5na instruccin Const tiene igual alcance 6ue una declaracin de
,aria1le ( se le aplican las mismas reglasU
>ara crear una constante 6ue slo e4ista en un procedimiento'
decl8rela dentro del procedimiento.
>ara crear una constante disponi1le para todos los procedimientos
de un mdulo' pero no para el cdigo 6ue est8 .uera del mdulo'
decl8rela en la seccin Declaraciones del mdulo.
>ara crear una constante disponi1le en toda la aplicacin' declare
la constante en la seccin Declaraciones de un mdulo est8ndar (
colo6ue delante de Const la pala1ra cla,e >u1lic. @o se pueden
declarar las constantes p)1licas en un mdulo de clase o de
.ormulario.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del
alcance' ,ea ODescripcin del alcance de las ,aria1lesO' anteriormente
en este mismo cap?tulo.
,itar re.erencias circulares
Como es posi1le defnir constantes en t+rminos de otras constantes'
de1er8 tener cuidado para no esta1lecer un ciclo o re.erencia circular
entre dos o m8s constantes. $e produce un ciclo cuando se tienen dos o
m8s constantes p)1licas' cada una de las cuales est8 defnida en
.uncin de la otra.
>or ejemploU
a n ;odule 1U
>u1lic Const conA ` conB g 2 a Disponi1le en toda la
a aplicacin.
a n ;odule 2U
>u1lic Const conB ` conA V 2 a Disponi1le en toda la
a aplicacin.
112

$i se produce un ciclo' Visual Basic generar8 un error cuando intente
ejecutar la aplicacin. @o puede ejecutar el cdigo <asta 6ue resuel,a la
re.erencia circular. >ara e,itar la creacin de un ciclo' restrinja todas las
constantes p)1licas a un )nico mdulo o' al menos' al menor n)mero
posi1le de mdulos.
7ipos de datos
%as ,aria1les son marcadores de posicin 6ue se utili2an para almacenar
,aloresW tienen nom1re ( un tipo de dato. l tipo de dato de la ,aria1le
determina cmo se almacenan los 1its 6ue representan esos ,alores en
la memoria del e6uipo. Cuando declare una ,aria1le' tam1i+n puede
proporcionarle un tipo de dato. 7odas las ,aria1les tienen un tipo de dato
6ue determina la clase de datos 6ue pueden almacenar.
De .orma predeterminada' si no proporciona un tipo de dato' la ,aria1le
toma el tipo de dato Variant. l tipo de dato Variant es como un
camalenW puede representar di.erentes tipos de datos en distintas
situaciones. @o tiene 6ue con,ertir estos tipos de datos cuando los
asigne a una ,aria1le VariantU Visual Basic reali2a autom8ticamente
cual6uier con,ersin necesaria.
$in em1argo' si sa1e 6ue una ,aria1le almacenar8 siempre un tipo de
dato determinado' Visual Basic tratar8 de .orma m8s efciente los datos
si declara la ,aria1le con ese tipo. >or ejemplo' se representa mejor una
,aria1le 6ue ,a almacenar nom1res de personas como el tipo de dato
$tring' (a 6ue un nom1re est8 siempre compuesto de caracteres.
%os tipos de datos se aplican a otras cosas adem8s de a las ,aria1les.
Cuando asigna un ,alor a una propiedad' dic<o ,alor tiene un tipo de
datoW los argumentos de las .unciones tienen tam1i+n tipos de datos. De
<ec<o' todo lo relacionado con datos en Visual Basic tiene un tipo de
dato.
7am1i+n puede declarar matrices de cual6uiera de los tipos
.undamentales.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin' ,ea la
seccin O;atricesO' m8s adelante en este cap?tulo. %a seleccin de tipos
de datos para mejorar el rendimiento de la aplicacin se e4plica en
ODise-ar 1uscando el rendimiento ( la compati1ilidadO.
Declarar ,aria1les con tipos de datos
Antes de usar una ,aria1le 6ue no sea Variant de1e usar las
instrucciones >ri,ate' >u1lic' Dim o $tatic para declararla As tipo. >or
11*

ejemplo' la siguiente instruccin declara un tipo Integer' Dou1le' $tring (
Currenc(' respecti,amenteU
>ri,ate I As Integer
Dim Cantidad As Dou1le
$tatic $u@om1re As $tring
>u1lic >agado>orfuan As Currenc(
%a instruccin de declaracin puede com1inar ,arias declaraciones'
como en las instrucciones siguientesU
>ri,ate I As Integer' Amt As Dou1le
>ri,ate $u@om1re As $tring' >agado>orfuan As Currenc(
>ri,ate >rue1a' Cantidad' f As Integer
@ota $i no proporciona un tipo de dato' se asigna a la ,aria1le el tipo
predeterminado. n el ejemplo anterior' las ,aria1les >rue1a ( Cantidad
tienen un tipo de dato Variant. sto puede sorprenderle si su e4periencia
con otros lenguajes de programacin le lle,a a esperar 6ue todas las
,aria1les contenidas en la misma instruccin de declaracin tengan el
mismo tipo 6ue <a especifcado 9en este caso' Integer:.
7ipos de datos num+ricos
Visual Basic proporciona ,arios tipos de datos num+ricosU Integer' %ong
9entero largo:' $ingle 9signo Zotante de simple precisin:' Dou1le 9signo
Zotante de do1le precisin: ( Currenc(. 5sar un tipo de dato num+rico
emplea normalmente menos espacio de almacenamiento 6ue un tipo
Variant.
$i sa1e 6ue una ,aria1le siempre ,a a almacenar n)meros enteros
9como 12: en ,e2 de n)meros .raccionarios 9como *'/3:' decl8rela como
un tipo Integer o %ong. %as operaciones con enteros son m8s r8pidas (
estos tipos consumen menos memoria 6ue otros tipos de datos. =esultan
especialmente )tiles como ,aria1les de contador en 1ucles &or...@e4t.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
las estructuras de control' ,ea OIntroduccin a las estructuras de
controlO' m8s adelante en este mismo cap?tulo.
$i la ,aria1le contiene una .raccin' decl8rela como ,aria1le $ingle'
Dou1le o Currenc(. l tipo de dato Currenc( acepta <asta cuatro d?gitos
a la derec<a del separador decimal ( <asta 6uince d?gitos a la i26uierdaW
es un tipo de dato de signo fjo adecuado para c8lculos monetarios. %os
n)meros de signo Zotante 9$ingle ( Dou1le: tienen m8s inter,alo 6ue
Currenc(' pero pueden estar sujetos a pe6ue-os errores de redondeo.
11!

@ota %os ,alores de signo Zotante se pueden e4presar como mmmeee
o mmmDeee' donde mmm es la mantisa ( eee el e4ponente 9potencia
de 10:. l ,alor positi,o m8s alto de un tipo de dato $ingle es
*'!0282*E*8 *'! ,eces 10 a la *8
a
potenciaW el ,alor positi,o m8s
alto de un tipo de dato Dou1le es 1'393"9*1*!8"2*2DE*08 o alrededor
de 1'8 ,eces 10 a la *08
a
potencia. $i utili2a D para separar la mantisa (
el e4ponente en un literal num+rico' el ,alor se tratar8 como un tipo de
dato Dou1le. Igualmente' usar de la misma manera <ace 6ue el ,alor
se trate como un tipo de dato $ingle.
l tipo de dato B(te
$i la ,aria1le contiene datos 1inarios' decl8rela como matri2 de tipo
B(te. 9%as matrices se descri1en en O;atricesO' m8s adelante en este
mismo cap?tulo:. 5sar ,aria1les B(te para almacenar datos 1inarios los
preser,a durante las con,ersiones de .ormato. Cuando se con,ierten las
,aria1les $tring entre los .ormatos A@$I ( 5nicode' los datos 1inarios de
la ,aria1le resultan da-ados. Visual Basic puede con,ertir
autom8ticamente entre A@$I ( 5nicode alU
%eer arc<i,os
scri1ir arc<i,os
%lamar a arc<i,os D%%
%lamar a m+todos ( propiedades en o1jetos
7odos los operadores 6ue .uncionan con enteros .uncionan con el tipo de
dato B(te e4cepto el de resta unaria. >uesto 6ue B(te es un tipo sin
signo con el inter,alo 0Q2//' no puede representar un ,alor negati,o.
As?' para la resta unaria' Visual Basic con,ierte antes el tipo B(te en un
entero con signo.
s posi1le asignar todas las ,aria1les num+ricas entre s? ( a ,aria1les
del tipo Variant. Visual Basic redondea en ,e2 de truncar la parte
.raccionaria de un n)mero de signo Zotante antes de asignarlo a un
entero.
>ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de las
con,ersiones 5nicode ( A@$I' ,ea el cap?tulo 1" OAspectos
internacionalesO.
l tipo de dato $tring
$i tiene una ,aria1le 6ue siempre contendr8 una cadena ( nunca un
,alor num+rico' puede declararla del tipo $tringU
11/

>ri,ate $ As $tring
As? podr8 asignar cadenas a esta ,aria1le ( manipularla mediante
.unciones de cadenaU
$ ` OBase de datosO
$ ` %e.t9$' !:
De .orma predeterminada' una ,aria1le o argumento de cadena es una
cadena de longitud variableW la cadena crece o disminu(e seg)n le
asigne nue,os datos. 7am1i+n puede declarar cadenas de longitud fja.
specif6ue una cadena de longitud ,ja con esta sinta4isU
$tring g tamao
>or ejemplo' para declarar una cadena 6ue tiene siempre /0 caracteres
de longitud' utilice un cdigo como esteU
Dim @om1remp As $tring g /0
$i asigna una cadena con menos de /0 caracteres' @om1remp se
rellenar8 con espacios en 1lanco <asta el total de /0 caracteres. $i
asigna una cadena demasiado larga a una cadena de longitud fja' Visual
Basic simplemente truncar8 los caracteres.
>uesto 6ue las cadenas de longitud fja se rellenan con espacios al fnal'
,er8 6ue las .unciones 7rim ( =7rim' 6ue 6uitan los espacios en 1lanco'
resultan mu( )tiles cuando se tra1aja con ellas.
%as cadenas de longitud fja se pueden declarar en mdulos est8ndar
como >u1lic o >ri,ate. n mdulos de clase ( .ormulario' las cadenas de
longitud fja de1en declararse como >ri,ate.
>ara o1tener m8s in.ormacin Vea O&unciones %7rim' =7rim ( 7rimO en la
)e(erencia del lenguaje.
Intercam1iar cadenas ( n)meros
>uede asignar una cadena a una ,aria1le num+rica si la cadena
representa un ,alor num+rico. 7am1i+n es posi1le asignar un ,alor
num+rico a una ,aria1le de cadena. >or ejemplo' colo6ue un 1otn de
comando' un cuadro de te4to ( un cuadro de lista en un .ormulario.
scri1a el cdigo siguiente en el e,ento ClicS del 1otn de comando.
jecute la aplicacin ( <aga clic en el 1otn de comando.
>ri,ate $u1 Command1_ClicS9:
11"

Dim intG As Integer
Dim str\ As $tring
str\ ` O100.2*O
intG ` str\ a >asa la cadena a una ,aria1le num+rica.
%ist1.AddItem Cos9str\: a Agrega el coseno del n)mero de la
a cadena al cuadro de lista.
str\ ` Cos9str\: a >asa el coseno a la ,aria1le de cadena.
7e4t1.7e4t ` str\ a $e imprime la ,aria1le de cadena en el
a cuadro de te4to.
nd $u1
Visual Basic con,ertir8 autom8ticamente las ,aria1les al tipo de dato
apropiado. De1e tener cuidado cuando intercam1ie n)meros ( cadenas'
(a 6ue pasar un ,alor no num+rico a una cadena producir8 un error de
tiempo de ejecucin.
l tipo de dato Boolean
$i tiene una ,aria1le 6ue siempre contendr8 solamente in.ormacin del
tipo ,erdadero ( .also' s? ( no o acti,ado o desacti,ado' puede declararla
del tipo Boolean. l ,alor predeterminado de Boolean es &alse. n el
siguiente ejemplo' 1lnjecutando es una ,aria1le Boolean 6ue almacena
un simple s? o no.
Dim 1lnjecutando As Boolean
a Comprue1a si la cinta est8 en marc<a.
I. =ecorder.Direction ` 1 7<en
1lnjecutando ` 7rue
nd i.
l tipo de dato Date
%os ,alores de .ec<a ( <ora pueden almacenarse en el tipo de dato
espec?fco Date en ,aria1les Variant. n am1os tipos se aplican las
mismas caracter?sticas generales a las .ec<as.
>ara o1tener m8s in.ormacin Vea la seccin OValores de .ec<a ( <ora
almacenados en tipos VariantO en O7emas a,an2ados so1re VariantO.
Cuando se con,ierten otros tipos de datos num+ricos en Date' los
,alores 6ue <a( a la i26uierda del signo decimal representan la
in.ormacin de .ec<a' mientras 6ue los ,alores 6ue <a( a la derec<a del
signo decimal representan la <ora. ;edianoc<e es 0 ( mediod?a es 0./.
%os n)meros enteros negati,os representan .ec<as anteriores al *0 de
diciem1re de 1899.
113

l tipo de dato #1ject
%as ,aria1les #1ject se almacenan como direcciones de *2 1its 9! 1(tes:
6ue <acen re.erencia a o1jetos dentro de una aplicacin o de cual6uier
otra aplicacin. 5na ,aria1le declarada como #1ject es una ,aria1le 6ue
puede asignarse su1siguientemente 9mediante la instruccin $et: para
re.erirse a cual6uier o1jeto real reconocido por la aplicacin.
Dim o1jD1 As #1ject
$et o1jD1 ` #penData1ase9OcUXV1/X1i1lio.md1O:
Cuando declare ,aria1les de o1jeto' intente usar clases espec?fcas
9como 7e4tBo4 en ,e2 de Control o' en el caso anterior' Data1ase en ,e2
de #1ject: mejor 6ue el tipo gen+rico #1ject. Visual Basic puede resol,er
re.erencias a las propiedades ( m+todos de o1jetos con tipos espec?fcos
antes de 6ue ejecute una aplicacin. sto permite a la aplicacin
.uncionar m8s r8pido en tiempo de ejecucin. n el 4aminador de
o1jetos se muestran las clases espec?fcas.
Cuando tra1aje con o1jetos de otras aplicaciones' en ,e2 de usar Variant
o el tipo gen+rico #1ject' declare los o1jetos como se muestran en la
lista Clases en el 4aminador de o1jetos. sto asegura 6ue Visual Basic
recono2ca el tipo espec?fco de o1jeto al 6ue est8 <aciendo re.erencia' lo
6ue permite resol,er la re.erencia en tiempo de ejecucin.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
la creacin ( asignacin de o1jetos ( ,aria1les de o1jetos' ,ea OCrear
o1jetosO m8s adelante en este mismo cap?tulo.
Con,ertir tipos de datos
Visual Basic proporciona ,arias .unciones de con,ersin 6ue puede usar
para con,ertir ,alores en tipos de datos espec?fcos. >or ejemplo' para
con,ertir un ,alor a Currenc(' utilice la .uncin CCurU
>ago>or$emana ` CCur9<oras g >ago>or0ora:
&unciones de
con,ersin
Con,ierten una e4presin en
C1ool Boolean
C1(te B(te
Ccur Currenc(
118

Cdate Date
CD1l Dou1le
Cint Integer
C%ng %ong
C$ng $ingle
C$tr $tring
C,ar Variant
CVrr rror
@ota %os ,alores 6ue se pasan a una .uncin de con,ersin de1en ser
,8lidos para el tipo de dato de destino o se producir8 un error. >or
ejemplo' si intenta con,ertir un tipo %ong en un Integer' el tipo %ong
de1e estar en el inter,alo ,8lido del tipo de dato Integer.
>ara o1tener m8s in.ormacin Bus6ue las .unciones espec?fcas de
con,ersin en la )e(erencia del lenguaje.
l tipo de dato Variant
5na ,aria1le Variant es capa2 de almacenar todos los tipos de datos
defnidos en el sistema. @o tiene 6ue con,ertir entre esos tipos de datos
si los asigna a una ,aria1le VariantW Visual Basic reali2a
autom8ticamente cual6uier con,ersin necesaria. >or ejemploU
Dim Alg)nValor a De .orma predeterminada es un tipo Variant.
Alg)nValor ` O13O a Alg)nValor contiene O13O 9cadena de dos
a caracteres:.
Alg)nValor ` Alg)nValor Q 1/ a Alg)nValor a<ora contiene
a el ,alor num+rico 2.
Alg)nValor ` O5O D Alg)nValor a Alg)nValor a<ora contiene
a O52O 9una cadena de dos
119

a caracteres:.
$i 1ien puede reali2ar operaciones con ,aria1les Variant sin sa1er
e4actamente el tipo de dato 6ue contienen' <a( algunas trampas 6ue
de1e e,itar.
$i reali2a operaciones aritm+ticas o .unciones so1re un Variant' el
Variant de1e contener un n)mero. >ara o1tener m8s detalles' ,ea
la seccin OValores num+ricos almacenados en tipos VariantO en
O7emas a,an2ados so1re VariantO.
$i est8 concatenando cadenas' utilice el operador D en ,e2 del
operador E. >ara o1tener m8s detalles' ,ea la seccin OCadenas
almacenadas en tipos VariantO en O7emas a,an2ados so1re
VariantO.
Adem8s de poder actuar como otros tipos de datos est8ndar' los Variant
tam1i+n pueden contener tres ,alores especialesU mpt(' @ull ( rror.
l ,alor mpt(
A ,eces necesitar8 sa1er si se <a asignado un ,alor a una ,aria1le
e4istente. 5na ,aria1le Variant tiene el ,alor mpt( antes de asignarle
un ,alor. l ,alor mpt( es un ,alor especial distinto de 0' una cadena
de longitud cero 9OO: o el ,alor @ull. >uede pro1ar el ,alor mpt( con la
.uncin Ismpt(U
I. Ismpt(9j: 7<en j ` 0
Cuando un Variant contiene el ,alor mpt(' puede usarlo en
e4presionesW se trata como un 0 o una cadena de longitud cero'
dependiendo de la e4presin.
l ,alor mpt( desaparece tan pronto como se asigna cual6uier ,alor
9inclu(endo 0' una cadena de longitud cero o @ull: a una ,aria1le
Variant. >uede esta1lecer una ,aria1le Variant de nue,o como mpt( si
asigna la pala1ra cla,e mpt( al Variant.
l ,alor @ull
l tipo de dato Variant puede contener otro ,alor especialU @ull. @ull se
utili2a com)nmente en aplicaciones de 1ases de datos para indicar
datos desconocidos o 6ue .altan. De1ido a la .orma en 6ue se utili2a en
las 1ases de datos' @ull tiene algunas caracter?sticas )nicasU
120

%as e4presiones 6ue utili2an @ull dan como resultado siempre un
@ull. As?' se dice 6ue @ull se OpropagaO a tra,+s de e4presionesW si
cual6uier parte de la e4presin da como resultado un @ull' la
e4presin entera tiene el ,alor @ull.
Al pasar un @ull' un Variant 6ue contenga un @ull o una e4presin
6ue d+ como resultado un @ull como argumento de la ma(or?a de
las .unciones <ace 6ue la .uncin de,uel,a un @ull.
%os ,alores @ull se propagan a tra,+s de .unciones intr?nsecas 6ue
de,uel,en tipos de datos Variant.
7am1i+n puede asignar un @ull mediante la pala1ra cla,e @ullU
j ` @ull
>uede usar la .uncin Is@ull para pro1ar si una ,aria1le Variant contiene
un @ullU
I. Is@ull9G: And Is@ull9\: 7<en
j ` @ull
lse
j ` 0
nd I.
$i asigna @ull a una ,aria1le de un tipo 6ue no sea Variant' se producir8
un error intercepta1le. Asignar @ull a una ,aria1le Variant no pro,oca
ning)n error ( el @ull se propagar8 a tra,+s de e4presiones 6ue
contengan ,aria1les Variant 9@ull no se propaga a tra,+s de
determinadas .unciones:. >uede de,ol,er @ull desde cual6uier
procedimiento &unction con un ,alor de de,olucin de tipo Variant.
@ull no se asigna a las ,aria1les a menos 6ue se <aga e4pl?citamente'
por lo 6ue si no utili2a @ull en su aplicacin' no tendr8 6ue escri1ir
cdigo 6ue comprue1e su e4istencia ( lo trate.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
cmo usar @ull en e4presiones' ,ea O@ullO en la )e(erencia del lenguaje.
l ,alor rror
n un Variant' rror es un ,alor especial 6ue se utili2a para indicar 6ue
se <a producido una condicin de error en un procedimiento. $in
em1argo' a di.erencia de otros tipos de error' no se produce el
tratamiento de errores a ni,el normal de aplicacin. sto le permite a
usted o a la propia aplicacin elegir alternati,as 1asadas en el ,alor del
121

error. %os ,alores de error se crean con,irtiendo n)meros reales en
,alores de error mediante la .uncin CVrr.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
cmo usar el ,alor rror en e4presiones' ,ea O&uncin CVrrO en la
)e(erencia del lenguaje. >ara o1tener m8s in.ormacin acerca del
tratamiento de errores' ,ea el cap?tulo 1* ODepurar el cdigo ( tratar
erroresO. >ara o1tener m8s in.ormacin acerca del tipo de dato Variant'
,ea O7emas a,an2ados so1re VariantO.
;atrices
$i <a programado en otros lenguajes' pro1a1lemente (a conocer8 el
concepto de matrices. %as matrices le permiten <acer re.erencia por el
mismo nom1re a una serie de ,aria1les ( usar un n)mero 9?ndice: para
distinguirlas. sto le a(uda a crear cdigo m8s pe6ue-o ( simple en
muc<as situaciones' (a 6ue puede esta1lecer 1ucles 6ue traten de
.orma efciente cual6uier n)mero de casos mediante el n)mero del
?ndice. %as matrices tienen un l?mite superior e in.erior ( los elementos
de la matri2 son contiguos dentro de esos l?mites. >uesto 6ue Visual
Basic asigna espacio para cada n)mero de ?ndice' e,ite declarar las
matrices m8s grandes de lo necesario.
@ota %as matrices mostradas en esta seccin son matrices de
,aria1les' declaradas en el cdigo. $on distintas de las matrices de
controles 6ue se especifca al esta1lecer la propiedad Inde4 de los
controles en tiempo de dise-o. %as matrices de ,aria1les siempre son
contiguasW a di.erencia de las matrices de controles' no puede cargar (
descargar elementos de la mitad de la matri2.
7odos los elementos de una matri2 tienen el mismo tipo de datos. >or
supuesto' cuando el tipo de dato es Variant' los elementos indi,iduales
pueden contener distintas clases de datos 9o1jetos' cadenas' n)meros'
etc.:. >uede declarar una matri2 de cual6uiera de los tipos de datos
.undamentales' inclu(endo los tipos defnidos por el usuario 9descritos
en la seccin OCreacin de sus propios tipos de datosO' en O;8s acerca
de la programacin O: ( ,aria1les de o1jetos 9descritas en O>rogramacin
con o1jetosO:.
n Visual Basic <a( dos tipos de matricesU las matrices de tamao ,jo
6ue tienen siempre el mismo tama-o ( las matrices din$micas cu(o
tama-o cam1ia en tiempo de ejecucin. %as matrices din8micas se
descri1en con m8s detalle en la seccin O;atrices din8micasO' m8s
adelante en este mismo cap?tulo.
122

Declarar matrices de tama-o fjo
0a( tres .ormas de declarar una matri2 de tama-o fjo' dependiendo del
alcance 6ue desee 6ue tenga la matri2U
>ara declarar una matri. p"blica' utilice la instruccin >u1lic en la
seccin Declaraciones de un mdulo para declarar la matri2.
>ara crear una matri. a nivel de mdulo' utilice la instruccin
>ri,ate en la seccin Declaraciones de un mdulo para declarar la
matri2.
>ara crear una matri. local' utilice la instruccin >ri,ate en un
procedimiento para declarar la matri2.
sta1lecer los l?mites superior e in.erior
Cuando declare una matri2' ponga a continuacin del nom1re de la
matri2 el l?mite superior entre par+ntesis. l l?mite superior no puede
e4ceder el inter,alo de un tipo de dato %ong 9Q2.1!3.!8*."!8 a
2.1!3.!8*."!3:. >or ejemplo' estas declaraciones de matrices pueden
aparecer en la seccin Declaraciones de un mduloU
Dim Contadores91!: As Integer a 1/ elementos.
Dim $umas920: As Dou1le a 21 elementos.
>ara crear una matri2 p)1lica' simplemente utilice >u1lic en lugar de
DimU
>u1lic Contadores91!: As Integer
>u1lic $umas920: As Dou1le
%as mismas declaraciones dentro de un procedimiento utili2an DimU
Dim Contadores91!: As Integer
Dim $umas920: As Dou1le
%a primera declaracin crea una matri2 de 1/ elementos' con n)meros
de ?ndice 6ue ,an de 0 a 1!. %a segunda crea una matri2 de 21
elementos' con n)meros de ?ndice 6ue ,an de 0 a 20. l l?mite in.erior
predeterminado es 0.
>ara especifcar el l?mite in.erior' proporcinelo e4pl?citamente 9como
tipo de dato %ong: mediante la pala1ra cla,e 7oU
Dim Contadores91 7o 1/: As Integer
Dim $umas9100 7o 120: As $tring
12*

n las anteriores declaraciones' los n)meros de ?ndice de Contadores
,an de 1 a 1/ ( los n)meros de ?ndice de $umas ,an de 100 a 120.
;atrices 6ue contienen otras matrices
s posi1le crear una matri2 Variant ( llenarla con otras matrices de
distintos tipos de datos. l cdigo siguiente crea dos matrices' una 6ue
contiene enteros ( otra 6ue contiene cadenas. $e declara entonces una
tercera matri2 Variant ( se llena con las matrices de enteros ( cadenas.
>ri,ate $u1 Command1_ClicS9:
Dim intG As Integer a Declara la ,aria1le de contador.
a Declara ( llena una matri2 de enteros.
Dim contadoresA9/: As Integer
&or intG ` 0 7o !
contadoresA9intG: ` /
@e4t intG
a Declara ( llena una matri2 de cadenas.
Dim contadoresB9/: As $tring
&or intG ` 0 7o !
contadoresB9intG: ` OadisO
@e4t intG
Dim arrG92: As Variant a Declara una matri2 nue,a de dos
a miem1ros.
arrG91: ` contadoresA9: a %lena la matri2 con las otras
a matrices.
arrG92: ` contadoresB9:
;sgBo4 arrG91:92: a ;uestra un miem1ro de cada
a matri2.
;sgBo4 arrG92:9*:
nd $u1
;atrices multidimensionales
A ,eces necesitar8 <acer un seguimiento de la in.ormacin relacionada
de una matri2. >or ejemplo' para <acer un seguimiento de cada p?4el de
la pantalla del e6uipo' necesitar8 re.erirse a sus coordenadas G e \. sto
se puede <acer mediante una matri2 multidimensional para almacenar
los ,alores.
n Visual Basic puede declarar matrices de ,arias dimensiones. >or
ejemplo' la instruccin siguiente declara una matri2 1idimensional de 10
por Q10 en un procedimientoU
$tatic ;atri2A99' 9: As Dou1le
12!

$e puede declarar una o am1as dimensiones con l?mites in.eriores
e4pl?citosU
$tatic ;atri2A91 7o 10' 1 7o 10: As Dou1le
>uede <acer 6ue tenga m8s de dos dimensiones. >or ejemploU
Dim ;ultiD9*' 1 7o 10' 1 7o 1/:
sta declaracin crea una matri2 6ue tiene tres dimensiones con
tama-os de ! por 10 por 1/. l n)mero total de elementos es el
producto de las tres dimensiones' es decir' "00.
@ota Cuando comience a agregar dimensiones a una matri2' el
almacenamiento total 6ue necesita la matri2 se incrementa
considera1lemente' por lo 6ue de1e usar las matrices
multidimensionales con sumo cuidado. 7enga especial cuidado con las
matrices Variant' (a 6ue son m8s grandes 6ue otros tipos de datos.
5sar 1ucles para manipular matrices
>uede procesar efcientemente una matri2 multidimensional mediante
1ucles &or anidados. >or ejemplo' estas instrucciones iniciali2an cada
elemento de ;atri2A a un ,alor 1as8ndose en su u1icacin en la matri2U
Dim I As Integer' f As Integer
$tatic ;atri2A91 7o 10' 1 7o 10: As Dou1le
&or I ` 1 7o 10
&or f ` 1 7o 10
;atri2A9I' f: ` I g 10 E f
@e4t f
@e4t I
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
los 1ucles' ,ea Ostructuras de 1ucleO' m8s adelante en este mismo
cap?tulo.
Instrucciones
Open 0Instrucci!n1
Acti,a operaciones de entradaVsalida 9V$: con un arc<i,o.
$inta4is
12/

#pen rutaacceso J&or modoL JAccess accesoL Jblo/uearL As
JALn"meroarc&ivo J%en`longitudregistroL
%a sinta4is de la instruccin #pen consta las siguientes partesU
>arte Descripcin
rutaacceso =e6uerido. 4presin de cadena 6ue especifca un
nom1re de arc<i,oW puede incluir el directorio o carpeta
( la unidad de disco.
modo =e6uerido. >ala1ra cla,e 6ue especifca el modo de
arc<i,oU Append' Binar(' Input' #utput o =andom. $i no
se especifca' el arc<i,o se a1re con acceso =andom.
acceso #pcional. >ala1ra cla,e 6ue especifca las operaciones
permitidas en el arc<i,o a1iertoU =ead' Hrite o =ead
Hrite.
blo/uear #pcional. >ala1ra cla,e 6ue especifca las operaciones
permitidas en el arc<i,o a1ierto por otros procesosU
$<ared' %ocS =ead' %ocS Hrite ( %ocS =ead Hrite.
n"meroarc&ivo =e6uerido. 5n n)mero de arc<i,o ,8lido entre 1 ( /11
inclusi,e. >ara o1tener el n)mero del siguiente arc<i,o
disponi1le se utili2a la .uncin &ree&ile.
longitudregistro #pcional. @)mero igual o in.erior a *2.3"3 1(tes. n
arc<i,os a1iertos para acceso aleatorio' este ,alor es la
longitud del registro. >ara arc<i,os secuenciales' este
,alor es el n)mero de caracteres almacenados en 1).er.
Comentarios
Antes de poder ejecutar una operacin de V$ en un arc<i,o' +ste de1e
estar a1ierto. #pen asigna un 1).er para operaciones de V$ con el
arc<i,o ( determina el modo de acceso 6ue se de1e utili2ar con el 1).er.
$i el arc<i,o especifcado con rutaacceso no e4iste' se crea al a1rir un
arc<i,o en los modos Append' Binar(' #utput o =andom.
$i el arc<i,o (a lo <a a1ierto otro proceso ( no se permite el tipo de
acceso especifcado' la operacin #pen .racasa ( se produce un error.
%a cl8usula %en se ignora si modo es Binar(.
12"

Importante n los modos Binar(' Input ( =andom se puede a1rir un
arc<i,o utili2ando un n)mero de arc<i,o distinto sin necesidad de
cerrarlo antes. n los modos Append ( #utput de1e cerrar el arc<i,o
para poder a1rirlo con un n)mero de arc<i,o distinto.
Close 0Instrucci!n1
7ermina las operaciones de entradaVsalida 9V$: en un arc<i,o a1ierto
con la instruccin #pen.
$inta4is
Close Jlistan"merosarc&ivosL
l argumento opcional listan"merosarc&ivos puede estar constituido por
uno o m8s n)meros de arc<i,o usando la siguiente sinta4is' donde
n"meroarc&ivo es cual6uier n)mero de arc<i,o ,8lidoU
JJALn"meroarc&ivoL J' JALn"meroarc&ivoL . . .
Comentarios
$i omite listan"merosarc&ivos' se cierran todos los arc<i,os acti,os
a1iertos con la instruccin #pen.
Cuando se cierran arc<i,os 6ue se a1rieron para #utput o Append' el
1).er fnal de salida se gra1a en el 1).er del sistema operati,o 6ue
corresponde a ese arc<i,o. 7odo el espacio del 1).er asociado con el
arc<i,o cerrado se li1era.
Cuando se ejecuta la instruccin Close' la asociacin de un arc<i,o con
su n)mero de arc<i,o termina.
Input 4 0Instrucci!n1
%ee datos de un arc<i,o secuencial a1ierto ( asigna esos datos a
,aria1les.
$inta4is
Input An"meroarc&ivo' listavariables
%a sinta4is de la instruccin Input A consta de las siguientes partesU
>arte Descripcin
123

n"meroarc&ivo =e6uerido. Cual6uier n)mero de arc<i,o ,8lido.
listavariables =e6uerido. %ista de ,aria1les delimitada por comas 6ue
se asignan a los ,alores 6ue se leen de un arc<i,oW no
puede ser una matri2 o una ,aria1le de o1jeto. $in
em1argo' es posi1le usar ,aria1les 6ue descri1en
elementos de una matri2 o de un tipo defnido por el
usuario.
Comentarios
%os datos le?dos con Input A se escri1en normalmente en un arc<i,o con
Hrite A. 5se esta instruccin slo con arc<i,os a1iertos en modo Input o
Binar(.
Cuando se leen datos num+ricos o cadenas est8ndar' se asignan tal cual
a ,aria1les. %a siguiente ta1la ilustra la manera en 6ue se trata la
entrada de otros tipos de datosU
Datos Valor asignado a la ,aria1le
>unto ( coma de
delimitacin o l?nea en
1lanco
mpt(
A@5%%A @ull
A7=5A o A&A%$A 7rue o &alse
Ayyyy-mm-dd &&0mm0ssA l d?a o la <ora representadas por la
e4presin
A==#= errornumberA errornumber 9la ,aria1le es un tipo Variant
eti6uetada como un error:
$e ignoran las comillas do1les 9OO: en la entrada de datos.
%os elementos de datos de un arc<i,o de1en aparecer en el mismo
orden 6ue tienen las ,aria1les en listavariables ( de1en coincidir con
,aria1les del mismo tipo de datos. $i una ,aria1le es num+rica ( los
datos no lo son' se asigna un ,alor cero a esa ,aria1le.
$i se llega al fn del arc<i,o cuando se est8 introduciendo un elemento
de datos' se da por terminada la entrada ( se produce un error.
128

@ota >ara introducir correctamente en ,aria1les mediante Input A los
datos le?dos de un arc<i,o' utilice siempre la instruccin Hrite A' en
lugar de >rint A' para gra1ar la in.ormacin en los arc<i,os. %a
utili2acin de Hrite A garanti2a 6ue cada campo de datos separado se
delimite correctamente.
5rint 4 0Instrucci!n1
scri1e en un arc<i,o secuencial los datos con .ormato de presentacin.
$inta4is
>rint An"meroarc&ivo' JlistasalidaL
%a sinta4is de la instruccin >rint A consta las siguientes partesU
>arte Descripcin
n"meroarc&i
vo
=e6uerido. Cual6uier n)mero de arc<i,o
,8lido.
listasalida #pcional. 4presin o lista de e4presiones
para imprimir.
Valor
l argumento listasalida tiene los ,alores siguientesU
Jk$pc9n: h 7a1J9n:LlLJe%presinLJposicincar$cterL
>arte Descripcin
$pc9n: $e utili2a para insertar caracteres de espacio en la
salida' donde n es el n)mero de caracteres de espacio
para insertar.
7a19n: $e utili2a para colocar el punto de insercin en una
n)mero de columna a1soluta' donde n es el n)mero
de columna. 5tilice 7a1 sin argumentos para colocar el
punto de insercin al comien2o de la siguiente 2ona de
impresin.
e%presin 4presin num+rica o e4presin de cadena 6ue se ,a a
imprimir.
129

posicincar$cter specifca el punto de insercin del car8cter siguiente.
$e utili2a un punto ( coma 9W: para especifcar 6ue el
punto de insercin de1e estar inmediatamente
despu+s del )ltimo car8cter mostrado. 5tilice 7a19n:
para colocar el punto de insercin en un n)mero de
columna a1soluta. 5tilice 7a1 sin argumentos para
colocar el punto de insercin al comien2o de la
siguiente 2ona de impresin. $i se omite
posicincar$cter' el siguiente car8cter se imprime en
la l?nea siguiente.
Comentarios
%os datos 6ue se escri1en en un arc<i,o con >rint A se leen
normalmente con %ine Input A o Input.
$i omite listasalida ( slo inclu(e un separador de listas despu+s de
n"meroarc&ivo' se imprime una l?nea en 1lanco en el arc<i,o. $e pueden
separar ,arias e4presiones por medio de un espacio en 1lanco o de un
punto ( coma.
n el caso de datos de tipo Boolean se imprime 7rue o &alse. %as
pala1ras cla,e 7rue ( &alse no se traducen' cual6uiera 6ue sea la
confguracin regional.
%os datos de tipo Date se escri1en en el arc<i,o utili2ando el .ormato
corto de .ec<a est8ndar reconocido por el sistema. Cuando no se pone el
componente correspondiente a la .ec<a o a la <ora' o +ste es igual a
cero' slo se escri1e en el arc<i,o la parte suministrada.
@o se escri1e nada en el arc<i,o si los datos de listasalida son de tipo
mpt(. $in em1argo' si listasalida es @ull' @ull se escri1e en el arc<i,o.
>ara datos de rror' la salida aparece como rror cdigoerror. %a pala1ra
cla,e rror no se traducen' cual6uiera 6ue sea la confguracin regional.
7odos los datos 6ue se escri1en en el arc<i,o con >rint A se adaptan
regionalmenteW es decir' se da .ormato al dato usando el separador
decimal adecuado.
>uesto 6ue >rint A escri1e una imagen de los datos en el arc<i,o' de1e
delimitar los datos para 6ue se impriman correctamente. $i utili2a 7a1
sin argumentos para mo,er la posicin de impresin a la siguiente 2ona
de impresin' >rint A tam1i+n escri1e en el arc<i,o los espacios entre
campos de impresin.
1*0

@ota $i en el .uturo desea leer datos de un arc<i,o por medio de la
instruccin Input A' utilice la instruccin Hrite A en ,e2 de la instruccin
>rint A para escri1ir los datos en el arc<i,o. %a utili2acin de Hrite A
asegura la integridad de cada campo de datos separado' al delimitarlo
adecuadamente' de modo 6ue se pueda leer otra ,e2 utili2ando Input A.
%a utili2acin de Hrite A asegura tam1i+n 6ue los datos se puedan leer
correctamente en cual6uier confguracin regional.
Di 0Instrucci!n1
Declara ,aria1les ( les asigna espacio de almacenamiento.
$inta4is
Dim JHit<,entsL nombre'variableJ9Jsub#ndicesL:L JAs J@eML tipoL J'
JHit<,entsL nombre'variableJ9Jsub#ndicesL:L JAs J@eML tipoLL . . .
%a sinta4is de la instruccin Dim consta de las siguientes partesU
>arte Descripcin
Hit<,ents #pcional. >ala1ra cla,e 6ue especifca 6ue
nombre'variable es una ,aria1le de o1jeto utili2ada para
responder a e,entos desencadenados por un o1jeto
Acti,eG. Hit<,ents solamente es ,8lido en mdulos de
clase. >uede declarar tantas ,aria1les indi,iduales como
desee mediante Hit<,ents' pero no puede crear matrices
con Hit<,ents. @o puede utili2ar @eM con Hit<,ents.
nombre'
variable
=e6uerido. @om1re de la ,aria1leW sigue las con,enciones
est8ndar de nom1re de ,aria1le.
sub#ndices #pcional. Dimensiones de la ,aria1le de matri2W se pueden
declarar <asta "0 dimensiones m)ltiples. l argumento
sub#ndices utili2a la sinta4is siguienteU
Jin(erior 7oL superior J' Jin(erior 7oL superiorL . . .
Cuando no se declara espec?fcamente en in(erior' el l?mite
in.erior de una matri2 se controla mediante la instruccin
#ption Base. ste l?mite in.erior es cero si no <a( ninguna
instruccin #ption Base.
@eM #pcional. >ala1ra cla,e 6ue <a1ilita la creacin impl?cita de
un o1jeto. $i utili2a @eM cuando declara la ,aria1le de
o1jeto' se crea una nue,a instancia del o1jeto como
1*1

primera re.erencia' de .orma 6ue no tiene 6ue utili2ar la
instruccin $et para asignar la re.erencia del o1jeto. %a
pala1ra cla,e @eM no se puede utili2ar para declarar
,aria1les de cual6uier tipo de datos' intr?nseco' para
declarar instancias de o1jetos dependientes ni con
Hit<,ents.
tipo #pcional. 7ipo de datos de la ,aria1leW puede ser B(te'
Boolean' Integer' %ong' Currenc(' $ingle' Dou1le' Decimal
9actualmente no admitida:' Date' $tring 9para cadenas de
longitud ,aria1le:' $tring g lengt& 9para cadenas de
longitud fja:' #1ject' Variant' un tipo defnido por el
usuario' o un tipo de o1jeto. 5tilice una cl8usula distinta As
tipo para cada ,aria1le 6ue defna.
Comentarios
%as ,aria1les declaradas con Dim en el ni,el de mdulo est8n
disponi1les para todos los procedimientos disponi1les slo dentro de ese
mdulo. n el ni,el de procedimiento' las ,aria1les slo est8n
disponi1les dentro de ese procedimiento.
5tilice la instruccin Dim en el ni,el de mdulo o de procedimiento para
declarar el tipo de datos de una ,aria1le. >or ejemplo' la siguiente
instruccin declara una ,aria1le como Integer.
Dim @)meroDempleados As Integer
7am1i+n puede utili2ar una instruccin Dim para declarar el tipo de
o1jeto de una ,aria1le. %a siguiente l?nea declara una ,aria1le para una
nue,a instancia de una <oja de c8lculo.
Dim G As @eM HorSs<eet
$i no utili2a la pala1ra cla,e @eM al declarar una ,aria1le de o1jeto' la
,aria1le 6ue se refere al o1jeto de1e asignarse a un o1jeto e4istente
mediante la instruccin $et antes de su uso. 0asta 6ue se le asigne un
o1jeto' la ,aria1le de o1jeto declarada tiene el ,alor especial @ot<ing' el
cual indica 6ue no se refere a ninguna instancia en particular de un
o1jeto.
7am1i+n puede utili2ar la instruccin Dim con par+ntesis ,ac?os para
declarar matrices din8micas. Despu+s de declarar una matri2 din8mica'
use la instruccin =eDim dentro de un procedimiento para defnir el
n)mero de dimensiones ( elementos de la matri2. $i intenta ,ol,er a
1*2

declarar una dimensin para una ,aria1le de matri2 cu(o tama-o se <a
especifcado e4pl?citamente en una instruccin >ri,ate' >u1lic o Dim'
ocurrir8 un error.
$i no especifca un tipo de datos o un tipo de o1jeto ( no e4iste ninguna
instruccin De.tipo en el mdulo' la ,aria1le predeterminada ser8
Variant.
Cuando se iniciali2an ,aria1les' una ,aria1le num+rica se iniciali2a con 0'
una cadena de longitud ,aria1le se iniciali2a con una cadena de longitud
0 9OO: ( una cadena de longitud fja se llena con ceros. %as ,aria1les
Variant se iniciali2an con mpt(. Cada elemento de una ,aria1le de un
tipo defnido por el usuario se iniciali2a como si .uera una ,aria1le
distinta.
@ota Cuando utili2a la instruccin Dim en un procedimiento'
generalmente pone la instruccin Dim al principio del mismo.
#ption 4plicit 9Instruccin:
$e usa en el ni,el de mdulo para .or2ar declaraciones e4pl?citas de
todas las ,aria1les en dic<o mdulo.
$inta4is
Option E,plicit
Comentarios
$i se usa' la instruccin #ption 4plicit de1e aparecer en un mdulo
antes de cual6uier procedimiento.
Cuando #ption 4plicit aparece en un mdulo' de1e declarar
e4pl?citamente todas las ,aria1les mediante las instrucciones Dim'
>ri,ate' >u1lic' =eDim o $tatic. $i intenta usar un nom1re de ,aria1le no
declarado' ocurrir8 un error en tiempo de compilacin.
$i no usa la instruccin #ption 4plicit todas las ,aria1les no declaradas
son Variant' a menos 6ue el tipo predeterminado est+ especifcado de
otra manera con una instruccin De.tipo.
@ota 5tilice #ption 4plicit para e,itar escri1ir incorrectamente el
nom1re de una ,aria1le e4istente o para e,itar con.usiones en el cdigo'
donde el alcance de la ,aria1le no est8 claro.
1**

Option Base 0Instrucci!n1
$e usa en el ni,el de mdulo para declarar el l?mite in.erior
predeterminado para su1?ndices de matri2.
$inta4is
#ption Base k0 h 1l
Comentarios
Como la 1ase predeterminada es 0' la instruccin #ption Base nunca se
re6uiere. $in em1argo' si usa la instruccin de1e aparecer en un mdulo
antes de cual6uier procedimiento. #ption Base slo puede aparecer una
,e2 en un mdulo ( de1e preceder a las declaraciones de matri2 6ue
inclu(en las dimensiones.
@ota %a cl8usula 7o en las instrucciones Dim' >ri,ate' >u1lic' =eDim (
$tatic proporciona una .orma m8s Ze4i1le de controlar el inter,alo de los
su1?ndices de una matri2. $in em1argo' si no esta1lece e4pl?citamente el
l?mite in.erior con una cl8usula 7o' puede usar #ption Base para cam1iar
el l?mite in.erior predeterminado a 1. %a 1ase de una matri2 creada con
la .uncin Arra( o la pala1ra cla,e >aramArra( es ceroW #ption Base no
a.ecta a >aramArra( 9o la .uncin Arra(' cuando se califca con el
nom1re de su 1i1lioteca de tipo' por ejemplo VBA.Arra(:.
%a instruccin #ption Base slo a.ecta el l?mite in.erior de las matrices
en el mdulo donde se u1ica la instruccin.
De)tipo 0Instrucciones1
$e usan en el ni,el de mdulo para esta1lecer el tipo de datos
predeterminado para ,aria1les' argumentos pasado a procedimientos' (
el ,alor de,uelto por los procedimientos &unction ( >ropert( Pet cu(os
nom1res comien2an con los caracteres especifcados.
$inta4is
De.Bool intervalo'letrasJ' intervalo'letrasL . . .
De.B(te intervalo'letrasJ' intervalo'letrasL . . .
De.Int intervalo'letrasJ' intervalo'letrasL . . .
De.%ng intervalo'letrasJ' intervalo'letrasL . . .
1*!

De.Cur intervalo'letrasJ' intervalo'letrasL . . .
De.$ng intervalo'letrasJ' intervalo'letrasL . . .
De.D1l intervalo'letrasJ' intervalo'letrasL . . .
De.Dec intervalo'letrasJ' intervalo'letrasL . . .
De.Date intervalo'letrasJ' intervalo'letrasL . . .
De.$tr intervalo'letrasJ' intervalo'letrasL . . .
De.#1j intervalo'letrasJ' intervalo'letrasL . . .
De.Var intervalo'letrasJ' intervalo'letrasL . . .
l argumento re6uerido intervalo'letras posee la sinta4is siguienteU
letra1JQletra2L
%os argumentos letra1 ( letra2 especifcan el inter,alo de nom1res para
el cual puede esta1lecer un tipo de datos predeterminado. Cada
argumento representa la primera letra del nom1re de la ,aria1le'
argumento' procedimiento &unction o procedimiento >ropert( Pet (
puede ser cual6uier letra del a1ecedario. n intervalo'letras no se
distingue entre ma()sculas ( min)sculas.
Comentarios
l nom1re de la instruccin determina el tipo de datosU
Instrucci
n
7ipo de datos
De.Bool Boolean
De.B(te B(te
De.Int Integer
De.%ng %ong
1*/

De.Cur Currenc(
De.$ng $ingle
De.D1l Dou1le
De.Dec Decimal 9no se admite actualmente:
De.Date Date
De.$tr $tring
De.#1j #1ject
De.Var Variant
>or ejemplo' en el siguiente .ragmento de programa' ;ensaje es una
,aria1le de cadenaU
De.$tr AQF
. . .
;ensaje ` Ospacio de pila insufciente.O
5na instruccin De.tipo slo a.ecta al mdulo donde se usa. >or ejemplo'
una instruccin De.Int en un mdulo slo a.ecta al tipo de datos
predeterminado de las ,aria1les' los argumentos pasados a
procedimientos ( el tipo de,uelto para los procedimientos &unction (
>ropert( Pet declarados en ese mduloW el tipo de datos predeterminado
de ,aria1les' argumentos ( tipos de,ueltos en otros mdulos no se ,en
a.ectados. $i no se declara e4pl?citamente con una instruccin De.tipo'
el tipo de datos predeterminado para todas las ,aria1les' todos los
argumentos' todos los procedimientos &unction ( todos los
procedimientos >ropert( Pet es Variant.
Cuando especifca un inter,alo de letras' generalmente defne el tipo de
datos para ,aria1les 6ue comien2an con las letras de los 128 primeros
caracteres del juego de caracteres. $in em1argo' cuando especifca el
1*"

inter,alo de letras AYj' esta1lece el tipo de datos predeterminado para
todas las ,aria1les' inclu(endo cual6uiera 6ue comience con caracteres
internacionales pro,enientes de la parte e4tendida del juego de
caracteres 9128Y2//:.
7ras especifcar el inter,alo AYj no es posi1le seguir redefniendo
cual6uier su1inter,alo de ,aria1les mediante instrucciones De.tipo. De
<ec<o' una ,e2 defnido un inter,alo' si inclu(e una letra defnida
anteriormente en otra instruccin De.tipo3 ocurrir8 un error. $in
em1argo' puede especifcar e4pl?citamente el tipo de datos de cual6uier
,aria1le' defnida o no' mediante una instruccin Dim con una cl8usula
As tipo. >or ejemplo' puede usar el siguiente cdigo en el ni,el de
mdulo para defnir una ,aria1le como Dou1le incluso aun6ue el tipo de
datos predeterminado sea IntegerU
De.Int AQj
Dim >orcentajeImpuesto As Dou1le
%as instrucciones De.tipo no a.ectan a elementos de tipos defnidos por
el usuario (a 6ue estos de1en declararse e4pl?citamente.
&or666Ne,t 0Instrucci!n1
=epite un grupo de instrucciones un n)mero especifcado de ,eces.
$inta4is
&or contador ` principio 7o ,n J$tep incrementoL
JinstruccionesL
J4it &orL
JinstruccionesL
@e4t JcontadorL
%a sinta4is de la instruccin &or...@e4t consta de las siguientes partesU
>arte Descripcin
!ontador =e6uerido. Varia1le num+rica 6ue se utili2a como
contador de 1ucle. %a ,aria1le no puede ser Booleana
ni un elemento de matri2.
1*3

4rincipiot =e6uerido. Valor inicial del contador.
5in =e6uerido. Valor fnal del contador.
6ncremento #pcional. Cantidad en la 6ue cam1ia el contador cada
,e2 6ue se ejecuta el 1ucle. $i no se especifca' el
,alor predeterminado de incremento es uno.
6nstrucciones #pcional. 5na o m8s instrucciones entre &or ( @e4t
6ue se ejecutan un n)mero especifcado de ,eces.
Comentarios
l argumento incremento puede ser positi,o o negati,o. l ,alor del
argumento incremento determina la manera en 6ue se procesa el 1ucle'
como se muestra a continuacinU
Valor l 1ucle se
ejcuta si
>ositi,o o 0 contador m` ,n
@egati,o contador i` ,n
5na ,e2 6ue se inicia el 1ucle ( se <an ejecutado todas las instrucciones
en el 1ucle' incremento se suma a contador. n este punto' las
instrucciones del 1ucle se pueden ejecutar de nue,o 9si se cumple la
misma prue1a 6ue caus 6ue el 1ucle se ejecutara inicialmente: o 1ien
se sale del 1ucle ( la ejecucin contin)a con la instruccin 6ue sigue a la
instruccin @e4t.
$ugerencia Cam1iar el ,alor de contador mientras est8 dentro de un
1ucle <ace di.?cil su lectura ( depuracin.
$e pueden colocar en el 1ucle cual6uier n)mero de instrucciones 4it
&or como una manera alternati,a de salir del mismo. %a instruccin 4it
&or' 6ue se utili2a a menudo en la e,aluacin de alguna condicin 9por
1*8

ejemplo' I....7<en:' transfere el control a la instruccin 6ue sigue
inmediatamente a la instruccin @e4t.
$e pueden anidar 1ucles &or...@e4t' colocando un 1ucle &or...@e4t dentro
de otro. >ara ello' proporcione a cada 1ucle un nom1re de ,aria1le )nico
como su contador. %a siguiente construccin es correctaU
&or I ` 1 7o 10
&or f ` 1 7o 10
&or I ` 1 7o 10
...
@e4t I
@e4t f
@e4t I
@ota $i omite un contador en una instruccin @e4t' la ejecucin
contin)a como si se <u1iera incluido. $e produce un error si se
encuentra una instruccin @e4t antes de su instruccin &or
correspondiente.
&orat 0&unci!n1
De,uel,e un tipo Variant 9$tring: 6ue contiene una e4presin
.ormateada de acuerdo a las instrucciones contenidas en una e4presin
de .ormato.
$inta4is
&ormat9e%presinJ' (ormatoJ' primerd#adesemanaJ' primerd#adeaoLLL:
%a sinta4is de la .uncin &ormat consta de las siguientes partesU
>arte Descripcin
e%presin =e6uerido. Cual6uier e4presin ,8lida.
(ormato #pcional. 5na e4presin de .ormato defnida por el
1*9

usuario o con nom1re ,8lida.
primerd#adesem
ana
#pcional. 5na constante 6ue especifca el primer d?a de
la semana.
primerd#adeao #pcional. 5na constante 6ue especifca la primera
semana del a-o.
Valores
l argumento primerd#adesemana tiene estos ,aloresU
Constante Valor Descripcin
,15se$(ste
m
0 5tili2a el ,alor de A>I @%$.
,1$unda( 1 Domingo 9predeterminado:
,1;onda( 2 %unes
,17uesda( * ;artes
,1Hednesd
a(
! ;i+rcoles
,17<ursda( / fue,es
,1&rida( " Viernes
,1$aturda( 3 $81ado
1!0

l argumento primerd#adeao tiene estos ,aloresU
Constante Valor Descripcin
,15se$(stem 0 5tili2a el ,alor de A>I @%$.
,1&irstfan1 1 Comien2a con la semana donde est8 el 1 de
enero 9predeterminado:.
,1&irst&ourDa(s 2 Comien2a con la primera semana del a-o
6ue tenga cuatro d?as como m?nimo.
,1&irst&ullHeeS * Comien2a con la primera semana completa
del a-o.
Comentarios
>ara dar .ormatp 0aga esto
@)meros 5tilice .ormatos num+ricos con nom1re predefnidos o
cree .ormatos num+ricos defnidos por el usuario.
&ec<as ( <oras 5tilice .ormatos de .ec<aV<ora con nom1re
predefnidos o cree .ormatos de .ec<aV<ora defnidos
por el usuario.
@)meros seriales
de .ec<a ( <ora
5tilice .ormatos de .ec<a ( <ora o .ormatos
num+ricos.
Cadenas Cree sus propios .ormatos de cadena defnidos por el
usuario.
1!1

$i intenta dar .ormato a un n)mero sin especifcar (ormato' &ormat
proporciona una .uncionalidad similar a la de la .uncin $tr. $in
em1argo' los n)meros positi,os a los 6ue se les <a dado .ormato de
cadena de caracteres mediante &ormat carecen del espacio inicial
reser,ado para mostrar el signo del ,alor' mientras 6ue los con,ertidos
utili2ando $tr conser,an el espacio inicial.
2ig"t 0&unci!n1
De,uel,e un tipo Variant 9$tring: 6ue contiene un n)mero especifcado
de caracteres del lado derec<o de una cadena.
$inta4is
=ig<t9string3 leng&t:
%a sinta4is de la .uncin =ig<t tiene estos argumentos con nom1reU
>arte Descripcin
string =e6uerido. 4presin de cadena desde la cual se de,uel,en los
caracteres 6ue est8n m8s a la derec<a. $i string contiene @ull'
se de,uel,e @ull.
leng&t =e6uerido' un tipo Variant 9%ong:. 4presin num+rica 6ue
indica cu8ntos caracteres se ,an a de,ol,er. $i es 0' se
de,uel,e una cadena de longitud cero 9OO:. $i es ma(or o igual
al n)mero de caracteres en string' se de,uel,e la cadena
completa.
Comentarios
>ara determinar el n)mero de caracteres en string' utilice la .uncin %en.
@ota 5tilice la .uncin =ig<tB con datos de 1(te incluidos en una
cadena. n lugar de especifcar el n)mero de caracteres para de,ol,er'
longitud especifca el n)mero de 1(tes.
&oratos nu$ricos de%nidos por el usuario 0)unci!n
&orat1
%a ta1la siguiente identifca los caracteres 6ue puede utili2ar para crear
.ormatos defnidos por el usuarioU
1!2

Car8cter Descripcin
@inguno ;uestra el n)mero sin .ormato.
90:
;arcador de posicin de d?gito. ;uestra un d?gito o un cero.
$i la e4presin tiene un d?gito en la posicin donde aparece
el 0 en la cadena de .ormato' se muestra el d?gitoW de lo
contrario' se muestra un cero en esa posicin.
$i el n)mero tiene menos d?gitos 6ue ceros 9a cual6uier lado
del separador decimal: en la e4presin de .ormato' se
muestran los ceros a la i26uierda o a la derec<a. $i el
n)mero tiene m8s d?gitos a la derec<a del separador
decimal 6ue ceros <a( a la derec<a del separador decimal
en la e4presin de .ormato' se redondea el n)mero en
tantos lugares decimales como ceros e4istan. $i el n)mero
tiene m8s d?gitos a la i26uierda del separador decimal 6ue
ceros <a( a la i26uierda del separador decimal en la
e4presin de .ormato' se muestran los d?gitos adicionales sin
modifcacin.
9A:
;arcador de posicin de d?gito. ;uestra un d?gito o nada. $i
la e4presin tiene un d?gito en la posicin donde aparece A
en la cadena de .ormato' se muestra el d?gitoW de lo
contrario' no se muestra nada en esa posicin.
ste s?m1olo .unciona como el marcador de posicin del
d?gito 0' e4cepto en 6ue no se muestran los ceros a la
i26uierda o a la derec<a si el n)mero tiene los mismos o
menos d?gitos 6ue caracteres A <a( a cual6uier lado del
separador decimal en la e4presin de .ormato.
9.: ;arcador de posicin decimal. n algunas confguraciones
regionales' se utili2a una coma como separador decimal. l
marcador de posicin decimal determina cu8ntos d?gitos se
muestran a la i26uierda ( a la derec<a del separador
decimal. $i la e4presin de .ormato contiene slo signos de
n)mero a la i26uierda de este s?m1olo' los n)meros menores
de 1 comien2an con un separador decimal. $i se desea 6ue
siempre se muestre un cero a la i26uierda en los n)meros
.raccionarios' utilice 0 como marcador de posicin del
primer d?gito a la i26uierda del separador decimal. l
car8cter real utili2ado como marcador de posicin decimal
en la salida con .ormato depende del .ormato de n)mero
1!*

reconocido por el sistema.
9n: ;arcador de posicin de porcentaje. %a e4presin se
multiplica por 100. l car8cter de porcentaje 9n: se inserta
en la posicin donde aparece en la cadena de .ormato.
9': $eparador de millar. n algunas confguraciones regionales'
se utili2a un punto como separador de millar. l separador
de millar separa los millares de las centenas en un n)mero
6ue tiene cuatro o m8s lugares a la i26uierda del separador
decimal. $e especifca el uso est8ndar del separador de
millar si el .ormato contiene un separador de millar rodeado
por los marcadores de posicin de d?gitos 90 o A:. Dos
separadores de millar ad(acentes o un separador de millar
inmediatamente a la i26uierda del separador decimal
9aun6ue no se especif6ue un decimal: signifca Oescalar el
n)mero di,idi+ndolo por 1000' redonde8ndolo si es
necesarioO. >or ejemplo' puede utili2ar la cadena de .ormato
OAA0''O para representar 100 millones como 100. %os
n)meros menores 6ue un milln se muestran como 0. Dos
separadores de millar ad(acentes en cual6uier posicin
di.erente a la inmediatamente a la i26uierda del separador
decimal se consideran simplemente como se-al de 6ue se
est8 usando un separador de millar. l car8cter real utili2ado
como separador de millar en la salida con .ormato depende
del .ormato de n)mero reconocido por el sistema.
9U: $eparador de <ora. n algunas confguraciones regionales se
pueden utili2ar otros caracteres para representar el
separador de <ora. l separador de <ora separa <oras'
minutos ( segundos cuando los ,alores de <ora tienen
.ormato. l car8cter real utili2ado como separador de <ora
en .ormato ,iene determinado por las confguraciones del
sistema.
9V: $eparador de .ec<a. n algunas confguraciones regionales
se pueden utili2ar otros caracteres para representar el
separador de .ec<a. l separado de .ec<a separa el d?a' el
mes ( el a-o cuando los ,alores de .ec<a tienen .ormato. l
car8cter real utili2ado como separador de .ec<a en .ormato
,iene determinado por las confguraciones del sistema.
1!!

9Q E eQ
eE:
&ormato de notacin cient?fca. $i la e4presin de .ormato
contiene al menos un marcador de posicin de d?gito90 o A:
a la derec<a de Q' E' eQ o eE' el n)mero se muestra en
.ormato cient?fco ( se inserta o e entre el n)mero ( su
e4ponente. l n)mero de marcadores de posicin de d?gito a
la derec<a determina el n)mero de d?gitos en el e4ponente.
5tilice Q o eQ para colocar un signo menos junto a los
e4ponentes negati,os ( E o eE para incluir un signo m8s
junto a los e4ponentes positi,os.
Q E o 9 : ;uestra un car8cter literal. >ara mostrar un car8cter
di.erente a los enumerados' escri1a delante una 1arra
in,ersa 9X: o escr?1alo entre comillas do1les 9O O:.
9X:
;uestra el car8cter siguiente en la cadena de .ormato. >ara
mostrar un car8cter 6ue tiene un signifcado especial como
un car8cter literal' escri1a delante 1arra in,ersa 9X:. %a 1arra
in,ersa propiamente dic<a no se muestra. 5tili2ar la 1arra
in,ersa es igual 6ue poner entre comillas do1les el car8cter
siguiente. >ara mostrar una 1arra in,ersa' utilice dos 1arras
in,ersas 9XX:.
jemplos de caracteres 6ue no se pueden mostrar como
caracteres literales son los caracteres de .ormato de .ec<a (
de <ora 9a' c' d' <' m' n' p' 6' s' t' M' (' V ( U:' los caracteres
de .ormato num+rico 9A' 0' n' ' e' coma ( punto: ( los
caracteres de .ormato de cadena 9p' D' m' i ( [:.
9OABCO: ;uestra la cadena 6ue <a( entre comillas do1les 9O O:. >ara
incluir una cadena con (ormato desde el cdigo' de1e utili2ar
C<r9*!: para encerrar el te4to 9*! es el cdigo de car8cter
para las comillas do1les 9O O:.
1!/

C!digo ASCII
&undaentos de prograaci!n
Introducci!n a los procediientos
>uede simplifcar las tareas de programacin si di,ide los programas en
componentes lgicos m8s pe6ue-os. stos componentes' llamados
procedimientos3 pueden con,ertirse en 1lo6ues 18sicos 6ue le permiten
mejorar ( ampliar Visual Basic.
%os procedimientos resultan mu( )tiles para condensar las tareas
repetiti,as o compartidas' como c8lculos utili2ados .recuentemente'
manipulacin de te4to ( controles' ( operaciones con 1ases de datos.
0a( dos ,entajas principales cuando se programa con procedimientosU
%os procedimientos le permiten di,idir los programas en unidades
lgicas discretas' cada una de las cuales se puede depurar m8s
.8cilmente 6ue un programa entero sin procedimientos.
%os procedimientos 6ue se utili2an en un programa pueden actuar
como 1lo6ues de construccin de otros programas' normalmente
con pocas o ninguna modifcacin.
1!"

n Visual Basic se utili2an ,arios tipos de procedimientosU
>rocedimientos $u1 6ue no de,uel,en un ,alor.
>rocedimientos &unction 6ue de,uel,en un ,alor.
>rocedimientos >ropert( 6ue pueden de,ol,er ( asignar ,alores'
as? como esta1lecer re.erencias a o1jetos.
>ara o1tener m8s in.ormacin %os procedimientos >ropert( se
descri1en en O>rogramar con o1jetosO.
>ara aprender m8s acerca de los procedimientos $u1 ( &unction' ,ea los
temas siguientesU
>rocedimientos $u1 An8lisis de los procedimientos $u1 ( cmo
usarlos.
>rocedimientos &unction Introduccin a los procedimientos
&unction ( cmo usarlos.
7ra1ajar con procedimientos Introduccin a las llamadas a
procedimientos desde una aplicacin.
>asar argumentos a procedimientos $e muestra cmo pasar
datos a procedimientos mediante argumentos.
5rocediientos Su*
5n procedimiento $u1 es un 1lo6ue de cdigo 6ue se ejecuta como
respuesta a un e,ento. Al di,idir el cdigo de un mdulo en
procedimientos $u1' es m8s sencillo encontrar o modifcar el cdigo de
la aplicacin.
%a sinta4is de un procedimiento $u1 es la siguienteU
J>ri,ateh>u1licLJ$taticL$u1 nombre4rocedimiento 9argumentos:
instrucciones
nd $u1
Cada ,e2 6ue se llama al procedimiento se ejecutan las instrucciones
6ue <a( entre $u1 ( nd $u1. $e pueden colocar los procedimientos $u1
en mdulos est8ndar' mdulos de clase ( mdulos de .ormulario. De
.orma predeterminada' los procedimientos $u1 son >u1lic en todos los
mdulos' lo 6ue signifca 6ue se les puede llamar desde cual6uier parte
de la aplicacin.
1!3

%os argumentos de un procedimiento son como las declaraciones de
,aria1lesW se declaran ,alores 6ue se pasan desde el procedimiento 6ue
<ace la llamada.
=esulta mu( )til en Visual Basic distinguir entre dos tipos de
procedimientos $u1' procedimientos generales ( procedimientos de
evento.
>rocedimientos generales
5n procedimiento general indica a la aplicacin cmo reali2ar una tarea
espec?fca. 5na ,e2 6ue se defne un procedimiento general' se le de1e
llamar espec?fcamente desde la aplicacin. >or el contrario' un
procedimiento de e,ento permanece inacti,o <asta 6ue se le llama para
responder a e,entos pro,ocados por el usuario o desencadenados por el
sistema.
B>or 6u+ crear procedimientos generalesC 5na ra2n es 6ue muc<os
procedimientos de e,ento distintos pueden necesitar 6ue se lle,en a
ca1o las mismas acciones. s una 1uena estrategia de programacin
colocar las instrucciones comunes en un procedimiento distinto 9un
procedimiento general: ( <acer 6ue los procedimientos de e,ento lo
llamen. sto elimina la necesidad de duplicar cdigo ( tam1i+n <ace 6ue
la aplicacin sea m8s .8cil de mantener. >or ejemplo' la aplicacin de
ejemplo VC= utili2a un procedimiento general al 6ue llaman los e,entos
ClicS de distintos 1otones de despla2amiento. %a fgura /.3 muestra la
utili2acin de un procedimiento general. l cdigo de los e,entos ClicS
llama al procedimiento $u1 Button;anager 6ue ejecuta su propio cdigo
( de,uel,e el control al procedimiento de e,ento ClicS.
&igura /.3 Cmo llaman los procedimientos de e,ento a procedimientos
generales
5rocediientos de e#ento
Cuando un o1jeto en Visual Basic reconoce 6ue se <a producido un
e,ento' llama autom8ticamente al procedimiento de e,ento utili2ando el
1!8

nom1re correspondiente al e,ento. Como el nom1re esta1lece una
asociacin entre el o1jeto ( el cdigo' se dice 6ue los procedimientos de
e,ento est8n adjuntos a .ormularios ( controles.
5n procedimiento de e,ento de un control com1ina el nom1re real
del control 9especifcado en la propiedad @ame:' un car8cter de
su1ra(ado 9_: ( el nom1re del e,ento. >or ejemplo' si desea 6ue
un 1otn de comando llamado cmd>la( llame a un procedimiento
de e,ento cuando se <aga clic en +l' utilice el procedimiento
cmd>la(_ClicS.
5n procedimiento de e,ento de un .ormulario com1ina la pala1ra
O&ormO' un car8cter de su1ra(ado ( el nom1re del e,ento. $i desea
6ue un .ormulario llame a un procedimiento de e,ento cuando se
<ace clic en +l' utilice el procedimiento &orm_ClicS. 9Como los
controles' los .ormularios tienen nom1res )nicos' pero no se
utili2an en los nom1res de los procedimientos de e,ento.: $i est8
utili2ando el .ormulario ;DI' el procedimiento de e,ento com1ina
la pala1ra O;DI&ormO' un car8cter de su1ra(ado ( el nom1re del
e,ento' como ;DI&orm_%oad.
7odos los procedimientos de e,ento utili2an la misma sinta4is general.
$inta4is de un e,ento de control $inta4is de un e,ento de .ormulario
>ri,ate $u1
nombrecontrol7ombreevento
9argumentos :
instrucciones
nd $u1
>ri,ate $u1 &orm_nombreevento
9argumentos:
instrucciones
nd $u1
Aun6ue puede escri1ir procedimientos de e,ento nue,os' es m8s
sencillo usar los procedimientos de cdigo 6ue .acilita Visual Basic' 6ue
inclu(en autom8ticamente los nom1res correctos de procedimiento.
>uede seleccionar una plantilla en la ,entana ditor de cdigo si
selecciona un o1jeto en el cuadro #1jeto ( selecciona un procedimiento
en el cuadro >rocedimiento.
7am1i+n es con,eniente esta1lecer la propiedad @ame de los controles
antes de empe2ar a escri1ir los procedimientos de e,ento para los
mismos. $i cam1ia el nom1re de un control tras ,incularle un
procedimiento' de1er8 cam1iar tam1i+n el nom1re del procedimiento
para 6ue coincida con el nue,o nom1re del control. De lo contrario'
1!9

Visual Basic no ser8 capa2 de <acer coincidir el control con el
procedimiento. Cuando el nom1re de un procedimiento no coincide con
el nom1re de un control' se con,ierte en un procedimiento general.
>ara o1tener m8s in.ormacin Visual Basic reconoce una gran ,ariedad
de e,entos para cada clase de .ormulario ( control. >ara o1tener una
e4plicacin de los e,entos' ,ea la )e(erencia del lenguaje.
5rocediientos &unction
Visual Basic inclu(e .unciones incorporadas o intr?nsecas' como $6r' Cos
o C<r. Adem8s' puede usar la instruccin &unction para escri1ir sus
propios procedimientos &unction.
%a sinta4is de un procedimiento &unction es la siguienteU
J>ri,ateh>u1licLJ$taticL&unction nombre4rocedimiento 9argumentos: JAs
tipoL
instrucciones
nd &unction
Al igual 6ue un procedimiento $u1' un procedimiento &unction es un
procedimiento di.erente 6ue puede tomar argumentos' reali2ar una serie
de instrucciones ( cam1iar el ,alor de los argumentos. A di.erencia de
los procedimientos $u1' los procedimientos &unction pueden de,ol,er un
,alor al procedimiento 6ue reali2a la llamada. 0a( tres di.erencias entre
los procedimientos $u1 ( &unctionU
Peneralmente' se llama a una .uncin inclu(endo el nom1re ( los
argumentos del procedimiento en la parte derec<a de una
instruccin o e4presin ma(or 9valor)etorno 8 (uncin9::.
%os procedimientos &unction tienen tipos de datos' al igual 6ue las
,aria1les. sto determina el tipo del ,alor de,uelto. 9n ausencia
de la cl8usula As' el tipo es el tipo predeterminado Variant.:
$e de,uel,e un ,alor asign8ndole al propio nombre4rocedimiento.
Cuando el procedimiento &unction de,uel,e un ,alor' se puede
con,ertir en parte de una e4presin ma(or.
>or ejemplo' podr?a escri1ir una .uncin 6ue calculara el tercer lado' o
<ipotenusa' de un tri8ngulo rect8ngulo' dados los ,alores de los otros
dos ladosU
&unction 0ipotenusa 9A As Integer' B As Integer: _
As $tring
1/0

0ipotenusa ` $6r9A q 2 E B q 2:
nd &unction
$e llama a un procedimiento &unction de la misma .orma 6ue a las
.unciones incorporadas en Visual BasicU
%a1el1.Caption ` 0ipotenusa9CInt97e4t1.7e4t:' CInt97e4t2.7e4t::
strG ` 0ipotenusa9Hidt<' 0eig<t:
>ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca del
procedimiento &unction' ,ea O&unction 9Instruccin:O en la )e(erencia del
lenguaje. %as t+cnicas utili2adas para llamar a todos los tipos de
procedimientos se e4plican en la seccin O%lamar a procedimientosO'
m8s adelante en este mismo cap?tulo.
7ra1ajar con procedimientos
Crear procedimientos nue,os
>ara crear un procedimiento general nue,o
scri1a el enca1e2ado de un procedimiento en la ,entana Cdigo (
presione @7=A=. l enca1e2ado del procedimiento puede ser tan
simple como $u1 o &unction seguido de un nom1re. >or ejemplo'
puede especifcar cual6uiera de los siguientesU
$u1 Actuali2ar&orm 9:
&unction #1tenerCoord 9:
Visual Basic responde completando la plantilla del nue,o
procedimiento.
$eleccionar procedimientos e4istentes
>ara ,er un procedimiento en el mdulo actual
>ara ,er un procedimiento general e4istente' seleccione
O9Peneral:O en el cuadro #1jeto de la ,entana Cdigo ( seleccione
el procedimiento en el cuadro >rocedimiento.
Yo 1ienY
>ara ,er un procedimiento de e,ento' seleccione el o1jeto
apropiado en el cuadro #1jeto de la ,entana Cdigo ( seleccione
el e,ento en el cuadro >rocedimiento.
>ara ,er un procedimiento de otro mdulo
1/1

1. n el men) Ver' elija 4aminador de o1jetos.
2. $eleccione el pro(ecto en el cuadro >ro(ectoVBi1lioteca.
*. $eleccione el mdulo en la lista Clases ( el procedimiento en la
lista ;iem1ros de.
!. lija Ver defnicin.
%lamar a procedimientos
%as t+cnicas de llamada a procedimientos ,ar?an dependiendo del tipo
de procedimiento' dnde est+ u1icado ( cmo se utilice en la aplicacin.
%as secciones siguientes descri1en cmo llamar a procedimientos $u1 (
&unction.
%lamar a procedimientos $u1
5n procedimiento $u1 difere de un procedimiento &unction en 6ue al
procedimiento $u1 no se le puede llamar mediante su nom1re en una
e4presin. %a llamada a un procedimiento $u1 es una instruccin )nica.
Adem8s' un procedimiento $u1 no de,uel,e un ,alor en su nom1re
como <ace una .uncin. $in em1argo' al igual 6ue &unction' un
procedimiento $u1 puede modifcar los ,alores de las ,aria1les 6ue se le
pasan.
0a( dos .ormas de llamar a un procedimiento $u1U
a Am1as instrucciones llaman a un $u1 denominado ;i>roc.
Call ;i>roc 9>rimerArgumento' $egundoArgumento:
;i>roc >rimerArgumento' $egundoArgumento
#1ser,e 6ue cuando utili2a la sinta4is Call' de1e poner los argumentos
entre par+ntesis. $i omite la pala1ra cla,e Call' de1er8 tam1i+n omitir
los par+ntesis alrededor de los argumentos.
Llaar a procediientos &unction
@ormalmente se llama a un procedimiento de .uncin 6ue se <a escrito
de la misma .orma en 6ue se llama a una .uncin intr?nseca de Visual
Basic como A1sW es decir' utili2ando su nom1re en una e4presinU
a %as instrucciones siguientes llamar?an a una .uncin _
a llamada 7oDec.
>rint 10 g Adec
G ` Adec
I. Adec ` 10 7<en De1ug.>rint O&uera del inter,aloO
1/2

G ` #tra&uncin910 g Adec:
7am1i+n es posi1le llamar a una .uncin igual 6ue se llama a un
procedimiento $u1. %as instrucciones siguientes llaman a la misma
.uncinU
Call \ear9@oM:
\ear @oM
Cuando llama a una .uncin de esta manera' Visual Basic desec<a el
,alor de,uelto.
%lamar a procedimientos en otros mdulos
$e puede llamar a los procedimientos p)1licos de otros mdulos desde
cual6uier parte del pro(ecto. @ecesitar8 especifcar el mdulo 6ue
contiene el procedimiento al 6ue est8 llamando. %as t+cnicas para
<acerlo ,ar?an' dependiendo de si el procedimiento est8 u1icado en un
mdulo est8ndar' de .ormulario o de clase.
>rocedimientos en .ormularios
7odas las llamadas 6ue se <acen desde .uera del mdulo de .ormulario
de1en se-alar al mdulo de .ormulario 6ue contiene el procedimiento. $i
un procedimiento llamado $ome$u1 est8 en un mdulo de .ormulario
llamado &orm1' puede llamar al procedimiento en &orm1 mediante esta
instruccinU
Call &orm1.$ome$u19argumentos:
>rocedimientos en mdulos de clase
Al igual 6ue llamar a un procedimiento en un .ormulario' llamar a un
procedimiento en un mdulo de clase re6uiere 6ue la llamada al
procedimiento est+ califcada con una ,aria1le 6ue se-ale a una
instancia de la clase. >or ejemplo' DemoClass es una instancia de una
clase llamada Class1U
Dim DemoClass as @eM Class1
DemoClass.$ome$u1
$in em1argo' a di.erencia de un .ormulario' no se puede usar el nom1re
de la clase como califcador cuando se <ace re.erencia a una instancia
de la clase. De1e declararse primero la instancia de la clase como una
,aria1le de o1jeto 9en este caso' DemoClass: ( el nom1re de la clase
de1e <acer re.erencia a ella.
1/*

>ara o1tener m8s in.ormacin >uede encontrar m8s detalles so1re
,aria1les de o1jetos ( mdulos de clase en O>rogramar con o1jetosO.
5rocediientos en !dulos est/ndar
$i el nom1re de un procedimiento es )nico' no necesita incluir el nom1re
del mdulo en la llamada. 5na llamada desde dentro o .uera del mdulo
<ar8 re.erencia a ese procedimiento )nico. 5n procedimiento es )nico si
slo aparece en un lugar.
$i dos o m8s mdulos contienen un procedimiento con el mismo
nom1re' de1e califcarlo con el nom1re del mdulo. 5na llamada a un
procedimiento com)n desde el mismo mdulo ejecuta el procedimiento
de ese mdulo. >or ejemplo' con un procedimiento llamado
Common@ame en ;odule1 ( ;odule2' una llamada a Common@ame
desde ;odule2 ejecutar8 el procedimiento Common@ame de ;odule2 (
no el procedimiento Common@ame de ;odule1.
n una llamada a un nom1re de procedimiento com)n desde otro
mdulo' de1e especifcar el mdulo del procedimiento. >or ejemplo' si
desea llamar al procedimiento Common@ame de ;odule2 desde
;odule1' utiliceU
;odule2.Common@ame9argumentos:
>asar argumentos a procedimientos
@ormalmente el cdigo de un procedimiento necesita cierta in.ormacin
so1re el estado del programa para reali2ar su tra1ajo. sta in.ormacin
consiste en ,aria1les 6ue se pasan al procedimiento cuando se le llama.
Cuando se pasa una ,aria1le a un procedimiento' se llama argumento.
7ipos de datos de los argumentos
%os argumentos de los procedimientos 6ue escri1a tienen el tipo de dato
Variant de .orma predeterminada. $in em1argo' puede declarar otros
tipos de datos para los argumentos. >or ejemplo' la .uncin siguiente
acepta una cadena ( un enteroU
&unction Fu+Comer 9D?a$emana As $tring' 0ora _
As Integer: As $tring
a De,uel,e el men) del almuer2o 1as8ndose en el d?a ( la <ora.
I. D?a$emana ` OViernesO t<en
Fu+Comer ` O>escadoO
lse
Fu+Comer ` O>olloO
1/!

nd I.
I. 0ora i ! 7<en Fu+Comer ` ODemasiado tardeO
nd &unction
>ara o1tener m8s in.ormacin Anteriormente en este cap?tulo
encontrar8 m8s detalles acerca de los tipos de datos de Visual Basic.
7am1i+n puede consultar los tipos de datos espec?fcos en la )e(erencia
del lenguaje.
>asar argumentos por ,alor
$lo se pasa una copia de la ,aria1le cuando se pasa un argumento por
,alor. $i el procedimiento cam1ia el ,alor' el cam1io a.ecta slo a la
copia ( no a la ,aria1le propiamente dic<a. 5tilice la pala1ra cla,e B(Val
para indicar un argumento pasado por ,alor.
>or ejemploU
$u1 Cuentas 9B(Val int@umCuenta as Integer:
.
. a >onga a6u? sus instrucciones.
.
nd $u1
>asar argumentos por re.erencia
>asar argumentos por re.erencia le da al procedimiento acceso al
contenido real de la ,aria1le en su u1icacin de direccin de memoria.
Como resultado' el procedimiento al 6ue se <a pasado el ,alor de la
,aria1le se puede modifcar de .orma permanente. %a .orma
predeterminada de pasar ,alores en Visual Basic es por re.erencia.
$i especifca el tipo de dato de un argumento 6ue se pasa por re.erencia'
de1e pasar un ,alor de ese tipo para el argumento. >uede eludirlo si
pasa una e4presin en ,e2 de un tipo de dato como argumento. Visual
Basic e,al)a la e4presin ( la pasa como el tipo re6uerido si puede.
%a .orma m8s sencilla de con,ertir una ,aria1le en una e4presin es
ponerla entre par+ntesis. >or ejemplo' para pasar una ,aria1le declarada
como entero a un procedimiento 6ue espera una cadena como
argumento' de1er?a <acer lo siguienteU
$u1 >rocedimientoFue%lama 9:
Dim intG As Integer
intG ` 12 g *
&oo9intG:
nd $u1
1//

$u1 &oo9Bar As $tring:
;sgBo4 Bar al ,alor de Bar es la cadena O*"O.
nd $u1
5sar argumentos opcionales
>uede especifcar argumentos a un procedimiento como opcionales si
coloca la pala1ra cla,e #ptional en la lista de argumentos. $i especifca
un argumento opcional' todos los argumentos su1siguientes de la lista
de argumentos de1en ser tam1i+n opcionales ( se de1en declarar con la
pala1ra cla,e #ptional. %os dos .ragmentos de cdigo de ejemplo 6ue se
muestran a continuacin suponen 6ue <a( un .ormulario con un 1otn
de comando ( un cuadro de lista.
>or ejemplo' este cdigo proporciona todos los argumentos como
opcionalesU
Dim str@om1re As $tring
Dim strAddress As $tring
$u1 %ist7e4t9#ptional 4 As $tring' #ptional ( _
As $tring:
%ist1.AddItem 4
%ist1.AddItem (
nd $u1
>ri,ate $u1 Command1_ClicS9:
str@om1re ` Osunom1reO
strDireccin ` 12*!/ a $e proporcionan am1os argumentos.
Call %ist7e4t9str@om1re' strDireccin:
nd $u1
$in em1argo' este cdigo no proporciona todos los argumentos como
opcionalesU
Dim str@om1re As $tring
Dim ,arDireccin As Variant
$u1 %ist7e4t94 As $tring' #ptional ( As Variant:
%ist1.AddItem 4
I. @ot Is;issing9(: 7<en
%ist1.AddItem (
nd I.
nd $u1
>ri,ate $u1 Command1_ClicS9:
str@om1re ` Osunom1reO a @o se proporciona el segundo
1/"

a argumento.
Call %ist7e4t9str@om1re:
nd $u1
n caso de 6ue no se proporcione un argumento opcional' se asigna el
argumento como un tipo Variant con el ,alor mpt(. l ejemplo anterior
muestra cmo pro1ar si se <an perdido argumentos opcionales mediante
la .uncin Is;issing.
>roporcionar un ,alor predeterminado a un argumento opcional
7am1i+n es posi1le especifcar un ,alor predeterminado para un
argumento opcional. l siguiente ejemplo de,uel,e un ,alor
predeterminado si no se pasa el argumento opcional al procedimiento
&unctionU
$u1 %ist7e4t94 As $tring' #ptional ( As _
Integer ` 12*!/:
%ist1.AddItem 4
%ist1.AddItem (
nd $u1
>ri,ate $u1 Command1_ClicS9:
str@om1re ` Osunom1reO a @o se proporciona el segundo
a argumento.
Call %ist7e4t9str@om1re: a Agrega Osunom1reO ( O12*!/O.
nd $u1
5sar un n)mero indefnido de argumentos
Peneralmente' el n)mero de argumentos en la llamada a un
procedimiento de1e ser el mismo 6ue los especifcados en el
procedimiento. 5sar la pala1ra cla,e >aramArra( le permite especifcar
6ue el procedimiento aceptar8 un n)mero ar1itrario de argumentos. so
le permite escri1ir .unciones como $umU
Dim 4 As Integer
Dim ( As Integer
Dim int$um As Integer
$u1 $um9>aramArra( int@ums9::
&or ac< 4 In int@ums
( ` ( E 4
@e4t 4
int$um ` (
nd $u1
1/3

>ri,ate $u1 Command1_ClicS9:
$um 1' *' /' 3' 8
%ist1.AddItem int$um
nd $u1
Crear instrucciones m8s sencillas mediante argumentos con nom1re
n muc<as .unciones' instrucciones ( m+todos incorporados' Visual
Basic proporciona la opcin de usar argumentos con nombre como
m+todo a1re,iado para escri1ir ,alores de argumentos. Con los
argumentos con nom1re puede proporcionar cual6uiera o todos los
argumentos' en cual6uier orden' asignando un ,alor al argumento con
nom1re. >ara ello' escri1a el nom1re del argumento ( un signo de dos
puntos seguido del signo igual ( el ,alor 9;iArgumentoU` O5nValorO: (
colocando esta asignacin en cual6uier secuencia delimitada con comas.
#1ser,e 6ue los argumentos del ejemplo siguiente est8n en orden
in,erso al de los argumentos esperadosU
&unction %ist7e4t9str@om1re As $tring' #ptional strDireccin As $tring:
%ist1.AddItem str@om1re
%ist2.AddItem strDireccin
nd $u1
>ri,ate $u1 Command1_ClicS9:
%ist7e4t strDireccinU`O12*!/O' str@om1reU`O$u nom1reO
nd $u1
sto resulta especialmente )til si sus procedimientos tienen ,arios
argumentos opcionales 6ue no siempre necesita especifcar.
Determinar el soporte de argumentos con nom1re
>ara determinar 6u+ .unciones' instrucciones ( m+todos aceptan
argumentos con nom1re' utilice la caracter?stica In.ormacin r8pida
autom8tica de la ,entana Cdigo' comprue1e el 4aminador de o1jetos
o ,ea la )e(erencia del lenguaje. 7enga en cuenta lo siguiente cuando
tra1aje con argumentos con nom1reU l
%os m+todos de o1jetos de la 1i1lioteca de o1jetos de Visual Basic
9VB: no aceptan argumentos con nom1re' ni tampoco lo <acen
todas las pala1ras cla,e del lenguaje de la 1i1lioteca de o1jetos de
Visual Basic para aplicaciones 9VBA:.
n la sinta4is' los argumentos con nom1re se muestran en negrita
( cursi,a. 7odos los dem8s argumentos se muestran slo en
cursi,a.
1/8

Importante @o puede usar argumentos con nom1re para e,itar
especifcar argumentos re6ueridos. $lo puede omitir los argumentos
opcionales. n las 1i1liotecas de o1jetos de Visual Basic 9VB: ( Visual
Basic para aplicaciones 9VBA:' el 4aminador de o1jetos pone los
argumentos opcionales entre corc<etes J L.
>ara o1tener m8s in.ormacin Vea OB(ValO' OB(=e.O' O#ptionalO (
O>aramArra(O en la )e(erencia del lenguaje.
Introducci!n a las estructuras de control
%as estructuras de control le permiten controlar el Zujo de ejecucin del
programa. $i no se controla mediante instrucciones de control de Zujo' la
lgica del programa Zuir8 por las instrucciones de i26uierda a derec<a (
de arri1a a a1ajo. Aun6ue se pueden escri1ir algunos programas
sencillos con un Zujo unidireccional ( aun6ue se puede controlar parte
del Zujo mediante operadores para regular la precedencia de las
operaciones' la ma(or parte del poder ( utilidad de un lenguaje de
programacin deri,a de su capacidad de cam1iar el orden de las
instrucciones mediante estructuras ( 1ucles.
>ara sa1er m8s acerca de estructuras de control espec?fcas' ,ea los
temas siguientesU
structuras de decisin Introduccin a las estructuras de decisin
utili2adas para 1i.urcar.
structuras de 1ucle Introduccin a las estructuras de 1ucle
utili2adas para repetir procesos.
7ra1ajar con estructuras de control Conceptos 18sicos del tra1ajo
con estructuras de control en el cdigo.
Estructuras de decisi!n
%os procedimientos de Visual Basic pueden pro1ar condiciones ('
dependiendo de los resultados de la prue1a' reali2ar di.erentes
operaciones. ntre las estructuras de decisin 6ue acepta Visual Basic se
inclu(en las siguientesU
I....7<en
I....7<en...lse
$elect Case
1/9

I....7<en
5se la estructura I....7<en para ejecutar una o m8s instrucciones
1asadas en una condicin. >uede usar la sinta4is de una l?nea o un
blo/ue de ,arias l?neasU
I. condicin 7<en instruccin
I. condicin 7<en
instrucciones
nd I.
!ondicin normalmente es una comparacin' pero puede ser cual6uier
e4presin 6ue d+ como resultado un ,alor num+rico. Visual Basic
interpreta este ,alor como 7rue o &alseW un ,alor num+rico cero es &alse
( se considera 7rue cual6uier ,alor num+rico distinto de cero. $i
condicin es 7rue' Visual Basic ejecuta todas las instrucciones 6ue
siguen a la pala1ra cla,e 7<en. >uede usar la sinta4is de una l?nea o de
,arias l?neas para ejecutar una instruccin 1asada en una condicin
9estos dos ejemplos son e6ui,alentes:U
I. cual6uier&ec<a m @oM 7<en cual6uier&ec<a ` @oM
I. cual6uier&ec<a m @oM 7<en
cual6uier&ec<a ` @oM
nd I.
#1ser,e 6ue el .ormato de una )nica l?nea de I....7<en no utili2a la
instruccin nd I.. $i desea ejecutar m8s de una l?nea de cdigo cuando
condicin sea 7rue' de1e usar la sinta4is de 1lo6ue de ,arias l?neas
I....7<en...nd I..
I. cual6uier&ec<a m @oM 7<en
cual6uier&ec<a ` @oM
7imer1.na1led ` &alse a Desacti,a el control 7imer.
nd I.
I....7<en...lse
5tilice un 1lo6ue I....7<en...lse para defnir ,arios 1lo6ues de
instrucciones' uno de los cuales se ejecutar8U
I. condicin1 7<en
Jblo/ue de instrucciones 1L
JlseI. condicin2 7<en
Jblo/ue de instrucciones 2LL ...
1"0

Jlse
Jblo/ue de instrucciones nLL
nd I.
Visual Basic e,al)a primero condicin1. $i es &alse' Visual Basic procede
a e,aluar condicin2 ( as? sucesi,amente' <asta 6ue encuentre una
condicin 7rue. Cuando encuentra una condicin 7rue' Visual Basic
ejecuta el 1lo6ue de instrucciones correspondientes ( despu+s ejecuta el
cdigo 6ue sigue a nd I.. #pcionalmente' puede incluir un 1lo6ue de
instrucciones lse' 6ue Visual Basic ejecutar8 si ninguna de las
condiciones es 7rue.
I....7<en...lseI. es un caso especial de I....7<en...lse. #1ser,e 6ue
puede tener cual6uier n)mero de cl8usulas lseI. o ninguna. >uede
incluir una cl8usula lse sin tener en cuenta si tiene o no cl8usulas
lseI..
>or ejemplo' la aplicacin podr?a reali2ar distintas acciones dependiendo
del control en 6ue se <a(a <ec<o clic de una matri2 de controles de
men)U
>ri,ate $u1 mnuCut_ClicS 9Inde4 As Integer:
I. Inde4 ` 0 7<en a Comando Cortar.
Cop(Acti,eControl a %lama a procedimientos generales.
ClearActi,eControl
lseI. Inde4 ` 1 7<en a Comando Copiar.
Cop(Acti,eControl
lseI. Inde4 ` 2 7<en a Comando Borrar.
ClearActi,eControl
lse a Comando >egar.
>asteActi,eControl
nd I.
nd $u1
#1ser,e 6ue siempre puede agregar m8s cl8usulas lseI. a la estructura
I....7<en. $in em1argo' esta sinta4is puede resultar tediosa de escri1ir
cuando cada lseI. compara la misma e4presin con un ,alor distinto.
>ara estas situaciones' puede usar la estructura de decisin $elect Case.
>ara o1tener m8s in.ormacin Vea OI....7<en...lse 9Instruccin:O en la
)e(erencia del lenguaje.
1"1

$elect Case
Visual Basic proporciona la estructura $elect Case como alternati,a a
I....7<en...lse para ejecutar selecti,amente un 1lo6ue de instrucciones
entre ,arios 1lo6ues de instrucciones. %a instruccin $elect Case o.rece
posi1ilidades similares a la instruccin I....7<en...lse' pero <ace 6ue el
cdigo sea m8s legi1le cuando <a( ,arias opciones.
%a estructura $elect Case .unciona con una )nica e4presin de prue1a
6ue se e,al)a una ,e2 solamente' al principio de la estructura. Visual
Basic compara el resultado de esta e4presin con los ,alores de cada
Case de la estructura. $i <a( una coincidencia' ejecuta el 1lo6ue de
instrucciones asociado a ese CaseU
$elect Case e%presin4rueba
JCase listaE%presiones1
Jblo/ue de instrucciones 1LL
JCase listaE%presiones2
Jblo/ue de instrucciones 2LL
.
.
.
JCase lse
Jblo/ue de instrucciones nLL
nd $elect
Cada listaE%presiones es una lista de uno o m8s ,alores. $i <a( m8s de
un ,alor en una lista' se separan los ,alores con comas. Cada blo/ue de
instrucciones contiene cero o m8s instrucciones. $i m8s de un Case
coincide con la e4presin de prue1a' slo se ejecutar8 el 1lo6ue de
instrucciones asociado con la primera coincidencia. Visual Basic ejecuta
las instrucciones de la cl8usula 9opcional: Case lse si ning)n ,alor de la
lista de e4presiones coincide con la e4presin de prue1a.
>or ejemplo' suponga 6ue agrega otro comando al men) dicin en el
ejemplo I....7<en...lse. >odr?a agregar otra cl8usula lseI. o podr?a
escri1ir la .uncin con $elect CaseU
>ri,ate $u1 mnuCut_ClicS 9Inde4 As Integer:
$elect Case Inde4
Case 0 a Comando Cortar.
Cop(Acti,eControl a %lama a procedimientos generales.
ClearActi,eControl
Case 1 a Comando Copiar.
Cop(Acti,eControl
1"2

Case 2 a Comando Borrar.
ClearActi,eControl
Case * a Comando >egar.
>asteActi,eControl
Case lse
.rm&ind.$<oM a ;uestra el cuadro de di8logo Buscar.
nd $elect
nd $u1
#1ser,e 6ue la estructura $elect Case e,al)a una e4presin cada ,e2 al
principio de la estructura. >or el contrario' la estructura I....7<en...lse
puede e,aluar una e4presin di.erente en cada instruccin lseI.. $lo
puede sustituir una estructura I....7<en...lse con una estructura $elect
Case si la instruccin I. ( cada instruccin lseI. e,al)a la misma
e4presin.
Estructuras de *ucle
%as estructuras de 1ucle le permiten ejecutar una o m8s l?neas de cdigo
repetidamente. %as estructuras de 1ucle 6ue acepta Visual Basic sonU
Do...%oop
&or...@e4t
&or ac<...@e4t
Do...%oop
5tilice el 1ucle Do para ejecutar un 1lo6ue de instrucciones un n)mero
indefnido de ,eces. 0a( algunas ,ariantes en la instruccin Do...%oop'
pero cada una e,al)a una condicin num+rica para determinar si
contin)a la ejecucin. Como ocurre con I....7<en' la condicin de1e ser
un ,alor o una e4presin 6ue d+ como resultado &alse 9cero: o 7rue
9distinto de cero:.
n el ejemplo de Do...%oop siguiente' las instrucciones se ejecutan
siempre ( cuando condicin sea 7rueU
Do H<ile condicin
instrucciones
%oop
Cuando Visual Basic ejecuta este 1ucle Do' primero e,al)a condicin. $i
condicin es &alse 9cero:' se salta todas las instrucciones. $i es 7rue
1"*

9distinto de cero:' Visual Basic ejecuta las instrucciones' ,uel,e a la
instruccin Do H<ile ( prue1a la condicin de nue,o.
>or tanto' el 1ucle se puede ejecutar cual6uier n)mero de ,eces'
siempre ( cuando condicin sea distinta de cero o 7rue. @unca se
ejecutan las instrucciones si condicin es &alse inicialmente. >or
ejemplo' este procedimiento cuenta las ,eces 6ue se repite una cadena
de destino dentro de otra cadena repitiendo el 1ucle tantas ,eces como
se encuentre la cadena de destinoU
&unction ContarCadenas 9cadenalarga' destino:
Dim posicin' contador
posicin ` 1
Do H<ile In$tr9posicin' cadenalarga' destino:
posicin ` In$tr9posicin' cadenalarga' destino: _
E 1
contador ` contador E 1
%oop
ContarCadenas ` contador
nd &unction
$i la cadena de destino no est8 en la otra cadena' In$tr de,uel,e 0 ( no
se ejecuta el 1ucle.
#tra ,ariante de la instruccin Do...%oop ejecuta las instrucciones
primero ( prue1a condicin despu+s de cada ejecucin. sta ,ariacin
garanti2a al menos una ejecucin de instruccionesU
Do
instrucciones
%oop H<ile condicin
0a( otras dos ,ariantes an8logas a las dos anteriores' e4cepto en 6ue
repiten el 1ucle siempre ( cuando condicin sea &alse en ,e2 de 7rue.
0ace el 1ucle cero o m8s
,eces
0ace el 1ucle al menos una
,e2
Do 5ntil condicin
instrucciones
%oop
Do
instrucciones
%oop 5ntil condicin
1"!

&or666Ne,t
%os 1ucles Do .uncionan 1ien cuando no se sa1e cu8ntas ,eces se
necesitar8 ejecutar las instrucciones del 1ucle. $in em1argo' cuando se
sa1e 6ue se ,an a ejecutar las instrucciones un n)mero determinado de
,eces' es mejor elegir el 1ucle &ord@e4t. A di.erencia del 1ucle Do' el
1ucle &or utili2a una ,aria1le llamada contador 6ue incrementa o reduce
su ,alor en cada repeticin del 1ucle. %a sinta4is es la siguienteU
&or contador ` iniciar 7o ,nali.ar J$tep incrementoL
instrucciones
Ne,t 7contador8
%os argumentos contador' iniciar' ,nali.ar e incremento son todos
num+ricos.
@ota l argumento incremento puede ser positi,o o negati,o. $i
incremento es positi,o' iniciar de1e ser menor o igual 6ue ,nali.ar o no
se ejecutar8n las instrucciones del 1ucle. $i incremento es negati,o'
iniciar de1e ser ma(or o igual 6ue ,nali.ar para 6ue se ejecute el cuerpo
del 1ucle. $i no se esta1lece $tep' el ,alor predeterminado de
incremento es 1.
Al ejecutar el 1ucle &or' Visual BasicU
1. sta1lece contador al mismo ,alor 6ue iniciar.
2. Comprue1a si contador es ma(or 6ue ,nali.ar. $i lo es' Visual
Basic sale del 1ucle.
9$i incremento es negati,o' Visual Basic comprue1a si contador es
menor 6ue ,nali.ar.:
*. jecuta instrucciones.
!. Incrementa contador en 1 o en instrucciones' si se especifc.
/. =epite los pasos 2 a !.
ste cdigo imprime los nom1res de todas las .uentes de pantalla
disponi1lesU
>ri,ate $u1 &orm_ClicS 9:
Dim I As Integer
&or i ` 0 7o $creen.&ontCount
>rint $creen.&onts9i:
1"/

@e4t
nd $u1
n la aplicacin de ejemplo VC=' el procedimiento 0ig<lig<tButton utili2a
un 1ucle &or...@e4t para pasar por la coleccin de controles del
.ormulario VC= ( mostrar el control $<ape apropiadoU
$u1 0ig<lig<tButton9;(Control As Variant:
Dim i As Integer
&or i ` 0 7o .rmVC=.Controls.Count Q 1
I. 7(pe#. .rmVC=.Controls9i: Is $<ape 7<en
I. .rmVC=.Controls9i:.@ame ` ;(Control 7<en
.rmVC=.Controls9i:.Visi1le ` 7rue
lse
.rmVC=.Controls9i:.Visi1le ` &alse
nd I.
nd I.
@e4t
nd $u1
&or ac<...@e4t
l 1ucle &or ac<...@e4t es similar al 1ucle &or...@e4t' pero repite un
grupo de instrucciones por cada elemento de una coleccin de o1jetos o
de una matri2 en ,e2 de repetir las instrucciones un n)mero especifcado
de ,eces. sto resulta especialmente )til si no sa1e cu8ntos elementos
<a( en la coleccin.
0e a6u? la sinta4is del 1ucle &or ac<...@e4tU
&or ac< elemento In grupo
instrucciones
@e4t elemento
>or ejemplo' el siguiente procedimiento $u1 a1re Bi1lio.md1 ( agrega el
nom1re de cada ta1la a un cuadro de lista.
$u1 %ist7a1leDe.s9:
Dim o1jD1 As Data1ase
Dim ;(7a1leDe. as 7a1leDe.
$et o1jD1 ` #penData1ase9OcUX,1X1i1lio.md1O' _
7rue' &alse:
&or ac< ;(7a1leDe. In o1jD1.7a1leDe.s9:
%ist1.AddItem ;(7a1leDe..@ame
@e4t ;(7a1leDe.
nd $u1
1""

7enga en cuenta las restricciones siguientes cuando utilice &or
ac<...@e4tU
>ara las colecciones' elemento slo puede ser una ,aria1le Variant'
una ,aria1le #1ject gen+rica o un o1jeto mostrado en el
4aminador de o1jetos.
>ara las matrices' elemento slo puede ser una ,aria1le Variant.
@o puede usar &or ac<...@e4t con una matri2 de tipos defnidos
por el usuario por6ue un Variant no puede contener un tipo
defnido por el usuario.
7ra1ajar con estructuras de control
Estructuras de control anidadas
>uede colocar estructuras de control dentro de otras estructuras de
control 9como un 1lo6ue I....7<en dentro de un 1ucle &or...@e4t:. $e dice
6ue una estructura de control colocada dentro de otra estructura de
control est8 anidada.
>uede anidar las estructuras de control en Visual Basic en tantos ni,eles
como desee. s una pr8ctica com)n crear estructuras de decisin
anidadas ( estructuras de 1ucle m8s legi1les sangrando el cuerpo de la
estructura de decisin o de 1ucle.
>or ejemplo' este procedimiento imprime todos los nom1res de .uentes
comunes de la impresora ( de la pantallaU
>ri,ate $u1 &orm_ClicS9:
Dim $&ont' >&ont
&or ac< $&ont In $creen.&onts9:
&or ac< >&ont In >rinter.&onts9:
I. $&ont ` >&ont 7<en
>rint $&ont
nd I.
@e4t >&ont
@e4t $&ont
nd $u1
#1ser,e 6ue el primer @e4t cierra el 1ucle &or interior ( 6ue el )ltimo &or
cierra el 1ucle &or e4terior. Del mismo modo' en instrucciones I.
anidadas' las instrucciones nd I. se aplican autom8ticamente a la
anterior instruccin I. m8s cercana. %as estructuras Do...%oop anidadas
.uncionan de una .orma parecidaW la instruccin %oop m8s interior
coincide con la instruccin Do m8s interior.
1"3

$alir de una estructura de control
%a instruccin 4it le permite salir directamente de un 1ucle &or' un
1ucle Do' un procedimiento $u1 o un procedimiento &unction. %a sinta4is
de la instruccin 4it es sencillaU 4it &or puede aparecer tantas ,eces
como sea necesario dentro de un 1ucle &or ( 4it Do puede aparecer
tantas ,eces como sea necesario dentro de un 1ucle DoU
&or contador ` iniciar 7o ,nali.ar J$tep incrementoL
Jblo/ue de instruccionesL
J4it &orL
Jblo/ue de instruccionesL
@e4t JcontadorJ' contadorL J'...LL
Do JkH<ile h 5ntill condicinL
Jblo/ue de instruccionesL
J4it DoL
Jblo/ue de instruccionesL
%oop
%a instruccin 4it Do .unciona con todas las ,ariantes de la sinta4is del
1ucle Do.
4it &or ( 4it Do son mu( )tiles (a 6ue' algunas ,eces' resulta
apropiado salir inmediatamente de un 1ucle sin reali2ar m8s iteraciones
o instrucciones dentro del 1ucle. >or ejemplo' en el ejemplo anterior 6ue
imprim?a las .uentes comunes de la impresora ( de la pantalla' el cdigo
sigue comparando las .uentes de impresora contra una .uente de
pantalla aun6ue se <a(a encontrado una coincidencia con una .uente de
impresora anterior. 5na ,ersin m8s efciente de la .uncin saldr?a del
1ucle tan pronto como se encontrara una coincidenciaU
>ri,ate $u1 &orm_ClicS9:
Dim $&ont' >&ont
&or ac< $&ont In $creen.&onts9:
&or ac< >&ont In >rinter.&onts9:
I. $&ont ` >&ont 7<en
>rint $.ont
4it &or a $ale del 1ucle interior.
nd I.
@e4t >&ont
@e4t $&ont
nd $u1
1"8

Como muestra este ejemplo' la instruccin 4it aparece ,arias ,eces
dentro de una instruccin I. o una instruccin $elect Case anidada en el
1ucle.
Cuando utilice la instruccin 4it para salir de un 1ucle' el ,alor de la
,aria1le contador difere' dependiendo de cmo <a(a salido del 1ucleU
Cuando termina un 1ucle' la ,aria1le contador contiene el ,alor
del l?mite superior m8s el paso.
Cuando sale de un 1ucle prematuramente' la ,aria1le contador
conser,a su ,alor seg)n las reglas usuales del alcance.
Cuando sale antes del fnal de una coleccin' la ,aria1le contador
contiene @ot<ing si se trata de un tipo de dato #1ject ( mpt( si
es un tipo de dato Variant.
Salir de un procediiento Su* o &unction
7am1i+n puede salir de un procedimiento desde una estructura de
control. %a sinta4is de 4it $u1 ( 4it &unction es similar a la de 4it &or
( 4it Do de la seccin anterior' O$alir de una estructura de controlO. 4it
$u1 puede aparecer tantas ,eces como sea necesario' en cual6uier
parte del cuerpo de un procedimiento $u1. 4it &unction puede aparecer
tantas ,eces como se necesite' en cual6uier parte del cuerpo de un
procedimiento &unction.
4it $u1 ( 4it &unction son mu( )tiles cuando el procedimiento <a
reali2ado todo lo 6ue ten?a 6ue <acer ( se 6uiere ,ol,er
inmediatamente. >or ejemplo' si desea modifcar el ejemplo anterior
para 6ue imprima slo la primera .uente com)n de impresora ( de
pantalla 6ue encuentre' podr?a usar 4it $u1U
>ri,ate $u1 &orm_ClicS9:
Dim $&ont' >&ont
&or ac< $&ont In $creen.&onts9:
&or ac< >&ont In >rinter.&onts9:
I. $&ont ` >&ont 7<en
>rint $.ont
4it $u1 a $ale del procedimiento.
nd I.
@e4t >&ont
@e4t $&ont
nd $u1
1"9

Especi%caciones, liitaciones y )oratos de arc"i#os
de Visual Basic
n este ap+ndice se descri1en los re6uisitos de sistema' las limitaciones
de un pro(ecto de Visual Basic' los tipos de arc<i,os 6ue se pueden
incluir en el pro(ecto de Visual Basic ( las descripciones de los arc<i,os
de .ormulario 9..rm: ( de pro(ecto 9.,1p:.
@ota A pesar de 6ue muc<as de estas limitaciones se descri1en en
t+rminos de un n)mero espec?fco' tenga en cuenta 6ue otras
condiciones 9como la memoria disponi1le ( los recursos del sistema:
pueden imponer una restriccin antes de 6ue se llegue a ese l?mite.
7emas
=e6uisitos del sistema para aplicaciones de Visual Basic
=e6uisitos del sistema para las aplicaciones creadas en Visual
Basic.
%imitaciones de los pro(ectos
%imitaciones 6ue restringen la .orma de escri1ir cdigo' el n)mero
de controles 6ue puede usar en una aplicacin o la manera en 6ue
se administra la entrada de datos.
&ormatos de arc<i,os de pro(ecto
%os arc<i,os de tiempo de dise-o ( de ejecucin 6ue se pueden
incluir en el pro(ecto de Visual Basic.
structuras de .ormularios
Descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto
9.,1p:.
Liitaciones de los proyectos
5n )nico pro(ecto puede contener <asta *2.000 OidentifcadoresO
9cual6uier pala1ra cla,e no reser,ada:' 6ue inclu(en entre otros
.ormularios' controles' mdulos' ,aria1les' constantes' procedimientos'
.unciones ( o1jetos. #1ser,e 6ue el n)mero real de identifcadores se
limita a la memoria disponi1le.
%os nom1res de ,aria1les en Visual Basic no pueden tener m8s de 2//
caracteres ( los nom1res de .ormularios' controles' mdulos ( clases
130

pueden tener un m84imo de !0 caracteres. Visual Basic no impone
ning)n l?mite en cuanto al n)mero de o1jetos distintos de un pro(ecto.
&ormatos de arc<i,os de pro(ecto
;icroso.t Visual Basic utili2a ( crea una serie de arc<i,os tanto en
tiempo de dise-o como en tiempo de ejecucin. %os arc<i,os 6ue el
pro(ecto o la aplicacin re6uerir8n dependen de su alcance (
.uncionalidad.
4tensiones de arc<i,os de pro(ecto
Visual Basic crea ,arios arc<i,os cuando se crea ( compila un pro(ecto.
stos se pueden di,idir como sigueU tiempo de dise-o' otros desarrollos
( tiempo de ejecucin.
%os arc<i,os de tiempo de dise-o son los ladrillos de su pro(ectoU por
ejemplo' mdulos de Basic 9.1as: ( mdulos de .ormulario 9..rm:.
#tros procesos ( .unciones del entorno de desarrollo de Visual Basic
crean di,ersos arc<i,osU por ejemplo' arc<i,os de dependencias del
Asistente de empa6uetado ( distri1ucin 9.dep:.
Arc<i,os ,arios ( de tiempo de dise-o
%a siguiente ta1la muestra todos los arc<i,os de tiempo de dise-o (
otros arc<i,os 6ue se pueden crear al desarrollar una aplicacinU
4tensin Descripcin
.1as ;dulo de Basic
.cls ;dulo de clase
.ctl Arc<i,o de control de usuario
.ct4 Arc<i,o 1inario de control de usuario
.dca Cac<+ de dise-ador acti,o
.dd. Arc<i,o de in.ormacin CAB del Asistente de
empa6uetado ( distri1ucin
131

.dep Arc<i,o de dependencias del Asistente de empa6uetado (
distri1ucin
.do1 Arc<i,o de .ormulario de documento Acti,eG
.do4 Arc<i,o 1inario de .ormulario de documento Acti,eG
.dsr Arc<i,o de dise-ador acti,o
.ds4 Arc<i,o 1inario de dise-ador acti,o
.dMs Arc<i,o de secuencia de guiones del Asistente para
despliegue
..rm Arc<i,o de .ormulario
..r4 Arc<i,o 1inario de .ormulario
.log Arc<i,o de registro de errores de carga
.oca Arc<i,o de cac<+ de 1i1lioteca de tipos de controles
.pag Arc<i,o de p8gina de propiedades
.pg4 Arc<i,o 1inario de p8gina de propiedades
.res Arc<i,o de recursos
.tl1 Arc<i,o 7(pe%i1 de Automati2acin remota
.,1g Arc<i,o de pro(ecto de grupo de Visual Basic
.,1l Arc<i,o de control de licencia
.,1p Arc<i,o de pro(ecto de Visual Basic
.,1r Arc<i,o de registro de Automati2acin remota
132

.,1M Arc<i,o de espacio de tra1ajo de pro(ecto de Visual Basic
.,12 Arc<i,o de inicio del Asistente
.Mct >lantilla 07;% de clase de He1.
Arc<i,os de tiempo de ejecucin
Al compilar la aplicacin' todos los arc<i,os necesarios de tiempo de
ejecucin se inclu(en en los arc<i,os ejecuta1les de tiempo de
ejecucin. %a siguiente ta1la muestra los arc<i,os de tiempo de
ejecucinU
4tensi
n
Descripcin
.dll Componente Acti,eG en
proceso
.e4e Arc<i,o ejecuta1le o
componente Acti,eG
.oc4 Control Acti,eG
.,1d Arc<i,o de estado de
documento Acti,eG
.Mct >lantilla 07;% de clase de He1
Con#enciones de codi%caci!n de Visual Basic
ste ap+ndice presenta un conjunto de con,enciones de codifcacin 6ue
sugerimos para los programas de Visual Basic.
%as con,enciones de codifcacin son pautas de programacin 6ue no
est8n en.ocadas a la lgica del programa' sino a su estructura (
apariencia .?sica. &acilitan la lectura' comprensin ( mantenimiento del
cdigo. %as con,enciones de codifcacin pueden incluirU
13*

Con,enciones de nom1res para o1jetos' ,aria1les (
procedimientos.
&ormatos estandari2ados para eti6uetar ( comentar el cdigo.
Instrucciones de espaciado' .ormato ( sangr?a.
n las secciones siguientes se e4plica cada una de estas 8reas ( se dan
ejemplos de su uso correcto.
7emas
B>or 6u+ e4isten las con,enciones de codifcacinC
%a ra2n principal de usar un conjunto co<erente de con,enciones
de codifcacin es estandari2ar la estructura ( el estilo de
codifcacin de una aplicacin de .orma 6ue el autor ( otras
personas puedan leer ( entender el cdigo .8cilmente.
Con,enciones de nom1res de o1jetos
%os o1jetos de1en lle,ar un prefjo co<erente 6ue .acilite la
identifcacin del tipo de o1jeto. n esta seccin se inclu(e una lista
de las con,enciones recomendadas para controles' o1jetos de
acceso a datos ( men)s.
Con,enciones de nom1res de constantes ( ,aria1les
ste tema inclu(e una lista de las con,enciones recomendadas
para las constantes ( ,aria1les permitidas por Visual Basic. 7am1i+n
e4plica cuestiones relacionadas con la identifcacin del tipo de
datos ( su alcance.
Con,enciones de codifcacin estructurada
Adem8s de las con,enciones de nom1res' las con,enciones de
codifcacin estructurada' como comentarios al cdigo ( sangr?a
co<erente' pueden mejorar muc<o la legi1ilidad del cdigo. n este
tema se e4plican los est8ndares de estas 8reas.
B>or 6u+ e4isten las con,enciones de codifcacinC
%a ra2n principal de usar un conjunto co<erente de con,enciones de
cdigo es estandari2ar la estructura ( el estilo de codifcacin de una
aplicacin de .orma 6ue el autor ( otras personas puedan leer (
entender el cdigo .8cilmente.
13!

%as con,enciones de codifcacin correctas dan como resultado un
cdigo .uente preciso' legi1le ( sin am1igredad' 6ue es co<erente con
otras con,enciones del lenguaje ( lo m8s intuiti,o posi1le.
Con,enciones de codifcacin m?nimas
5n conjunto de con,enciones de codifcacin de propsito general de1e
defnir los re6uisitos m?nimos necesarios para conseguir los o1jeti,os
e4plicados anteriormente' dejando li1ertad al programador para crear la
lgica ( el Zujo .uncional del programa.
l o1jeti,o es <acer 6ue el programa sea .8cil de leer ( de entender sin
o1struir la creati,idad natural del programador con imposiciones
e4cesi,as ( restricciones ar1itrarias.
>or tanto' las con,enciones sugeridas en este ap+ndice son 1re,es (
sugerentes. @o muestran todos los o1jetos ( controles posi1les' ni
especifcan todos los tipos de comentarios in.ormati,os 6ue podr?an ser
)tiles. Dependiendo del pro(ecto ( de las necesidades espec?fcas de la
organi2acin' 6ui28s desee ampliar estas instrucciones para 6ue
inclu(an elementos adicionales comoU
Con,enciones para o1jetos espec?fcos ( componentes
desarrollados internamente o comprados a otros pro,eedores.
Varia1les 6ue descri1an las acti,idades comerciales o
instalaciones de la organi2acin.
Cual6uier otro elemento 6ue el pro(ecto o la empresa considere
importante para conseguir ma(or claridad ( legi1ilidad.
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de
las restricciones so1re los nom1res de procedimientos' ,aria1les (
constantes' ,ea OConceptos 18sicos del cdigoO en OConceptos 18sicos
del cdigoO.
Con,enciones de nom1res de o1jetos
%os o1jetos de1en lle,ar nom1res con un prefjo co<erente 6ue .acilite la
identifcacin del tipo de o1jeto. A continuacin se o.rece una lista de
con,enciones recomendadas para algunos de los o1jetos permitidos por
Visual Basic.
>refjos sugeridos para controles
7ipo de control >refjo jemplo
13/

Barra de despla2amiento <ori2ontal <s1 <s1Volumen
Barra de despla2amiento <ori2ontal
ligera
lM<s1 lM<s1Volumen
Barra de despla2amiento lisa .s1 .s1;o,er
Barra de despla2amiento ,ertical ,s1 ,s1Indice
Barra de despla2amiento ,ertical
ligera
lM,s1 lM,s1A-o
Barra de estado sta sta&ec<a0ora
Barra de <erramientas tl1 tl1Acciones
Barra de progreso prg prgCargarArc<i,o
Botn animado ani aniBu2on
Botn de comando ligero lMcmd lMcmdFuitar
Botn de n)mero spn spn>aginas
Botn de opcin opt optPenero
Botn de opcin ligero lMopt lMopt@i,elntrada
Botones de comando cmd cmd$alir
Casilla de ,erifcacin c<S c<S$olo%ectura
Casilla de ,erifcacin ligera lMc<S lMc<SPuardar
Comunicaciones com com&a4
Contenedor #% ole ole0ojaCalculo
13"

Control 9se usa en procedimientos
cuando el tipo espec?fco es
desconocido:
ctr ctrActual
Control desli2ante sld sldscala
Cronmetro tmr tmrAlarma
Cuadr?cula grd grd>recios
Cuadr?cula de datos dgd dgd7itulos
Cuadr?cula enla2ada a datos d1grd d1grd=esultadosConsul
ta
Cuadr?cula ;$ &le4 msg msgClientes
Cuadro com1inado de datos d1c d1cAutor
Cuadro com1inado de imagen imgc1o imgc1o>roducto
Cuadro com1inado enla2ado a datos d1c1o d1c1oIdioma
Cuadro com1inado ligero lMc1o lMc1oAleman
Cuadro com1inado' cuadro de lista
desplega1le
c1o c1oIngles
Cuadro de imagen pic picVPA
Cuadro de lista lst lstCodigos
Cuadro de lista de arc<i,os fl fl#rigen
Cuadro de lista de directorios dir dir$ource
Cuadro de lista de unidades dr, dr,Destino
133

Cuadro de lista enla2ada a datos d1lst d1lst7ipo7ra1ajo
Cuadro de lista ligero lMlst lMlstCentroCostos
Cuadro de te4to t4t t4tApellido
Cuadro de te4to ligero lMt4t lMoptCalle
Datos dat datBi1lio
Datos AD# ado adoBi1lio
Datos remotos rd rd7itulos
Di8logo com)n dlg dlgA1rirArc<i,o
ti6ueta l1l l1l;ensajeA(uda
&ic<as ta1 ta1#pciones
0ierarc<ical &le4grid Ze4 Ze4>edidos
&orma s<p s<pCirculo
&ormulario .rm .rmntrada
Pauge gau gaustado
Pr8fco gra graPanancias
Imagen img imgIcono
In.ormacin del sistema s(s s(s;onitor
%?nea lin linVertical
%ista de datos d1l d1lditor
138

%ista de im8genes ils ils7odosIconos
;arco .ra .raIdioma
;arco ligero lM.ra lM.ra#pcionesPuardar
;CI mci mciVideo
;ensaje ;A>I mpm mpmn,iar;ensaje
;en) mnu mnuA1rirArc<i,o
;$ C<art c< c<Ventas>or=egion
;$ 7a1 mst mst>rimero
>anel *D pnl pnlPrupo
>icture clip clp clpBarra0erramientas
=epetidor de datos drp drp51icacion
=ic<7e4tBo4 rt. rt.In.orme
$elector de .ec<a dtp dtpditado
$esin ;A>I mps mps$esin
5pDoMn upd updDireccin
Visor de 8r1ol tre tre#rgani2acin
Visor de lista l,M l,Mnca1e2ados
Vista de mes m,M m,M>eriodo
139

>refjos sugeridos para los o1jetos de acceso a datos 9DA#:
5se los prefjos siguientes para indicar #1jetos de acceso a datos 9DA#:.
#1jeto de 1ase de datos >refjo jemplo
Base de datos d1 d1Cuentas
Campo Zd ZdDireccion
Conjunto de registros rec rec>re,ision
Contenedor con conIn.ormes
Defnicin de consulta 6r( 6r(Ventas>or=egi
on
Defnicin de ta1la t1d t1dClientes
Documento doc docIn.ormeVenta
s
spacio de tra1ajo Msp Msp;io
Prupo grp grp&inan2as
endice i4 id4dad
;otor de 1ase de datos d1e d1efet
>ar8metro prm prmCodigo7area
=elacin rel relDeptDemplea
dos
5suario usr usr@ue,o
180

Algunos ejemplosU
Dim d1Bi1lio As Data1ase
Dim recditores;AD As =ecordset' strInstruc$F% As $tring
Const DB_=AD#@%\ ` ! a sta1lece la constante.
aA1re la 1ase de datos.
$et d1Bi1lio ` #penData1ase9OBIB%I#.;DBO:
a sta1lece el te4to para la instruccin $F%.
strInstruc$F% ` O$%C7 g &=#; ditores H0= O D
Ostado ` a;ADaO
a Crea el nue,o o1jeto =ecordset.
$et recditores;AD ` d1.#pen=ecordset9strInstruc$F%' _
d1$lo%ectura:
>refjos sugeridos para men)s
%as aplicaciones suelen usar muc<os controles de men)' lo 6ue <ace )til
tener un conjunto )nico de con,enciones de nom1res para estos
controles. %os prefjos de controles de men)s se de1en e4tender m8s
all8 de la eti6ueta inicial OmnuO' agregando un prefjo adicional para
cada ni,el de anidamiento' con el t?tulo del men) fnal en la )ltima
posicin de cada nom1re. n la ta1la siguiente <a( algunos ejemplos.
$ecuencia del t?tulo del
men)
@om1re del controlador del
men)
Arc<i,o A1rir mnuArc<i,oA1rir
Arc<i,o n,iar correo mnuArc<i,on,iarCorreo
Arc<i,o n,iar .a4 mnuArc<i,on,iar&a4
&ormato Car8cter mnu&ormatoCaracter
A(uda Contenido mnuA(udaContenido
Cuando se usa esta con,encin de nom1res' todos los miem1ros de un
grupo de men)s determinado se muestran uno junto a otro en la
,entana >ropiedades de Visual Basic. Adem8s' los nom1res del control
de men) documentan claramente los elementos de men) a los 6ue
est8n adjuntos.
181

Selecci!n de pre%jos para otros controles
>ara los controles no mostrados arri1a' de1e intentar esta1lecer un
est8ndar de prefjos )nicos de dos o tres caracteres 6ue sean
co<erentes. $olamente se de1en usar m8s de tres caracteres si
proporcionan m8s claridad.
>ara controles deri,ados o modifcados' por ejemplo' ampl?e los prefjos
anteriores para 6ue no <a(a dudas so1re 6u+ control se est8 usando
realmente. >ara los controles de otros pro,eedores' se de1e agregar al
prefjo una a1re,iatura del nom1re del .a1ricante en min)sculas. >or
ejemplo' una instancia de control creada a partir del marco *D incluido
en la dicin >ro.esional de Visual Basic podr?a lle,ar el prefjo .ra*d
para e,itar con.usiones so1re 6u+ control se est8 usando realmente.
Con#enciones de no*res de constantes y #aria*les
Adem8s de los o1jetos' las constantes ( ,aria1les tam1i+n re6uieren
con,enciones de nom1res 1ien compuestas. n esta seccin se
muestran las con,enciones recomendadas para las constantes (
,aria1les permitidas por Visual Basic. 7am1i+n se e4plican cuestiones
relacionadas con la identifcacin del tipo de datos ( su alcance.
%as ,aria1les se de1en defnir siempre con el menor alcance posi1le. %as
,aria1les glo1ales 9p)1licas: pueden crear m86uinas de estado
enormemente complejas ( <acer la lgica de una aplicacin mu( di.?cil
de entender. %as ,aria1les glo1ales tam1i+n <acen muc<o m8s di.?cil
mantener ( ,ol,er a usar el cdigo.
n Visual Basic las ,aria1les pueden tener el alcance siguienteU
Alcance Declaracin Visi1le en
@i,el de procedimiento a>ri,atea en
procedimiento'
su1procedimiento o
.uncin
l procedimiento en el
6ue est8 declarada
@i,el de mdulo a>ri,atea en la seccin
Declaraciones de un
mdulo de .ormulario o
de cdigo 9..rm' .1as:
7odos los
procedimientos del
mdulo de .ormulario o
de cdigo
182

Plo1al a>u1lica en la seccin
Declaraciones de un
mdulo de cdigo
9.1as:
n toda la aplicacin
n una aplicacin de Visual Basic' las ,aria1les glo1ales se de1en usar
slo cuando no e4ista ninguna otra .orma cmoda de compartir datos
entre .ormularios. Cuando <a(a 6ue usar ,aria1les glo1ales' es
con,eniente declararlas todas en un )nico mdulo agrupadas por
.unciones ( dar al mdulo un nom1re signifcati,o 6ue indi6ue su
fnalidad' como >u1lic.1as.
5na pr8ctica de codifcacin correcta es escri1ir cdigo modular siempre
6ue sea posi1le. >or ejemplo' si la aplicacin muestra un cuadro de
di8logo' colo6ue todos los controles ( el cdigo necesario para ejecutar
la tarea del di8logo en un )nico .ormulario. sto a(uda a tener el cdigo
de la aplicacin organi2ado en componentes )tiles ( minimi2a la
so1recarga en tiempo de ejecucin.
A e4cepcin de las ,aria1les glo1ales 96ue no se de1er?an pasar:' los
procedimientos ( .unciones de1en operar slo so1re los o1jetos 6ue se
les pasan. %as ,aria1les glo1ales 6ue se usan en los procedimientos
de1en estar identifcadas en la seccin Declaraciones al principio del
procedimiento. Adem8s' los argumentos se de1en pasar a los
procedimientos $u1 ( &unction mediante B(Val' a menos 6ue sea
necesario e4pl?citamente cam1iar el ,alor del argumento 6ue se pasa.
5re%jos de alcance de #aria*les
A medida 6ue aumenta el tama-o del pro(ecto' tam1i+n aumenta la
utilidad de reconocer r8pidamente el alcance de las ,aria1les. sto se
consigue escri1iendo un prefjo de alcance de una letra delante del tipo
de prefjo' sin aumentar demasiado la longitud del nom1re de las
,aria1les.
Alcance >refjo jemplo
Plo1al g gstr@om1re5suario
@i,el de mdulo m m1ln>rogresoDelCalc
18*

ulo
%ocal del
procedimiento
@inguno d1lVelocidad
5na ,aria1le tiene alcance glo1al si se declara como >u1lic en un
mdulo est8ndar o en un mdulo de .ormulario. 5na ,aria1le tiene
alcance de nivel de mdulo si se declara como >ri,ate en un mdulo
est8ndar o en un mdulo de .ormulario' respecti,amente.
@ota %a co<erencia es crucial para usar esta t+cnica de .orma
producti,aW el corrector de sinta4is de Visual Basic no interceptar8 las
,aria1les de ni,el de mdulo 6ue comiencen con OpO.
Constantes
l cuerpo del nom1re de las constantes se de1e escri1ir en ma()sculas (
min)sculas' con la letra inicial de cada pala1ra en ma()sculas. Aun6ue
las constantes est8ndar de Visual Basic no inclu(en in.ormacin de tipo
de datos ( el alcance' los prefjos como i' s' g ( m pueden ser mu( )tiles
para entender el ,alor ( el alcance de una constante. >ara los nom1res
de constantes' se de1en seguir las mismas normas 6ue para las
,aria1les. >or ejemploU
mint;84%ista5suario a %?mite de entradas m84imas para
a la lista de usuarios 9,alor
a entero' local del mdulo:
gstr@ue,a%?nea a Car8cter de nue,a l?nea
a9cadena' glo1al de la
a aplicacin:
Varia*les
Declarar todas las ,aria1les a<orra tiempo de programacin por6ue
reduce el n)mero de errores de1idos a erratas 9por ejemplo'
a@om1re5suario7mp .rente a s@om1re5suario7mp .rente a
s@om1re5suario7emp:. n la fc<a ditor del cuadro de di8logo
#pciones' acti,e la opcin Declaracin de ,aria1les re6uerida. %a
instruccin #ption 4plicit re6uiere 6ue declare todas las ,aria1les del
programa de Visual Basic.
18!

%as ,aria1les de1en lle,ar un prefjo para indicar su tipo de datos.
#pcionalmente' ( en especial para programas largos' el prefjo se puede
ampliar para indicar el alcance de la ,aria1le.
7ipos de datos de ,aria1les
5se los prefjos siguientes para indicar el tipo de datos de una ,aria1le.
%ong lng lngDistancia
#1ject o1j o1jActi,o
$ingle sng sng;edia
$tring str str@om1re&
7ipo defnido por el
usuario
udt udtmpleado
Variant ,nt ,ntC<ecS$um
18/

No*res descripti#os de #aria*les y procediientos
l cuerpo de un nom1re de ,aria1le o procedimiento se de1e escri1ir en
ma()sculas ( min)sculas ( de1e tener la longitud necesaria para
descri1ir su .uncionalidad. Adem8s' los nom1res de .unciones de1en
empe2ar con un ,er1o' como Iniciar@om1re;atri2 o CerrarDi8logo.
>ara nom1res 6ue se usen con .recuencia o para t+rminos largos' se
recomienda usar a1re,iaturas est8ndar para 6ue los nom1res tengan
una longitud ra2ona1le. n general' los nom1res de ,aria1les con m8s
de *2 caracteres pueden ser di.?ciles de leer en pantallas VPA.
Cuando se usen a1re,iaturas' <a( 6ue asegurarse de 6ue sean
co<erentes en toda la aplicacin. Alternar aleatoriamente entre Cnt (
Contar dentro de un pro(ecto pro,oca una con.usin innecesaria.
7ipos defnidos por el usuario
n un pro(ecto grande con muc<os tipos defnidos por el usuario' suele
ser )til dar a cada uno de estos tipos un prefjo de tres caracteres slo
su(o. $i estos prefjos comien2an con OuO' ser8 .8cil reconocerlos cuando
se est+ tra1ajando con tipos defnidos por el usuario. >or ejemplo' OucliO
se podr?a usar como prefjo para las ,aria1les de un tipo Cliente defnido
por el usuario.
Con,enciones de codifcacin estructurada
Adem8s de las con,enciones de nom1res' las con,enciones de
codifcacin estructurada' como comentarios al cdigo ( sangr?as
co<erentes' pueden mejorar muc<o la legi1ilidad del cdigo.
Con,enciones de comentarios al cdigo
7odos los procedimientos ( .unciones de1en comen2ar con un
comentario 1re,e 6ue descri1a las caracter?sticas .uncionales del
procedimiento 96u+ <ace:. sta descripcin no de1e descri1ir los detalles
de implementacin 9cmo lo <ace:' por6ue a ,eces cam1ian con el
tiempo' dando como resultado un tra1ajo innecesario de mantenimiento
de los comentarios o' lo 6ue es peor' comentarios errneos. l propio
cdigo ( los comentarios de l?neas necesarios descri1ir8n la
implementacin.
%os argumentos 6ue se pasan a un procedimiento se de1en descri1ir
cuando sus .unciones no sean o1,ias ( cuando el procedimiento espera
18"

6ue los argumentos est+n en un inter,alo espec?fco. 7am1i+n <a( 6ue
descri1ir' al principio de cada procedimiento' los ,alores de,ueltos de
.unciones ( las ,aria1les glo1ales 6ue modifca el procedimiento' en
especial los modifcados a tra,+s de argumentos de re.erencia.
%os 1lo6ues del comentario de enca1e2ado del procedimiento de1en
incluir los siguientes enca1e2ados de seccin. n la seccin siguiente'
ODar .ormato al cdigoO' <a( algunos ejemplos.
nca1e2ado de
seccin
Descripcin del comentario
&inalidad %o 6ue <ace el procedimiento 9no cmo lo <ace:.
>remisas %ista de cada ,aria1le e4terna' control' arc<i,o
a1ierto o cual6uier otro elemento 6ue no sea
o1,io.
.ectos %ista de cada ,aria1le e4terna' control o arc<i,o
a.ectados ( el e.ecto 6ue tiene 9slo si no es
o1,io:.
ntradas 7odos los argumentos 6ue puedan no ser o1,ios.
%os argumentos se escri1en en una l?nea aparte
con comentarios de l?nea.
=esultados 4plicacin de los ,alores de,ueltos por las
.unciones.
=ecuerde los puntos siguientesU
Cada declaracin de ,aria1le importante de1e incluir un
comentario de l?nea 6ue descri1a el uso de la ,aria1le 6ue se est8
declarando.
%as ,aria1les' controles ( procedimientos de1en tener un nom1re
1astante claro para 6ue los comentarios de l?nea slo sean
necesarios en los detalles de implementacin complejos.
Al principio del mdulo .1as 6ue contiene las declaraciones de
constantes gen+ricas de Visual Basic del pro(ecto' de1e incluir un
183

resumen 6ue descri1a la aplicacin' enumerando los principales
o1jetos de datos' procedimientos' algoritmos' cuadros de di8logo'
1ases de datos ( dependencias del sistema. Algunas ,eces puede
ser )til un pseudocdigo 6ue descri1a el algoritmo.
Dar .ormato al cdigo
Como muc<os programadores usan toda,?a pantallas VPA' <a( 6ue
ajustarse al espacio de la pantalla en la medida de lo posi1le ( <acer
6ue el .ormato del cdigo siga reZejando la estructura lgica ( el
anidamiento. stos son algunos indicadoresU
%os 1lo6ues anidados est8ndar' separados por ta1uladores' de1en
lle,ar una sangr?a de cuatro espacios 9predeterminado:.
l comentario del es6uema .uncional de un procedimiento de1e
lle,ar una sangr?a de un espacio. %as instrucciones de ni,el
superior 6ue siguen al comentario del es6uema de1en lle,ar una
sangr?a de un ta1ulador' con cada 1lo6ue anidado separado por
una sangr?a de un ta1ulador adicional. >or ejemploU
aggggggggggggggggggggggggggggggggggggggggggggggggggggg
a &inalidadU 51ica el primer caso encontrado de un
a usuario especifcado en la matri2
%ista5suario.
a ntradasU
a str%ista5suario9:U lista de usuarios para 1uscar.
a str5suarioDestU nom1re del usuario 1uscado.
a =esultadosU endice del primer caso de rs5suarioDest
a encontrado en la matri2 ras%ista5suario.
a $i no se encuentra el usuario de destino'
a de,uel,e Q1.
aggggggggggggggggggggggggggggggggggggggggggggggggggggg
&unction int&ind5ser 9str5ser%ist9: As $tring' str7arget5suer As _
$tring:As Integer
Dim i As Integer a Contador de 1ucle.
Dim 1ln&ound As Integer a Indicador de
a destino encontrado.
int&ind5ser ` Q1
i ` 0
H<ile i m` 51ound9str5ser%ist: and @ot 1ln&ound
I. str5ser%ist9i: ` str7arget5ser 7<en
1ln&ound ` 7rue
int&ind5ser ` i
nd I.
Hend
188

nd &unction
Agrupacin de constantes
%as ,aria1les ( constantes defnidas se de1en agrupar por .unciones en
lugar de di,idirlas en 8reas aisladas o arc<i,os especiales. %as
constantes gen+ricas de Visual Basic se de1en agrupar en un )nico
mdulo para separarlas de las declaraciones espec?fcas de la aplicacin.
#peradores D ( E
5se siempre el operador D para unir cadenas ( el operador E cuando
tra1aje con ,alores num+ricos. l uso del operador E para concatenar
puede causar pro1lemas cuando se opera so1re dos ,aria1les Variant.
>or ejemploU
,ntVar1 ` O10'01O
,ntVar2 ` 11
,nt=esult ` ,ntVar1 E ,ntVar2 a,nt=esult ` 21'01
,nt=esult ` ,ntVar1 D ,ntVar2 a,nt=esult ` 10'0111
Crear cadenas para ;sgBo4' InputBo4 ( consultas $F%
Cuando est+ creando una cadena larga' use el car8cter de su1ra(ado de
continuacin de l?nea para crear m)ltiples l?neas de cdigo' de .orma
6ue pueda leer o depurar la cadena .8cilmente. sta t+cnica es
especialmente )til cuando se muestra un cuadro de mensaje 9;sgBo4: o
un cuadro de entrada 9InputBo4:' o cuando se crea una cadena $F%. >or
ejemploU
Dim ;sg As $tring
;sg ` Osto es un p8rra.o 6ue estar8 en unO _
D O cuadro de mensajes. l te4to est8 separado enO _
D O ,arias l?neas de cdigo en el cdigo .uente' O _
D Olo 6ue .acilita al programador la tarea de leer ( depurar.O
;sgBo4 ;sg
Dim C7A As $tring
C7A ` O$%C7 gO _
D O &=#; 7?tuloO _
D O H0= J&ec<a de pu1licacinL i 1988O
Consulta7?tulos.$F% ` C7A
ANE9O :I;I5EDIA
189

Operaciones */sicas
%as operaciones 6ue se pueden <acer con matrices pro,ienen de sus
aplicaciones' so1re todo de las aplicaciones en 8lge1ra lineal. De ese
modo las operaciones' o su .orma mu( particular de ser implementadas'
no son )nicas.
Sua o adici!n7editar < editar c!digo8
$ean . $e defne la operacin de sua o adici!n de
atrices como una operacin
1inaria tal
6ue ( donde en el 6ue la operacin
de suma en la )ltima e4presin es la operacin 1inaria correspondiente
pero en el campo . >or ejemplo' la entrada es igual a la suma de los
elementos ( lo cual es .
Veamos un ejemplo m8s e4pl?cito. $ea
@o es necesario 6ue las matrices sean cuadradasU
A la lu2 de +stos ejemplos es inmediato ,er 6ue dos matrices se
pueden sumar solamente si am1as tienen el mismo tama-o. %a suma
de matrices en el caso de 6ue las entradas est+n en uncampo ser8n
la asociati,idad' la conmutati,idad' e4istencia de elemento neutro
aditi,o ( e4istencia de in,erso aditi,o. ssto es as? (a 6ue +stas son
propiedades de los campos en los 6ue est8n las entradas de la
matri2. A continuacin se presentan las propiedades.
Propiedades[editar editar cdigo]
$ean ' donde es un campo entonces se
cumplen las siguientes propiedades para la operacin 1inaria
Asociati#idad
190

Deostraci!n6 Dada la defnicin de la operacin 1inaria se
sigue el resultado (a 6ue
de1ido a 6ue para todo .
Conutati#idad
Deostraci!n Dada la defnicin de la operacin 1inaria se
sigue el resultado (a 6ue de1ido a
6ue para todo .
E,istencia del eleento neutro aditi#o
4iste tal 6ue
Deostraci!n 7mese tal
6ue para cual6uier 9dnde este )ltimo es
el elemento neutro aditi,o en el campo' el cual e4iste
necesariamente:. ntonces para cual6uier
se sigue 6ue (a 6ue
para cual6uier ' dado 6ue las entradas est8n en un
campo.
E,istencia del in#erso aditi#o
4iste tal 6ue
a esta matri2 se le denota por .
Deostraci!n Dada tmese tal
6ue . ntonces W luego' por las
propiedades de campo donde es el in,erso aditi,o de
en el campo para cual6uier .
n e.ecto' +stas propiedades dependen el conjunto en el 6ue est+n las
entradas' como se <a dic<o antes' aun6ue en las aplicaciones
generalmente los campos usados son 9los n)meros reales: (
9los n)meros complejos:.
>or como se defni la operacin 1inaria adicin se dice 6ue +sta
operacin es una operacin interna por lo 6ue se cumple
191

intr?nsecamente la propiedad de 6ue es cerrado 1ajo adicin.
Con +stas propiedades se tiene 6ue es un grupo
a1eliano.
n el caso en 6ue el conjunto al 6ue pertenecen las entradas de la
matri2 sea un anillo ' la operacin de adicin de matrices
contin)a dotando de estructura de grupo a1eliano a ' (a
6ue 1ajo un anillo se tiene 6ue es un grupo a1eliano.
n el caso de 6ue las entradas est+n en un grupo ' +ste necesita
ser ungrupo a1eliano para 6ue la adicin de matrices siga dotando de
estructura de grupo a1eliano a .
5roducto por un escalar7editar < editar c!digo8
$ean ( . $e defne la operacin de producto por
un escalar como una .uncin tal
6ue ( donde en donde el producto es la
operacin 1inaria correspondiente pero en el campo . >or ejemplo' la
entrada es igual al producto .
Veamos un ejemplo m8s e4pl?cito. $ea (
7am1i+n es inmediato o1ser,ar 6ue el producto por un escalar da como
resultado una matri2 del mismo tama-o 6ue la original. 7am1i+n el
producto por un escalar depender8 de la estructura alge1raica en la 6ue
las entradas est8n. n el caso de 6ue est+n en un campo ser8n dos
distri1uti,idades 9una respecto de suma de matrices ( otra respecto de
suma en el campo:' asociati,idad ( una propiedad concerniente al
producto por el elemento neutro multiplicati,o del campo. A
continuacin se presentan las propiedades.
Propiedades[editar editar cdigo]
$ean ( ' donde es un campo' entonces se
cumplen las siguientes propiedades para la operacin producto por un
escalar
Asociati#idad
Deostraci!n6 Dada la defnicin de la operacin se sigue el resultado
(a 6ue de1ido a 6ue para todo .
192

Distri*uti#idad respecto de la sua de atrices
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue de1ido a 6ue para todo .
Distri*uti#idad respecto de la sua en el capo
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue de1ido a 6ue para todo .
5roducto por el neutro ultiplicati#o del capo
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue de1ido a 6ue para todo .
>or como se defni la operacin de producto por escalares se dice
6ue es cerrado 1ajo producto por escalares. Con +stas
propiedades ( las de la adicin se tiene 6ue es un espacio
,ectorial con las operaciones de suma ( producto por escalares defnidas
antes.
n el caso de 6ue las entradas ( los escalares no est+n en
un campo sino en un anillo entonces no necesariamente e4iste el neutro
multiplicati,o. n caso de 6ue e4ista' con lo cual el anillo es un anillo
con uno' se dice 6ue es un mdulo so1re .
A<ora' a partir de las propiedades 18sicas se puede demostrar
inmediatamente 6ue
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue para todo .
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue para todo de1ido a 6ue para
todo .
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue como en un campo no <a( di,isores de
19*

cero entonces para todo implica 6ue o
para todo ' i.e. . @o es posi1le un caso en el 6ue slo algunas
entradas de la matri2 sean cero ( el escalar sea no nulo (a 6ue en esos
casos estar?amos diciendo 6ue <a( di,isores de cero ( llegar?amos a una
contradiccin' (a 6ue la suposicin es 6ue las entradas ( los escalares
est8n en un campo.
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a
6ue
de1ido a 6ue para todo .
ste )ltimo resultado permite usar la notacin sin riesgo de
am1igredad.
5roducto7editar < editar c!digo8
Diagrama es6uem8tico 6ue ilustra el producto de dos matrices (
dando como resultado la matri2 .
l producto de matrices se defne de una manera mu( peculiar ( <asta
capric<osa cuando no se conoce su origen. l origen pro,iene del papel
de las matrices como representaciones de aplicaciones lineales. As? el
producto de matrices' como se defne' pro,iene de la composicin de
aplicaciones lineales. n este conte4to' el tama-o de la matri2
corresponde con las dimensiones de los espacios ,ectoriales entre los
cuales se esta1lece la aplicacin lineal. De ese modo el producto de
matrices' representa la composicin de aplicaciones lineales.
n e.ecto' en ciertas 1ases tenemos 6ue se puede
representar como donde es la representacin de un ,ector
de en la 1ase 6ue se <a elegido para en .orma de ,ector columna. $i
19!

tenemos dos aplicaciones lineales (
entonces ( ' luego la aplicacin
se representar8 como donde
es el producto de las representaciones matriciales de . @tese 6ue la
composicin no se puede dar entre cual6uier aplicacin sino entre
aplicaciones 6ue ,a(an de ' en particular de1e de <a1er
una relacin entre las dimensiones de los espacios ,ectoriales. 5na ,e2
dic<o +sto podemos defnir el producto de la siguiente manera.
$ean ( . $e defne el producto de
atrices como una .uncin tal
6ue ( donde para toda ' es
decir . >or ejemplo' la
entrada .
Veamos un ejemplo m8s e4pl?cito. $ean (
dnde la matri2 producto es como <a1?amos esta1lecido en la defnicinU
una matri2 .
$in tomar en cuenta la moti,acin 6ue ,iene desde las aplicaciones
lineales' es e,idente ,er 6ue si ignoramos la defnicin de la .uncin de
producto de matrices ( slo se toma en cuenta la defnicin de las
entradas' el producto no estar8 1ien defnido' (a 6ue si no tiene el
mismo n)mero de columnas 6ue de flas entonces no podremos
esta1lecer en donde aca1a la sumaU si la aca1amos en el ma(or de +stos
n)meros <a1r8 sumandos 6ue no est8n defnidos (a 6ue una de las
matrices no tendr8 mas entradas' mientras 6ue si tomamos el menor
<a1r8
entradas de alguna de las matrices 6ue no se tomen en cuenta. As? es
necesario 6ue tenga el iso n'ero de colunas -ue de
%las para -ue e,ista.
Como se puede suponer tam1i+n' las propiedades de +sta operacin
ser8n m8s limitadas en la generalidad (a 6ue adem8s de las limitaciones
impuestas por la naturale2a de las entradas est8 esta limitacin
respecto a tama-o. s claro' adem8s' 6ue el producto de matrices no
siempre es una operacin interna.
19/

Propiedades[editar editar cdigo]
$ean matrices con entradas en ' donde es un campo'
entonces se cumplen las siguientes propiedades para el producto de
matrices 9considerando 6ue los productos e4istan:
Asociati#idad
Deostraci!n6 Dada la defnicin de la operacin se sigue el resultado
(a 6ue' si ' ( por lo
6ue dond
e de1ido a 6ue para todo . A6u?
estamos considerando 6ue es ' es ( es .
Distri*uti#idad respecto de la sua de atrices por la derec"a
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue
de1ido a 6ue para todo . A6u? estamos considerando
6ue es ' es ( es .
Distri*uti#idad respecto de la sua de atrices por la i+-uierda
Deostraci!n Dada la defnicin de la operacin se sigue el resultado
(a 6ue
de1ido a 6ue para todo . A6u? estamos considerando
6ue es ' es ( es .
l producto de matrices no es conmutati,o' si lo .uera la composicin de
.unciones lineales ser?a conmutati,a ( eso en general no sucede.
#1,iamente e4isten casos particulares de algunos tipos de matrices en
los 6ue si <a( conmutati,idad. n el caso en 6ue tengamos
tendremos 6ue el producto entre matrices en tam1i+n est8
en . n ese caso adem8s de espacio ,ectorial es
19"

un 8lge1ra so1re un campo. n el caso de 6ue el conjunto al 6ue
pertenecen las entradas sea un anillo conmutati,o con uno
entonces adem8s de mdulo es un 8lge1ra so1re un anillo. ;as
a)n con el producto de matrices es un anillo.
2ango7editar < editar c!digo8
l rango de una matri2 es la dimensin de la imagen de la aplicacin
lineal representada por ' 6ue coincide con la dimensin de los espacios
,ectoriales generados por las flas o columnas de .
.raspuesta7editar < editar c!digo8
%a traspuesta de una matri2 ' donde no es
necesariamente un campo' es una matri2 tal
6ue . >or ejemplo la entrada .
Veamos un ejemplo m8s e4pl?cito. $ea
entonces su traspuesta es
As?' in.ormalmente podr?amos decir 6ue la traspuesta es a6uella matri2
6ue se o1tiene de la original cam1iando flas por columnas. %as
notaciones usuales para denotar la traspuesta de una matri2 son .
%a trasposicin de matrices tiene las siguientes propiedades 9donde
a<ora si el conjunto de entradas de1e ser al menos un anillo
conmutati,o:U
$i representa una aplicacin lineal' entonces la
matri2 descri1e la traspuesta de la aplicacin lineal.
Sistea de ecuaciones lineales
n matem8ticas ( 8lge1ra lineal' un sistea de ecuaciones lineales'
tam1i+n conocido como sistea lineal de ecuaciones o
193

simplemente sistea lineal' es un conjunto de ecuaciones lineales 9es
decir' un sistema de ecuaciones en donde cada ecuacin es de primer
grado:' defnidas so1re un cuerpo o un anillo conmutati,o. 5n ejemplo
de sistema lineal de ecuaciones ser?a el siguienteU
l pro1lema consiste en encontrar los ,alores desconocidos de las
,aria1les %
1
' %
2
( %
*
6ue satis.acen las tres ecuaciones.
l pro1lema de los sistemas lineales de ecuaciones es uno de los m8s
antiguos de la matem8tica ( tiene una infnidad de aplicaciones' como
en procesamiento digital de se-ales' an8lisis estructural' estimacin'
prediccin ( m8s generalmente en programacin lineal as? como en
la apro4imacin de pro1lemas no lineales de an8lisis num+rico.
Sisteas lineales reales7editar < editar c!digo8
n esta seccin se anali2an las propiedades de los sistemas de
ecuaciones lineales so1re el cuerpo ' es decir' los sistemas lineales en
los cuales los coefcientes de las ecuaciones sonn)meros reales.
2epresentaci!n gr/%ca7editar < editar c!digo8
%a interseccin de dos planos6ue no son paralelos coincidentes es
una recta.
5n sistema con incgnitas se puede representar en el nQ
espacio correspondiente.
198

n los sistemas con 2 incgnitas' el uni,erso de nuestro sistema ser8
el plano 1idimensional' mientras 6ue cada una de las ecuaciones ser8
representada por una recta. %a solucin ser8 el punto 9o l?nea: donde se
interse6uen todas las rectas representan a las ecuaciones. $i no e4iste
ning)n punto en el 6ue se interse6uen al mismo tiempo todas las l?neas'
el sistema es incompati1le' o lo 6ue es lo mismo' no tiene solucin.
n el caso de un sistema con * incgnitas' el uni,erso ser8 el espacio
tridimensional' siendo cada ecuacin un plano dentro del mismo. $i
todos los planos intersecan en un )nico punto' las coordenadas de este
ser8n la solucin al sistema. $i' por el contrario' la interseccin de todos
ellos es una recta o incluso un plano' el sistema tendr8 infnitas
soluciones' 6ue ser8n las coordenadas de los puntos 6ue .orman dic<a
l?nea o superfcie.
>ara sistemas de ! m8s incgnitas' la representacin gr8fca no e4iste'
por lo 6ue dic<os pro1lemas no se en.ocan desde esta ptica.
.ipos de sisteas7editar < editar c!digo8
%os sistemas de ecuaciones se pueden clasifcar seg)n el n)mero de
soluciones 6ue pueden presentar. De acuerdo con ese caso se pueden
presentar los siguientes casosU
Sistea copati*le si tiene solucin' en este caso adem8s
puede distinguirse entreU
Sistea copati*le deterinado cuando tiene una )nica
solucin.
Sistea copati*le indeterinado cuando admite un
conjunto infnito de soluciones.
Sistea incopati*le si no tiene solucin.
Fuedando as? la clasifcacinU
%os sistemas incompati1les geom+tricamente se caracteri2an por
9<iper:planos o rectas 6ue se cru2an sin cortarse. %os sistemas
199

compati1les determinados se caracteri2an por un conjunto de
9<iper:planos o rectas 6ue se cortan en un )nico punto. %os sistemas
compati1les indeterminados se caracteri2an por 9<iper:planos 6ue se
cortan a lo largo de una recta Jo m8s generalmente un <iperplano de
dimensin menorL. Desde un punto de ,ista alge1raico los sistemas
compati1les determinados se caracteri2an por6ue el determinante de la
matri2 es di.erente de ceroU
Algoritmo para determinar si un sistema es
compatible[editar editar cdigo]
>odemos a,eriguar si un sistema es o no compati1le mediante
el 7eorema de =ouc<+Q&ro1enius 6ue esta1lece 6ue un sistema de
ecuaciones lineales es compati1le slo si el rango de su matri2 ampliada
coincide con el de su matri2 de coefcientes. $upongamos 6ue el sistema
es compati1le. $i el ,alor com)n de los rangos de las matrices coincide
con el n)mero de ,aria1les' el sistema es copati*le deterinadoW
en caso contrario' es copati*le indeterinado.
Sistemas compatibles indeterminados[editar editar cdigo]
5n sistema so1re un cuerpo ; es copati*le indeterinado cuando
posee un n)mero infnito de soluciones. >or ejemplo' el siguiente
sistemaU
7anto la primera como la segunda ecuacin se corresponden con la recta
cu(a pendiente es ( 6ue pasa por el punto ' por lo 6ue
am1as intersecan en todos los puntos de dic<a recta. l sistema es
compati1le por <a1er solucin o interseccin entre las rectas' pero es
indeterminado al ocurrir esto en infnitos puntos.
n este tipo de sistemas' la solucin gen+rica consiste en e4presar
una o m8s ,aria1les como .uncin matem8tica del resto. n los
sistemas lineales compati1les indeterminados' al menos una de sus
ecuaciones se puede <allar como com1inacin lineal del resto' es
decir' es linealmente dependiente.
%a condicin necesaria para 6ue un sistema sea compati1le
indeterminado es 6ue el determinante de la matri2 del sistema sea
200

cero al igual 6ue el rango de la matri2 ampliada ( menor al numero
de incognitas9( por tanto uno de sus auto,alores ser8 0:U
De <ec<o' de las dos condiciones anteriores se desprende' 6ue el
conjunto de soluciones de un sistema compati1le indeterminado es
un su1espacio ,ectorial. \ la dimensin de ese espacio ,ectorial
coincidir8 con la multiplicidad geom+trica del auto,alor cero.
Sistemas incompatibles[editar editar cdigo]
De un sistema se dice 6ue es incopati*le cuando no presenta
ninguna solucin. >or ejemplo' supongamos el siguiente sistemaU
%as ecuaciones se corresponden gr8fcamente con dos rectas' am1as
con la misma pendiente' Al ser paralelas' no se cortan en ning)n punto'
es decir' no e4iste ning)n ,alor 6ue satis.aga a la ,e2 am1as
ecuaciones.
;atem8ticamente un sistema de estos es incompati1le cuando el rango
de la matri2 del sistema es in.erior al rango de la matri2 ampliada. 5na
condicin necesaria para 6ue esto suceda es 6ue el determinante de la
matri2 del sistema sea ceroU
3$todos de soluci!n a sisteas de ecuaciones lineales
Sustitucin[editar editar cdigo]
l m+todo de sustitucin consiste en despejar en una de las ecuaciones
cual6uier incgnita' pre.eri1lemente la 6ue tenga menor coefciente'
para' a continuacin' sustituirla en otra ecuacin por su ,alor.
n caso de sistemas con m8s de dos incgnitas' la seleccionada de1e
ser sustituida por su ,alor e6ui,alente en todas las ecuaciones e4cepto
en la 6ue la <emos despejado. n ese instante' tendremos un sistema
con una ecuacin ( una incgnita menos 6ue el inicial' en el 6ue
201

podemos seguir aplicando este m+todo reiteradamente. >or ejemplo'
supongamos 6ue 6ueremos resol,er por sustitucin este sistemaU
n la primera ecuacin' seleccionamos la incgnita por ser la de menor
coefciente ( 6ue posi1lemente nos .acilite m8s las operaciones' ( la
despejamos' o1teniendo la siguiente ecuacin.
l siguiente paso ser8 sustituir cada ocurrencia de la incgnita en la
otra ecuacin' para as? o1tener una ecuacin donde la )nica incgnita
sea la .
Al resol,er la ecuacin o1tenemos el resultado ' ( si a<ora
sustituimos esta incgnita por su ,alor en alguna de las ecuaciones
originales o1tendremos ' con lo 6ue el sistema 6ueda (a resuelto.
Igualacin[editar editar cdigo]
l m+todo de igualacin se puede entender como un caso particular del
m+todo de sustitucin en el 6ue se despeja la misma incgnita en dos
ecuaciones ( a continuacin se igualan entre s? la parte derec<a de
am1as ecuaciones.
7omando el mismo sistema utili2ado como ejemplo para el m+todo de
sustitucin' si despejamos la incgnita en am1as ecuaciones nos
6ueda de la siguiente maneraU
Como se puede o1ser,ar' am1as ecuaciones comparten la misma parte
i26uierda' por lo 6ue podemos afrmar 6ue las partes derec<as tam1i+n
son iguales entre s?.
202

5na ,e2 o1tenido el ,alor de la incgnita ' se sustitu(e su ,alor en una
de las ecuaciones originales' ( se o1tiene el ,alor de la .
%a .orma m8s .8cil de tener el m+todo de sustitucin es reali2ando un
cam1io para despejar 4 despu+s de a,eriguar el ,alor de la (.
Reduccin[editar editar cdigo]
ste m+todo suele emplearse ma(oritariamente en los sistemas lineales'
siendo pocos los casos en 6ue se utili2a para resol,er sistemas no
lineales. l procedimiento' dise-ado para sistemas con dos ecuaciones e
incgnitas' consiste en trans.ormar una de las ecuaciones
9generalmente' mediante productos:' de manera 6ue o1tengamos dos
ecuaciones en la 6ue una misma incgnita apare2ca con el mismo
coefciente ( distinto signo. A continuacin' se suman am1as ecuaciones
produci+ndose as? la reduccin o cancelacin de dic<a incgnita'
o1teniendo as? una ecuacin con una sola incgnita' donde el m+todo de
resolucin es simple.
>or ejemplo' en el sistemaU
@o tenemos m8s 6ue multiplicar la primera ecuacin por para poder
cancelar la incgnita . Al multiplicar' dic<a ecuacin nos 6ueda as?U
$i sumamos esta ecuacin a la segunda del sistema original' o1tenemos
una nue,a ecuacin donde la incgnita <a sido reducida ( 6ue' en este
caso' nos da directamente el ,alor de la incgnita U
20*

l siguiente paso consiste )nicamente en sustituir el ,alor de la
incgnita en cual6uiera de las ecuaciones donde aparec?an am1as
incgnitas' ( o1tener as? 6ue el ,alor de es igual aU
Mtodo grfco[editar editar cdigo]
=ectas 6ue pasan por el puntoU 92'!:
Consiste en construir la gr8fca de cada una de las ecuaciones del
sistema. l m+todo 9manualmente aplicado: solo resulta efciente en
el plano cartesiano' es decir para un espacio de dimensin 2.
l proceso de resolucin de un sistema de ecuaciones mediante el
m+todo gr8fco se resuel,e en los siguientes pasosU
1. $e despeja la incgnita 9(: en am1as ecuaciones.
2. $e constru(e para cada una de las dos ecuaciones de primer grado
o1teniendo la ta1la de ,alores correspondientes.
*. $e representan gr8fcamente am1as rectas en los ejes
coordenados.
!. n este )ltimo paso <a( tres posi1ilidadesU
1. $i am1as rectas se cortan' las coordenadas del punto de
corte son los )nicos ,alores de las incgnitas 94'(:. O$istema compati1le
determinadoO.
2. $i am1as rectas son coincidentes' el sistema tiene infnitas
soluciones 6ue son las respecti,as coordenadas de todos los puntos de
20!

esa recta en la 6ue coinciden am1as. t$istema compati1le
indeterminadou.
*. $i am1as rectas son paralelas' el sistema no tiene solucin
en los reales pero si en los complejos.
Mtodo de Gauss[editar editar cdigo]
l m+todo de eliminacin de Pauss o simplemente m+todo de Pauss
consiste en con,ertir un sistema lineal de n ecuaciones con n incgnitas'
en uno escalonado' en el 6ue la primera ecuacin tiene n incgnitas' la
segunda ecuacin tiene n Q 1 incgnitas' ...' <asta la )ltima ecuacin'
6ue tiene 1 incgnita. De esta .orma' ser8 .8cil partir de la )ltima
ecuacin e ir su1iendo para calcular el ,alor de las dem8s incgnitas.
J4pandirL Ejeplo de eliminacin de Gauss
Eliminacin de Gauss-Jordan
5na ,ariante de este m+todo' denominada eliminacin de PaussQfordan'
es un m+todo aplica1le )nicamente a los sistemas lineales de
ecuaciones' ( consistente en triangular la matri2 aumentada del sistema
mediante trans.ormaciones elementales' <asta o1tener ecuaciones de
una sola incgnita' cu(o ,alor ser8 igual al coefciente situado en la
misma fla de la matri2. ste procedimiento es similar al anterior de
reduccin' pero ejecutado de manera reiterada ( siguiendo un cierto
orden algor?tmico.
J4pandirL Ejeplo de eliminacin de Gauss
!ordan
Regla de "ramer[editar editar cdigo]
Art#culo principal0 =egla de Cramer
%a regla de Cramer da una solucin para sistemas compati1les
determinados en t+rminos de determinantes ( adjuntos dada porU
20/

Donde A
j
es la matri2 resultante de rempla2ar la jQ+sima columna de A
por el ,ector columna *. >ara un sistema de dos ecuaciones ( dos
incgnitasU
%a regla de Cramer da la siguiente solucinU
@otaU Cuando en la determinante original det9A: el resultado es 0' el
sistema indica m)ltiples o sin coincidencia.
Soluci!n de sisteas lineales en un anillo
%os m+todos para resol,er el sistema 91: so1re un anillo son mu(
di.erentes a los considerados anteriormente. De <ec<o la ma(or?a de
m+todos usados en cuerpos' como la regla de Cramer' son inaplica1les
en anillos de1ido a 6ue no e4isten in,ersos multiplicati,os.
%a e4istencia de solucin del sistema 91: so1re los enteros re6uiere
,arias condicionesU
1. >ara cada i es di,isor de .
2. $i la condicin anterior se cumple para un determinado i e4iste un
conjunto de enteros .ormado por el conjunto de enteros 6ue
satis.ace la iQ+sima ecuacin' ( e4istir8 solucin si la
interseccin .
20"

Anda mungkin juga menyukai