Está en la página 1de 85

CURSO

Programación Visual Basic para


Aplicaciones (VBA) en soporte
PowerPoint
Introducción (2)
Tema 1: La interface de programación (8)
Tema 2: Cuatro controles básicos (20)
Tema 3: Seis controles básicos (45)
Tema 4: Estructuras de control en VBA (60)
Tema 5: Desarrollo de proyectos (77)
30 EJERCICIOS + 1 PROYECTO
(Todas las palabras subrayadas son hipervínculos)

Prof. PEDRO FULLEDA BANDERA / Ludólogo, Comunicador Social


Quito – Ecuador (2014)
La programación en Visual Basic es una de las maneras más placenteras de programar.
Gran parte de la creación de un programa en Visual Basic consiste en colocar objetos
gráficos en la pantalla y la configuración de sus atributos. En realidad, Visual Basic es el
único lenguaje de programación actual que los principiantes pueden aprender con
facilidad. Su antecedente es el lenguaje BASIC (forman su nombre las iniciales, en inglés,
de: Código de Instrucciones Simbólicas Multipropósito para Principiantes), basado en texto
y que durante décadas evolucionó a otras versiones como MBBASIC, GWBASIC,
QUICKBASIC y QBASIC. Con el desarrollo de Windows, fue evidente para Microsoft que un
lenguaje de programación basado en texto no funcionaría bien en los nuevos soportes, y
desarrolló VISUAL BASIC, basado en BASIC, pero esencialmente gráfico, y que además, por
ser interpretado al tiempo que compilado, permite ejecutar el programa mientras se
escribe, y no sólo luego de su compilación final, lo que es de gran ayuda para los
principiantes, que pueden percatarse así inmediatamente de sus errores, y corregirlos.
VISUAL BASIC crea programas para Windows. Por eso cuando se aprende, también se
aprenderá a automatizar programas comunes, como los que se encuentran en Microsoft
Office. La mayoría de los usuarios de este paquete ofimático ignora que sus aplicaciones
están dotadas con una versión especial llamada VISUAL BASIC PARA APLICACIONES (VBA)
que, aunque no es exactamente el sistema completo de programación, sí permite controlar
y hacer interactivos sus productos, teniendo la ventaja de no requerir la instalación del
programa VB, pues ya está implícito en las aplicaciones de Office.
2
Antes de Visual Basic, escribir un programa basado en texto era muy tedioso, pues había
que diseñar primero en papel las interfaces. Con un lenguaje gráfico se puede acometer
directamente esta tarea con las herramientas que brinda. En el caso de VBA las interfaces
serán las correspondientes a la aplicación sobre la cual se trabaje (Word, Access, Excel…).
En este caso se trabajará sobre PowerPoint, y las interfaces serán simplemente diapositivas
electrónicas, las mismas que cualquier persona acostumbra a realizar para múltiples
propósitos, por lo que ya se tendrá resuelto el 40% del problema.
Como se sabe, una diapositiva es cada una de las pantallas que conforman una
presentación de PowerPoint, en que se integran textos, gráficos, ilustraciones, efectos de
animación y sonoros, hipervínculos, así como, a partir de ahora, los controles y códigos de
VBA que van a otorgarle interactividad. Las diapositivas se realizan en modo de diseño, y
finalmente se exponen en modo de ejecución, en el monitor de la computadora o en una
pantalla de proyección. En realidad, lo que se hará con VBA es crear macros para PP. Una
macro es un conjunto de acciones, o programa, que se elabora para automatizar varias
tareas en una aplicación. Pero, existirá un pequeño problema: las macros se utilizan
comúnmente para introducir virus, razón por la cual los sistemas cuentan con una
protección antimacro que las deshabilita cuando se detectan en un soporte externo. Así,
para ejecutar un programa en VBA (en PowerPoint o en cualquier otra aplicación de Office)
primero se tendrá que habilitar esta función en el nivel de seguridad antimacro de la
computadora, de lo contrario se verá la presentación de PP, pero perderá su interactividad.
En las siguientes pantallas le muestro cómo hacerlo…

3
1

Haga clic en el botón de Office (1), y en el cuadro que se abrirá (2) haga clic en
Opciones de PowerPoint…
4
2

3 4

Abra el Centro de confianza (1), y en la ventana que


aparecerá haga clic en Configuración del Centro de confianza
(2). Seleccione la pestaña Configuración de macros (3), 5
donde de todas las opciones escogerá Deshabilitar todas las 4
Haga clic en Centro de confianza.
macros con notificación (4). Luego haga clic en Aceptar (5).
Otro procedimiento se explica en la diapositiva 12.
5
Una vez hecho lo
anteriormente
explicado, cuando se
abra el trabajo en
modo de ejecución
(pantalla completa)
lo primero que
aparecerá será un
cuadro con la Alerta
de seguridad, que
permite habilitar el
contenido (1), por
tratarse de macros
de confianza
(elaboradas por Ud.
con la programación
VBA). Luego haga clic 1 2
en Aceptar (2) y
dispondrá de
interactividad en su
PowerPoint.

6
Para hacer una
presentación
interactiva de Las pantallas (una o más) se diseñan como diapositivas de PP,
PowerPoint se empleando las posibilidades de autoformas, ilustraciones,
cuenta con los colores, y otros.
siguientes
recursos...

Los gráficos y textos pueden ser animados de diversos modos,


dinamizando la presentación.

Este recurso permite pasar de una pantalla a otra, según se


requiera en una presentación con varias diapositivas.

Los controles de este lenguaje de programación permiten realizar múltiples acciones (macros),
que satisfacen todas las necesidades de funcionamiento de la presentación interactiva.
En este curso se da por hecho que Ud. domina los tres primeros recursos, y solo requiere el
conocimiento de VBA. Así que ¡abra PowerPoint y ejecute prácticamente las instrucciones!
Lo primero: disponga una presentación para realizar sus ejercicios y proyectos.
7
Esta es la característica habitual en el modo de diseño de PowerPoint.
Obsérvese que en la cinta de opciones aparecen las pestañas: Inicio, Insertar,
Diseño, Animaciones, Presentación con diapositivas, Revisar, Vista…
(puede variar de una versión a otra del programa) 8
1

Haga clic en el botón de Office (1), y en el cuadro que se abrirá (2) haga clic en
el botón Opciones de PowerPoint…
9
En el cuadro que se abrirá seleccione con clic la casilla Mostrar ficha
Programador en la cinta de opciones, que generalmente viene desmarcada, y
luego haga clic en Aceptar… 10
En la cinta de opciones aparecerá una nueva ficha, Programador, que es la
requerida para poder trabajar con Visual Basic para Aplicaciones (VBA) en
PowerPoint… 11
Con clic en la ficha Programador se abrirá la correspondiente
barra de herramientas, donde lo esencial será aprender a
trabajar con los diferentes controles del lenguaje de
programación VBA…

Con clic en Seguridad de macros, una vez habilitadas las herramientas de


la ficha Programador, también podrá abrir el Centro de confianza, para
proceder como se explica en la diapositiva 5. 12
Control de Botón de Control de Barra de
número comando imagen desplazamiento
Control de
(SpinButton) (Command (Image) (ScrollBar)
texto
Button)
(TextBox)
Muestra o
Control de modifica las
etiqueta propiedades
(Label) del control
seleccionado
Casilla de
verificación Edita el código
(CheckBox) de VBA para
un control
Botón de
opción Cuadro Cuadro Botón de Despliega una lista
(Option combinado de lista alternar con más controles
Button) (ComboBox) (ListBox) (ToggleButton) disponibles

Estos son los tipos de controles más usados en VBA, con los cuales se pueden
resolver todas las necesidades básicas de programación con este lenguaje.
Como se aprecia, el botón Propiedades aparece opaco, y solo se activa cuando
es instalado un control…
13
1 3
Para instalar un control en la interface de
2
programación se hará clic izquierdo en su
ícono del cuadro de controles (1), y luego,
con el cursor en forma de cruz (2) y
manteniendo presionado el botón +
izquierdo del mouse, se le arrastrará un
poco hacia la derecha y hacia abajo en el
sitio donde irá en la interface (diapositiva
en diseño), para que alcance un tamaño
inicial adecuado. Entonces se le podrá 4
editar (cambiarlo de lugar, forma, tamaño y
otros atributos). Finalmente se le
configurará abriendo el cuadro
Propiedades, con clic en ese botón (3)
mientras el control esté seleccionado,
contorneado por puntos dimensionales,
como se muestra en la figura (4). Las
propiedades podrá verlas en orden
alfabético o por categorías, como le sea
más cómodo.
14
El Label, el TextBox y el control
Image del ejemplo forman una
matriz de controles, pudiendo
declararse al mismo tiempo sus
propiedades comunes. El cuadro
Propiedades se abrió inicialmente
para el Label, pero luego se hace
común a los demás controles.

La instalación de varios controles de un mismo tipo se facilita si luego de instalar y


declarar las propiedades al primero Ud. simplemente lo copia y lo pega cuantas
veces haga falta. Todas las copias serán exactamente iguales al control inicial. Lo
que tendrá que hacer después es dar a cada control un nombre distintivo. También
podrá ahorrar tiempo y trabajo declarando de una sola vez a varios controles -de
igual o diferente tipo- algunas propiedades que les sean comunes (como: Caption,
BackColor, ForeColor, BackStyle, BorderStyle, BorderColor, TextAlign, Enabled,
Visible…), si los selecciona a todos con clics izquierdos del mouse mientras mantiene
presionada la tecla Shift, conformando de tal modo una matriz de controles, pero
para eso tendrá primero que abrir el cuadro Propiedades para el primer control al
que haga clic, que ya quedará así activado para el resto. No lo intente con la
propiedad Font, pues puede interrumpirse el programa. Ella debe ser declarada de
forma individual a cada control. 15
2

Luego de instalar un control en la


interface (diapositiva en diseño), y de 1
declararle sus propiedades, se podrá
comenzar la introducción de códigos de
programación para establecer su
funcionamiento. Para esto, con el
control seleccionado (rodeado de puntos
dimensionales), se hará clic en el botón
Ver código (1), o en el botón Visual Basic 3
(2), o dobleclic en el mismo control (3),
que es el método más usual, con lo que
se abrirá el editor de códigos mostrando
Como se ve, con el cuadro de
el evento principal (por defecto) del Propiedades se otorgaron al control
control. El cursor del mouse se mostrará Label1: un BackColor (amarillo), un
intermitentemente entre las líneas de BorderStyle (Single, o sencillo), y un
edición -de encabezamiento y final- para Caption o etiqueta (Prueba), con Arial
dicho control, indicando que se puede 18 negrita como Font (fuente).
comenzar a escribir allí.
16
Esta ventana Esta ventana
muestra todos muestra todos los
Las líneas de código se escriben los controles procedimientos
entre el encabezamiento: instalados en la de eventos que
Private Sub + nombre del interface, en pueden usarse
control + procedimiento, y el orden alfabético. con cada control.
final: End Sub Por ejemplo:
Click, Dblclik,
Como se ve, en esta página se dispone la programación MouseDown,
para el control Label1, con el procedimiento Click (que MouseUp,
aparece primero, por defecto). Para cambiarlo, hay que MouseMove...
buscar otras opciones en esta ventana…

Para salir del editor de códigos y regresar a la diapositiva en diseño,


se hará clic en este botón. 17
A cada control
corresponde un
bloque de
instrucciones. Los
bloques se
separan entre sí
automáticamente
por un línea

Relación de Las líneas de Cada bloque de instrucciones debe ser


diapositivas que instrucciones acompañado por una línea de texto que explique
forman la derivadas de una la función que tiene ese código, lo que ayuda a
presentación. Con principal deben comprender el programa que se elabora. La línea
clic en un ícono se tener sangría para es precedida por una comilla simple ( ‘ ), para que
muestran los definir la estructura no se la asuma como parte de las instrucciones, y
códigos de cada del bloque de se verá con color verde en el editor.
una. instrucciones. 18
En la escritura de códigos de programación se emplean abreviaturas para
identificar los controles. Estas son las más usadas…
ComboBox Formulario Menú
CheckBox Grid OptionButton
CommandButton HScrollBar PictureBox
DirectoryList Image Shape
DriverListBox Label Timer
FileListBox Line TextBox
Frame ListBox VScrollBar

También se emplean los siguientes códigos para asignar colores a los controles:
Se escriben en las
QBColor(0) QBColor(6) QBColor(12)
líneas de
QBColor(13) programación para
QBColor(1) QBColor(7) dar, en modo de
QBColor(14) ejecución, un color a
QBColor(2) QBColor(8) un control, o cambiar
QBColor(15) el que se le dio
QBColor(3) QBColor(9) inicialmente en el
QBColor(4) cuadro Propiedades.
QBColor(10)
QBColor(5) QBColor(11) 19
Botón de
Etiqueta Control de Imagen Comando Caja de Texto
Label (lbl) Image (img) CommandButton TextBox (txt)
(cmd)
Con estos 10 controles y mucha
creatividad, resolveremos Barra de Botón de Opción
todos los problemas. Veamos Desplazamiento OptionButton
ahora los 4 primeros… ScrollBar (scr) (opt)

Casilla de Control de
Verificación Número
CheckBox (chk) SpinButton (spn)

Formulario de
Cuadro de Lista
Usuario
ListBox (lst)
UserForm (frm)

(Haga clic en un cuadro para ir al contenido) 20


SU CUADRO DE PROPIEDADES
Nombre que se da al control. Conviene escribir la función que tendrá,
precedida por su abreviatura, para identificarlo en el código (ej:
lblMensaje). Se inicia con mayúscula y nunca lleva acento ni ñ.
Define si el control asumirá un tamaño automáticamente o no.
Color de fondo (con clic en la pestaña se abre la paleta de colores).
Define si el control tendrá su fondo opaco o transparente.
Color del borde (solo si el estilo del borde es Single).
Si el control mostrará un borde (Single) o ninguno (None).
Mensaje o etiqueta, que mostrará inicialmente el control.
Si el control estará disponible (True) o no (False).
Fuente tipográfica que se utilizará para el Caption (etiqueta).
Color de la fuente (con el que se verá el texto).
Junto a Width establece las dimensiones del control (si se desea que
varios controles sean de igual tamaño se debe anotar a todos las
mismas cifras en las propiedades: Height (alto) y Width (ancho).
Si quiere emplear un ícono o imagen como puntero del mouse.
Forma que asumirá el puntero del mouse al tocar el control.
Incorpora una imagen al control, buscándola con un explorador.
Establece la posición de la imagen en el control.
Define el efecto especial que tendrá el control en la presentación.
Establece la alineación del mensaje en el control.
Distancia del control al borde izquierdo y al superior de la interface.
Define si el control será visible o no inicialmente.
Las fuentes Webdings y Windings incorporan diversas
ilustraciones y logotipos como etiqueta a los controles,
como se muestra en las diapositivas siguientes… 21
Fuente especial ( ( , , <<
< FF k k P P u u
WEBDINGS
/ / ¨  AA
A f f L L p p V V
| | 8 8
&& } } a a
a GG l l Q Q v v
° 9 9
%% { { BB
B g g MM q q W W
1 1 1010
$ $ [ [ bb
b HH m m R R w w
22 ‘ 
# # ] ] CC
C hh N N r r X X
33 ¿ 
“  - - c cc I I n n S S x x
44 ¡ 
! ! _ _ DD
D i i Ñ  s s Y Y
55 ? ?
+ + : : dd
d J J ñ  T T y y
66 = =
. . ; ; EE
E j j O O t t Z Z
77 ) )
* * > > e e
e KK o o U U z z
Fuente especial ( ( , , < << F F k k P P U u
WINGDINGS
/ / ¨  A A f f L L p p V V
|| 8 8
&& } } aa
a G G l l Q Q v v
° 9 9
%% { { B g
B B g MM q q W W
1 1 10 0
$ $ [ [ b b
b H H m m R R w w
2 2 ‘ 
# # ] ] C
C C hh N N r r X X
3 3 ¿ 
“  - - c c
c I I n n S S x x
44 ¡  ! ! _ _ D D i i Ñ  s s Y Y
5 5 ? ? + + : : d d
d J J ñ  T T y y
6 6 = = . . ; ; EE
E j j O O t t Z Z
77 ) ) * * > > ee
e KK o o U U z z
Fuente especial ( ( , , < << F F k k P P U u
WINGDINGS 2
/ / ¨  A A
A f f L L p p V V
|| 8 8
&& } } aa
a G G l l Q Q v v
° 9 9
%% { { B B
B g g MM q q W W
11 10 0
$ $ [ [ b bb H H m m R R w w
2 2 ‘ 
# # ] ] C C
C hh N N r r X X
3 3 ¿ 
“  - - c c
c I I n n S S x x
44 ¡  ! ! _ _ D D
D i i Ñ  s s Y Y

5 ? ? + +
5
: : d dd J J ñ  T T y y
6 6 = = . . ; ; EE
E j j O O t t Z Z
77 ) ) * * > > ee
e KK o o U U z z
Fuente especial ( ( , , < << F F k k P P U u
WINGDINGS 3
/ / ¨  A A f f L L p p V V
|| 8 8
&& } } a aa G G l l Q Q v v
° 9 9
%% { { B B g g MM q q W W
11 10 0
$ $ [ [ b bb H H m m R R w w
2 2 ‘  # # hh
] ] C C N N r r X X
3 3 ¿  “  - - c I I n
c c n S S x x
44 ¡  ! ! _ _ D D i i Ñ  s s Y Y

5 5 ? ? + + : : d dd J J ñ  T T y y
6 6 = = . . ; ; EE
E j j O O t t Z Z
77 ) ) * * > > e ee KK o o U U z z
LABEL ES EL CONTROL MÁS VERSÁTIL, PUES PERMITE INSTALAR TANTO TEXTOS COMO
IMÁGENES. HAGA LAS SIGUIENTES PRÁCTICAS:
EJERCICIO 1.
a) Instale un lbl en su interface.
b) Declárele propiedades, mediante el cuadro con ese nombre.
c) Seleccione Webdings o Wingdings en la propiedad Font.
d) Escriba en la propiedad Caption cualquier letra o número. ¿Qué aparece en el lbl?
e) Con TextAlign sitúe la imagen al centro, izquierda o derecha del lbl.
f) Dele color al lbl con la propiedad BackColor, teniendo a BackStyle Opaque.
g) Dele color a la imagen que instaló en el lbl, con la propiedad ForeColor.
h) Hágale un marco al lbl con BorderStyleSingle, y dele color con BorderColor.
EJERCICIO 2.
a) Borre la letra o número que escribió en Caption, y escriba allí su nombre.
b) En Font seleccione otra fuente (por ejemplo: Arial) y dele el tamaño que desee.
EJERCICIO 3.
a) Borre la letra o número que escribió en Caption.
b) Seleccione Picture en el cuadro Propiedades.
c) En el explorador que aparecerá busque una ilustración o foto que tenga archivada.
d) Vea qué aparece en el lbl.
e) Decida la posición de la imagen mediante PicturePosition (pruebe varias opciones).

Ejemplo de resultados:

1 2 3
26
Hemos instalado un lbl en la interface y declarado sus propiedades, pero aún no estamos
programando. Programar significa poder modificar las características y funciones de un
control en modo de ejecución, mediante instrucciones escritas en el editor de códigos.
HAGA LAS SIGUIENTES PRÁCTICAS (consulte la diapositiva 17):
EJERCICIO 4.
a) Abra el editor de códigos para el lbl1.
b) Escriba la siguiente instrucción:
c) Regrese a la diapositiva en diseño y abra su presentación en pantalla.
d) Haga clic en el lbl1. ¿Qué ocurrió? Cambió la fuente y ahora lo escrito se ve en Arial.
EJERCICIO 5.
a) Abra el editor de códigos para el lbl2.
b) Escriba la siguiente instrucción:
c) Regrese a la diapositiva en diseño y abra su presentación en pantalla.
d) Haga clic en el lbl2. ¿Qué ocurrió? El texto se cambió por lo que escribió en el código.
NOTA: Para introducir un texto HAY QUE PONERLO ENTRE COMILLAS DOBLES (“ “)
EJERCICIO 6.
a) Abra el editor de códigos para el lbl1.
b) Escriba la siguiente instrucción:
c) Regrese a la diapositiva en diseño y abra su presentación en pantalla.
d) Haga clic en el lbl1. ¿Qué ocurrió? Cambió el color de fondo del control.
NOTA: Para cambiar colores se emplean los códigos dados en la diapositiva 19.
En estos casos la acción es Click, que aparece por defecto, pero puede cambiarla por
otras que se muestran en la ventana Procedimientos (ver diapositiva 17) ¡Hágalo!. 27
Para todos los controles, la redacción de líneas de instrucciones tiene la siguiente
SINTAXIS BÁSICA:
Nombre del control.Propiedad=Proposición
Label1 Font Arial
Label2 Caption “Carlos”
… BackColor QBColor(10)
… …
PUNTO OBLIGATORIO SIGNO = OBLIGATORIO

Todo lo que se muestre en un lbl podrá ser borrado o cambiado en modo de ejecución
mediante código. Veamos con el ejemplo del Ejercicio 1:
EJERCICIO 7.
a) Con estos dos bloques de instrucciones para el lbl1 se logra que con Click aparezca la
imagen de la letra I en Webdings, y el fondo sea verde (10); y con DblClick desaparezca
la imagen y el fondo sea rojo (12).
b) Observe que para borrar un texto se
deja vacío el espacio entre las comillas
dobles (“ “).
c) Si lo que quiere es cambiar la imagen
haciendo DblClick, se anotará otra letra
o número entre las comillas dobles. Pruebe otras letras/números en fuentes especiales.
ES HABITUAL EMPLEAR LA ACCIÓN CLICK PARA INSTALAR UN EFECTO,
Y DBLCLICK (dobleclic) PARA BORRARLO O CAMBIARLO. 28
Una imagen instalada en un lbl durante el diseño (diapositiva 26, Ejercicio 3) puede ser
cambiada por otra en modo de ejecución mediante código, para lo cual en la interface hay
que montar un panel de imágenes con las que vayan a ser utilizadas para el cambio. El
panel puede hacerse con Label (lbl) o controles de Image (img). Veamos cómo:
EJERCICIO 8.
a) Instale en su interface un lbl (también pueden usarse controles tipo img, el que será
estudiado seguidamente) por cada imagen que conformará el panel.
b) Seleccione Picture en el cuadro Propiedades de cada lbl del panel, e instálele
ilustraciones buscadas con el explorador.
c) Tendremos varios lbl a los que inicialmente se les declarará
(en el cuadro Propiedades) como Caption una letra
en fuente especial, lo que instalará una ilustración…
d) Y otros lbl (o img) que forman el panel de imágenes.
e) La acción de pasar ilustraciones del panel de imágenes a
los lbl puede realizarse:
• Con Click y DblClick en cada lbl para
pasarle imágenes del panel.

En este caso los controles del panel pueden ocultarse finalmente, declarándoles la propiedad
Visible False, en el cuadro Propiedades. Así funcionarán, pero no se verán.
• Con Click en cada imagen del panel
para pasarla a uno o más lbl.

En este caso los controles del panel deben tener la propiedad Visible True. 29
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

Use ilustraciones en formato JPG, pues ocupan menos memoria.

Tamaño de la ilustración. Con Stretch se ajusta al control; es lo más


conveniente para que la ilustración ocupe completamente el espacio
del control. Con Clip se muestra en su tamaño original.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica.
30
SE EMPLEA PREFERENTEMENTE PARA TRABAJAR CON IMÁGENES, PUES PERMITE
PROPIEDADES QUE OTROS CONTROLES NO POSEEN.
En el EJERCICIO 8 vimos su uso como panel de imágenes.
HAGA LA SIGUIENTE PRÁCTICA:

EJERCICIO 9.
Se trata de una presentación interactiva para mostrar
elementos gráficos, como pueden ser fotos familiares
o paisajísticas. Este ejemplo está diseñado con dos
Label y varios Image. Proceda así:
a) Busque una ilustración como marco adecuado.
b) Sitúe un lbl en cada cara, declarándoles BackStyle Transparent, y BorderStyle None. En
lbl1 declare una fuente (Font) de forma y tamaño adecuados para mensajes llamativos.
c) Escriba en Caption del lbl1 la siguiente instrucción: “Haga clic aquí para abrir el álbum.
Después clic en cada foto para pasar a la siguiente. Para cerrar, haga dobleclic aquí“.
d) Sitúe un control img por cada foto que mostrará, declare sus propiedades e instale las
fotografías. Incluya también un img de ocultamiento, sin ilustración y con BackColor
igual al del lbl2 . El panel se oculta con Visible False.
Panel de
imágenes
31
e) El código a escribir para el lbl1 será, con clic:

f) El código a escribir para el lbl2 será, con clic:

La sentencia condicional If…Then…ElseIf empleada significa:


• If: si…
g) Finalmente, para • Then: entonces…
cerrar el álbum digital • ElseIf: pero si…
con dobleclic en lbl1: (Ver más adelante)

Se reinstalan en lbl1 las instrucciones inicialmente escritas en Caption, y se


instala en lbl2 la img de ocultamiento, regresado todo a la posición inicial.
32
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

Si el control estará abierto (False) o cerrado (True).


Coloca como puntero del mouse una imagen tomada del explorador.

Si el control se activa con Click (toma el foco del programa, o no).

Como se ve, puede contener tanto texto (Caption) como


imágenes (Picture), pero en ambos casos se usan solo para
identificar al control (con su nombre y/o un logotipo).

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica.
33
COMO INDICA SU NOMBRE, SE EMPLEA COMO BOTÓN DE MANDO, PARA ENVIAR
INSTRUCCIONES A OTROS CONTROLES DE CUALQUIER TIPO.
En el EJERCICIO 8 vimos dos formas de pasar imágenes de un panel conformado por img a
uno o varios lbl. Ahora veamos cómo hacerlo con cmd. HAGA LA SIGUIENTE PRÁCTICA:

EJERCICIO 10:
a) Busque una ilustración como marco adecuado.
b) Sitúe un lbl1, declarándole BackStyle Opaque
y seleccione gris como BackColor.
c) Sitúe 3 cmd y póngales en Caption:
cmd2=“Animales”
cmd1=“Control”
cmd3=“Frutos”
(puede poner todas las categorías que quiera, con
un cmd para cada una; en este ejemplo usamos 2)
d) Sitúe un lbl2 pequeño como Label auxiliar,
con Font Arial y ocúltelo con VisibleFalse.
e) Sitúe un control img por cada ilustración que mostrará,
(todas las que quiera), declare sus propiedades e instale las fotografías.
Incluya también un img de ocultamiento, sin ilustración y con BackColor
igual al del lbl1. Este panel de imágenes se oculta con Visible False. 34
El panel de imágenes puede contener gran cantidad de controles img con fotos, los que podrán
apilarse unos sobre otros para ocupar un mínimo espacio en la diapositiva, y luego ser
ocultados con VisibleFalse.

f) El código a escribir para el cmd1 (Control) será, con clic:

En este caso la sentencia If…Then…ElseIf se simplifica como If..Then…Else:


por ser una sola la nueva condición que se incorpora al código.
g) El código a escribir para el cmd2 (Animales) será, con clic:

h) El código a escribir para el cmd3 (Frutos) será, con clic:

35
i) El código a escribir para el lbl1 (pantalla del TV) será, con clic:

Aquí la sentencia condicional


El lbl2 (auxiliar) permite el funcionamiento del operador If…Then…ElseIf se complementa
lógico And. Como, ve en la primera parte del bloque de con operadores lógicos, que
instrucciones, la condición básica es que el lbl2 muestre el significan:
número 1, y en la segunda parte, que muestre el número • And: y…
• Or: o…
2. Si se emplean más categorías, el cmd de cada una
instalará un nuevo número en lbl2 (3,4,5…), y en el bloque
de instrucciones cada uno de ellos permitirá el
funcionamiento del operador And. 36
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

Activa o desactiva la acción de la tecla Enter, indispensable para


incorporar grandes contenidos al TextBox. Conviene que sea True.
Actúa como un candado, y cuando está cerrado (True) impide que pueda
modificarse en modo de ejecución el contenido del TextBox.
Permite establecer el máximo de letras a escribir en el TextBox.
Cuando su valor es 0 significa que tal cantidad de letras es ilimitada.
Permite incorporar múltiples líneas al texto. Requiere
EnterKeyBehavoirTrue para funcionar. Conviene que sea True.
Instala a voluntad barras de desplazamiento (vertical/horizontal).
Activa o desactiva la acción de la tecla Tabulador.
Con estas dos propiedades se incorpora texto al control y se alinea
(izquierda, centro, derecha).
Permite activar (True) o desactivar (False) el control mediante código.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 37
TEXTBOX es uno de los controles más útiles en la programación VBA. Su principal recurso es
que permite editar su contenido en modo de ejecución.
PARA INCORPORAR TEXTO A UN TEXTBOX, EXISTEN LOS SIGUIENTES MÉTODOS:
a) Escribiendo directamente textos cortos en Text (Propiedades), en modo de diseño.
b) Escribiendo directamente textos cortos en el TextBox en modo de ejecución.
c) Copiando textos de cualquier tamaño y pegándolos en el TextBox en modo de ejecución.
Veamos cómo:
EJERCICIO 11:
a) Instale un TextBox con las propiedades más usuales, y abra la diapositiva en modo de
ejecución.
b) ¿Conoce esta acción en PowerPoint? Es muy útil para este caso: con clic derecho sobre la
vista en pantalla abra un cuadro de opciones, haga clic en Pantalla y luego en Pasar de un
programa a otro. Se mostrará abajo la barra Inicio. Abra el Menú principal y busque con
el explorador el documento que desee (por ej.: un block de notas). Ábralo y copie (total o
parcialmente) con Ctrl+C. Finalmente cierre todo y regrese a la presentación en pantalla
c) Sitúe el cursor del mouse en el extremo superior izquierdo de la diapositiva y active
Pegar con Alt+V. ¿Qué ocurrió? El texto aparecerá en pantalla, con una barra de
desplazamiento vertical para poder deslizarlo hasta su final.
d) Ahora en modo de ejecución podrá editar el documento (eliminar partes, agregar otras,
copiar y pegar…). Si no quiere que el texto pueda ser editado, active Locked True en el
cuadro Propiedades.
Ejercite las diversas formas para incorporar texto a un TextBox. 38
Con un TextBox se pueden enviar instrucciones a sí mismo o a
otros controles. Una de sus principales ventajas es el evento
Change, que le permite ejecutar acciones al recibir cambios
en modo de ejecución. La ventana Procedimientos (ver
diapositiva 17) del TextBox muestra los eventos que pueden
usarse con este control (no existe Click):
EJERCICIO 12:
a) Instale un txt1 (con las propiedades usuales). La indicación a cumplir es:
Escriba un color y lo verá en la caja de texto. Borre lo escrito y volverá a ser blanca.
b) Escriba el siguiente código para el txt1:

39
COMODINES LIKE:
Ya conocimos el operador lógico And (diapositiva 36). En el código del anterior ejercicio 12 el
uso del operador lógico Or permite escribir el nombre del color indistintamente con minúscula
o mayúscula, y el comodín Like “*” sustituyendo la primera letra de una palabra permite que
esta pueda escribirse indistintamente con minúscula o mayúscula. Otro comodín que puede
emplearse es Like “#” para sustituir cualquier número (solo o en una cadena numérica).
OPERADORES LÓGICOS Y DE COMPARACIÓN:
El evento Change otorga a los TextBox ilimitadas posibilidades, pues, cualquier mensaje que
se escriba desencadenará una gran diversidad de acciones. Un evento Change puede, además,
hacer aparecer nuevos mensajes en otros TextBox, generando secuencias de acciones para
resolver cualquier problema de interactividad. Es como darle instrucciones escritas a su
computadora para que ejecute lo que Ud. desea. Esto se incrementa empleando sentencias
condicionales como las ya vistas (If…Then…ElseIf, If…Then…Else:), con operadores lógicos
And/Or, así como también con operadores de comparación…
Los operadores de comparación permiten comparar un valor (o expresión) con otro de tipo
semejante, estableciendo si son iguales o diferentes entre sí, o si uno es mayor o menor que
otro. Son 6 los operadores de este tipo a emplear en VBA:
Todos los operadores de
= Igual que (resultado Verdadero) Comparación entre comparación devuelven como
<> Desigual que (resultado Falso) números o textos resultado: Verdadero (True) o
> Mayor que (ej.: 6>2…) Falso (False). Con estos
Comparación operadores no se pueden usar
< Menor que (ej.: 2<6…)
entre valores comodines Like, pues, estos solo
>= Mayor o igual que numéricos
<= Menor o igual que van con operadores lógicos.
Veamos el siguiente ejemplo: 40
EJERCICIO 13:
a) Busque ilustración como marco adecuado.
b) Sitúe dosTextBox: txt1, txt2.
c) Sitúe dos cmd, con Caption:
cmd1=“Preguntas”
cmd2=“Evaluación”
d) Sitúe un lbl1 pequeño, auxiliar, que luego
se ocultará con VisibleFalse.
e) Escriba el siguiente código para el cmd1 (las preguntas son solo un ejemplo):

Puede incluir cualquier cantidad de preguntas, pero teniendo en cuenta que se puedan
responder con números exactos o una palabra, y no requieran construir oraciones. 41
b) Escriba el siguiente código para el cmd2:

Como se ve, el código se construye con la sentencia condicional If…Then…ElseIf, reforzada


por operadores lógico (And) y de comparación (= <>). Téngase en cuenta que:
Cuando las respuestas sean nombres propios hay que dar la posibilidad de responder con
todo en mayúscula o con la letra inicial mayúscula (ej,: QUITO o Quito). Escribirlo todo en
minúscula (ej.: quito) será un error ortográfico. Cuando son nombres comunes hay que dar
la posibilidad de escribir todo en mayúscula o minúscula (ej.: PERRO o perro). Esto se logra
insertando la línea de instrucciones necesaria para cada caso (como se ve en el código).
Los operadores lógicos And y Or no pueden usarse juntos en una misma línea de
instrucciones, pues eso trastorna el programa. Hay que escribir una línea para cada uno.
42
La instrucción SelText es fundamental, y
también “” para borrar el texto que se
EJERCICIO 14: traslada. Si no quiere borrarlo, no utilice“”.
Para pasar texto de un textbox a otro:
a) Instale dos txt con sus propiedades.
b) Escriba este código para el txt1:
c) Escriba este código para el txt2:
d) Abra la diapositiva en modo de ejecución.
Escriba un texto en un txt y haga DblClick
en él (los txt no tienen Click). Luego haga
DblClick en el otro txt. Vea qué pasa…
e) Podrá hacer lo mismo si instala un cmd
y le escribe el siguiente código (con Click
para un caso y DblClick para el otro).
EJERCICIO 15:
Para crear un generador aleatorio de acciones por variación numérica constante:
a) Instale un txt con sus propiedades y escríbale el siguiente código (también se puede hacer
poniéndole el código a un cmd, que con Click lo ejecute en el txt):

b) Abra la diapositiva en modo de ejecución y active con MouseMove. Así, cada vez que el
cursor del mouse entre y salga del txt se actualizarán la fecha y la hora. Si solo quiere ver
la fecha ponga Date en el código, y para ver solo la hora ponga Time.
Esta propuesta se complementa con el siguiente ejercicio… 43
EJERCICIO 16:
a) Instale un txt1 con sus propiedades y escríbale el código del ejercicio 15, pero solo para la
hora (Time), y con tamaño suficiente para ver todo el texto: hora-minutos-segundos
(00.00.00).
b) Instale un txt2 (auxiliar) de tamaño pequeño, y finalmente ocúltelo con VisibleFalse.
c) Para este generador aleatorio de acciones escriba el siguiente código:

Se usa el comodín Like, en sus tipos # (para números) y * (para


caracteres de letras y signos) .
Con # se sustituyen los número del formato HH.MM.SS.
Ejemplo: 12.25.18 p.m. Solo se deja el último número de los
segundos, por lo que se escriben 5 signos #.
Con * se sustituyen los puntos entre los números, así como
letras y puntos de a.m./p.m., por lo que se escriben 6 signos *
Como último número de los segundos en cada línea de
instrucciones se escribe un número consecutivo del 1 al 0, lo
que abarca desde cada valor terminado en 1 (01,11,21,31,41,51)
hasta cada valor terminado en 0 (10,20,30,40,50,60).
Cada número en una sentencia condicional (del 1 al 0) genera un
número consecutivo (del 1 al 10) en el txt auxiliar.
Con el procedimiento Change, todos los cambios de números en el txt auxiliar generarán, al
margen de la voluntad del usuario, hasta 10 acciones diferentes en otros controles (lbl, img,
cmd, txt) instalados en la presentación, las que se ejecutarán aleatoriamente cada vez que el
cursor del mouse se detenga en el txt1 y se actualice la hora.
44
Botón de
Etiqueta Control de Imagen Comando Caja de Texto
Label (lbl) Image (img) CommandButton TextBox (txt)
(cmd)
Con estos 10 controles y mucha
creatividad, resolveremos Barra de Botón de Opción
todos los problemas. Veamos Desplazamiento OptionButton
ahora los 6 restantes… ScrollBar (scr) (opt)

Casilla de Control de
Verificación Número
CheckBox (chk) SpinButton (spn)

Formulario de
Cuadro de Lista
Usuario
ListBox (lst)
UserForm (frm)

(Haga clic en un cuadro para ir al contenido) 45


SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

El tiempo que se demora la acción del cursor, con un valor predeterminado


de 50 milisegundos.

Aquí se escribe el tamaño que se desea para el cursor de la barra.

Aquí se escribe el valor de la marca superior de la barra, e indica hasta dónde


podrá desplazarse el cursor.
Aquí se escribe el valor de la marca inferior de la barra. Generalmente es 0, e
indica el final del desplazamiento del cursor.

Aquí se escribe la cantidad de marcas que recorrerá el cursor en cada paso.


Generalmente es de 1 en 1, del valor Max. al Min. o viceversa.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 46
ScrollBar no es la simple barra de desplazamiento que se emplea en los txt para deslizar
textos. Se trata de un valioso control que, por su procedimiento Change, puede inducir
múltiples acciones a otros controles -al estilo de un CommandButton- cada vez que el cursor
se detenga en una etapa de su recorrido por la barra. Por ej.: si se instala un scb grande, con
un valor Max de 20 y un SmallChange de 1, se podrá inducir una acción a 20 controles, o 20
acciones diferentes a un mismo control.
HAGAMOS LA SIGUIENTE PRÁCTICA:
EJERCICIO 17:
a) Instale un scb1 horizontal con Delay 50, Max 3, Min 0, SmallChange 1.
b) Instale un txt1 de tamaño grande, con sus propiedades comunes.
c) Instale un lbl1 (auxiliar) pequeño, que finalmente se ocultará con Visible False.
d) Escriba el siguiente código para el ScrollBar 1:

El cursor se desplaza en una u otra dirección con clic en los botones de los extremos del scb,
generando acciones que con creatividad pueden aportar soluciones interesantes.
47
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.
Si el punto de selección estará a la izquierda o a la derecha del control.

La ilustración que se pondrá en el control, y la posición que ocupará en el


mismo (izquierda, derecha, centro…).

La alineación del texto que conforma el Caption del control.

Permite activar (True) o desactivar (False) el control mediante código.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 48
OptionButton permiten conformar una matriz desde la que se induzcan acciones a otros
tipos de controles con la selección de uno u otro opt, siendo fácil de elaborar pues no
requiere código de activación, ya que el focus del programa se instala automáticamente en
el opt donde se haga clic, borrándose de los demás. Sus posibilidades son semejantes a la
del scb. La siguiente figura es un ejemplo de matriz de opt, en que se aprecia lo siguiente:

• La posición del punto de selección es a la izquierda (propiedad Alignment Left).


• Se empleó fuente especial Webdings para los Caption, generándose ilustraciones.
• Se usaron colores diferentes para los BackColor, creándose un circuito llamativo.
HAGAMOS LA SIGUIENTE PRÁCTICA:
EJERCICIO 18:
a) Instale varios opt, formando una matriz, y declare sus propiedades.
b) Instale un lbl1, con tamaño grande para poder mostrar oraciones extensas.
c) Escriba este código a cada opt:
d) El mensaje variará en el código
de cada opt, en relación con la
ilustración que muestre.
Los efectos pueden ser muy diversos, según necesite. Así mostrará mensajes o ilustraciones,
generará movimientos, activará/desactivará controles, etc., para resolver sus múltiples
necesidades de programación. 49
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.
Si el punto de selección estará a la izquierda o a la derecha del control.

La ilustración que se pondrá en el control, y la posición que ocupará en el


mismo (izquierda, derecha, centro…).

La alineación del texto que conforma el Caption del control.

Permite activar (True) o desactivar (False) el control mediante código.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 50
CheckButton es un control muy semejante al OptionButton, y sus Propiedades son
idénticas, por lo que se manejan de igual modo y cumplen parecidas funciones.
Visualmente se diferencian porque en los chk el punto de selección tiene forma cuadrada, y
en los opt es circular. Funcionalmente las diferencias son mayores.
La principal diferencia funcional ocurre cuando se sitúan varios de
estos controles en una misma interface, conformando una matriz de
controles. Como su nombre indica, el OptionButton permite la
elección de una sola alternativa entre varias posibles, por lo que
cuando se hace clic en uno se desmarcan los demás (pasan al estado El uso de
Value False). Así, solamente un OptionButton podrá estar activo CheckButton es
(tener el focus del programa) cada vez. muy valioso para
elaborar sistemas
Por su parte, los CheckBox en una matriz de controles no se excluyen de comprobación
unos a otros, por lo que pueden marcarse varios a la vez, de conocimientos,
incrementándose las opciones de selección. Para desmarcar un al permitir la
CheckBox (pasarlo al estado Value False) ya seleccionado hay que selección de
hacer clic nuevamente en él. Para operar en modo de ejecución un diversas
CkeckBox (al igual que un OptionButton) mediante códigos, se escribe respuestas dentro
la instrucción Value True. Para desmarcarlo se escribe Value False. de una lista de
Al igual que los TextBox y los OptionButton, los CheckBox cuentan alternativas. Esto
entre sus procedimientos con el evento Change (también poseen Click se incrementa al
y los demás habituales), lo cual permite generar acciones con su combinarlos con
operación mediante códigos, cambiando su estado de activo a OptionButton.
inactivo, o viceversa. 51
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

El tiempo que se demora la acción del cursor, con un valor predeterminado


de 50 milisegundos.

Aquí se escribe la cantidad superior de números que puede alcanzar.


Aquí se escribe la cantidad inferior de números que puede alcanzar.

SI se le situará en forma vertical u horizontal.


Aquí se escribe la cantidad de pasos que se recorrerán con cada accionar
del botón. Generalmente es de 1 en 1, del valor Max. al Min. o viceversa.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 52
SpinButton es un control que se utiliza para seleccionar un valor dentro de un rango
numérico pre-establecido con las propiedades Max (el valor superior que se puede
alcanzar) y Min (el valor inferior, que generalmente es 0), variándose según los pasos
que se establezcan con la propiedad SmallChange (generalmente de 1 en 1). Consiste
en una caja con botones de flecha arriba (SpinUp) y abajo (SpinDown) cuando se sitúa
verticalmente, y de izquierda a derecha, cuando está en forma horizontal. Su principal
propiedad es Change, que permite las variaciones numéricas establecidas.
EJERCICIO 19:
a) Instale un spn1, un lbl1 y un lbl2.
b) Declare al spn1 las propiedades Max 100, Min 0, SmallChange 1.
c) Declare al lbl1 las propiedades Font Webdings, TextAlign Center, Border Single. Y al lbl2
las mismas propiedades, pero con Font Arial.
d) Escriba el siguiente código para
el spn1:
Vea que con Change se muestran
en lbl2 las variaciones numéricas…
Y con SpinDown y SpinUp
se producen en lb1 diversas acciones
complementarias entre sí.
Para regresar un SpinButton al valor inicial instale un cmd y escríbale el código para Click:
SpinButton().Value = 0 53
SU CUADRO DE PROPIEDADES
Las propiedades comunes a otros controles no se explican,
pues ya son conocidas y se usan de igual modo.

Cantidad de columnas que tendrá el cuadro de lista. El valor 1 es adecuado.


Si se pondrá (True) o no (False) un encabezamiento a cada columna.
El ancho que tendrá cada columna. El valor 1000 pt es adecuado.
SI la lista estará disponible (True) o no (False) en un momento dado.

Si la altura de la lista aumenta (True) según su contenido.

Si en la lista se emplearán o no botones de opción.

Cómo se hará la búsqueda de elementos en la lista (por letras, nombres…)

Si los elementos se seleccionarán de forma sencilla (Single) o múltiple.

No todas las propiedades se explican, sólo las más frecuentes.


Las demás podrá irlas conociendo mediante la práctica. 54
ListBox es un control muy valioso para la creación de bases de datos o evaluadores de
resultados, ya que permite la selección de una o más decisiones dentro de una lista de
opciones en pantalla. Es como emplear OptionButton o CheckBox, pero apoyados en la acción
de un TextBox. HAGAMOS LA SIGUIENTE PRÁCTICA:
EJERCICIO 20:
a) Instale un lst1, un lst2 y un txt1. Póngales las propiedades básicas.
b) Escriba el siguiente código:
c) Abra la presentación y
proceda a instalar texto en el
txt1 en modo de ejecución,
bien escribiendo directamente
en él, o copiándolo de una
fuente externa (un block de
notas) y pegándolo con Ctr+V
(ver diapositiva 38).
d) Haga DblClick en txt1 y lo allí escrito pasará al lst1 , conformando una lista de opciones.
Tenga presente que debe pasar cada opción por separado. Esto es: escriba (o copie/pegue)
una, y traspásela con DblClick; luego haga lo mismo con la segunda, y así sucesivamente. Si
pretende pasar juntas varias opciones del txt1 al lst1, se mostrarán como una sola.
e) Finalmente, en el lst1 seleccione las opciones (una o varias) que desee, y al hacer Click en
cada una se mostrará de igual manera en el lst2, pero sin borrarse del lst1.
DE ESE MODO PODRÁ CONFORMAR SU RELACIÓN DE DECISIONES, SELECCIONADAS DE
UNA LISTA DE POSIBLES OPCIONES. 55
Un Formulario de Usuario (frm) no es precisamente un control. Si en VBA sobre PowerPoint las
diapositivas son la interface de programación, en el programa VisualBasic (VB) ese soporte son
los formularios. Así que en VBA se emplea el frm como una matriz de controles, que cumple
diversas útiles funciones. Para instalarlo hay que abrir el editor de códigos, donde…

Un formulario ya existente y
guardado se busca aquí…

Con clic en este Con clic en este botón se inserta


botón se inserta el cuadro de Propiedades…
un Formulario de
Usuario nuevo en Con clic en este botón se inserta
el área de diseño… el cuadro de Herramientas… 56
En el cuadro de Los controles se instalan en un
Herramientas están los Userform como se hace en una
diapositiva, y se les otorgan las
controles ya conocidos Propiedades vistas anteriormente.
(y otros que no HAGAMOS LA SIGUIENTE PRÁCTICA:
usaremos en VBA):
EJERCICIO 21:
a) Instale un frm con BackColor Verde,
ScrollBars Both, en Caption escriba
PRUEBA, StarUpPosition Manual,
Picture (busque una adecuada en
su explorador), PictureAlignment
• Label Left, PictureSizeMode Zoom. Dele
• TextBox el tamaño que quiera, usando los
• ListBox puntos dimensionales.
• CheckBox b) Instale en la parte inferior central
• OptionButton del frm un cmd1 (selecciónelo del
• CommandButton cuadro Herramientas) y dele
• ScrollBar propiedades básicas.
• SpinButton c) Instale en la parte superior central
• Image del fmr un txt1 con propiedades
• Cursor para básicas. Emplee BackStyle
seleccionar Transparent, Font de tamaño
objetos grande, y ForeColor contrastante.
(Sigue a continuación…) 57
d) Haga dobleclic en cmd1 instalado en el frm1, y abra un editor de códigos para ese control.
Escriba las instrucciones:
e) En una diapositiva instale un
cmd1, con las propiedades
básicas, y escriba el siguiente
código:
Clic en él en modo de ejecución.
f) Ejecute en el frm que se abra las instrucciones (Click, DblClick) para el cmd. ¿Qué ocurre?
g) Para ocultar el frm haga clic en el botón Cerrar (extremo superior derecho).
Habrá comprendido que el frm es aquí una interface auxiliar de programación insertada en la
interface principal de VBA sobre PowerPoint (las diapositivas), que puede ser abierta en modo
de ejecución para ejecutar múltiples acciones, como la aportación de instrucciones, de textos
al margen, de listas con elementos y opciones, de soportes para escribir en pantalla, etc.
HAGAMOS LA SIGUIENTE PRÁCTICA:
EJERCICIO 22:
a) Instale un frm igual al del Ejercicio 21, pero en Caption escriba INSTRUCCIONES.
b) Instale en el frm un txt1 con las propiedades comunes. Cuide que su BackColor sea
contrastante con el del frm.
c) Copie y pegue en el txt un texto (como ya sabe hacer desde el Ejercicio 11).
d) Instale un cmd en la diapositiva, con el código:
e) Con clic en el cmd en modo de ejecución verá
el frm en la diapositiva, y si el txt tiene la propiedad Locked False
podrá escribir en él. 58
Al otorgarle propiedades a un frm Ud. puede Luego de abrir un UserForm es posible
decidir en qué lugar de la diapositiva quiere desde un control instalado en él accionar
que aparezca (lo más común es en el centro). sobre una diapositiva, o viceversa,
Pero podrá moverlo a voluntad en modo de empleando códigos como los que se
ejecución si le declara como propiedad ejemplifican a continuación:
StartUpPosition Manual, lo cual es muy Slide().Label()=()
conveniente. UserForm().Label()=()
También podrá regular en modo de diseño el En el primer caso el código se escribe en el
tamaño del frm que confecciona, mediante las frm y opera en la diapositiva (slide). En el
flechas dimensionales en sus extremos. Y así segundo caso se escribe en la diapositiva
podrá ocupar un espacio semejante al de la (slide) y opera en el frm (entre paréntesis
diapositiva donde aparecerá. van los números y la proposición).
Si sitúa varios frm con dicho tamaño, podrá
seleccionar y mostrar el que desee en cada
momento, mediante cmd situados en un borde
de la diapositiva. La cantidad de frm podrá ser
ilimitada, pues se mostrarán uno a uno en la
presentación, como los vaya seleccionando.
ESTO LE PERMITIRÁ CONFECCIONAR UNA
PRESENTACIÓN DE POWERPOINT CON UNA
SOLA DIAPOSITIVA, EN LA QUE TODO EL
CONTENIDO SE MUESTRE EN VARIOS frm QUE
SERÁN OBSERVADOS UNO A UNO, SEGÚN SU
VOLUNTAD.
59
Las estructuras de control son códigos encargados
de determinar el flujo de ejecución de
un programa, permitiendo realizar un proceso
repetidas veces en función de los denominados
bucles, o ciclos de instrucciones. Los lenguajes de
programación tienen estructuras de control
similares, y básicamente lo que varía entre ellas
es su sintaxis. En VBA estudiaremos las siguientes:

Sentencias
condicionales
Dominar las estructuras de control
aporta al desarrollador la capacidad
necesaria para resolver todo tipo de
problemas con sus programas. De
modo que, habiendo tratado ya con Funciones Variables
profundidad lo referente al manejo de
controles, le sugiero prestar toda su
atención al siguiente contenido… 60
Ya desde la diapositiva 32 conocimos las posibilidades de
Sentencias las sentencias condicionales, muy usadas en programación.
condicionales Con ellas se puede:
De acuerdo a una condición, ejecutar un grupo u otro de instrucciones (If…Then…Else/ElseIf).
De acuerdo a casos variables, ejecutar un grupo u otro de instrucciones (Select…Case).
(Existen otras sentencias condicionales, pero son suficientes estas dos para los fines de este curso).

SENTENCIA IF SIMPLE:
a) Se trata de una estructura de control que permite redirigir un
curso de acción según una condición inicial sea falsa o
verdadera. Si la condición 1 es verdadera se ejecuta el bloque
de instrucciones 1, de lo contrario, se ejecuta el bloque 2.
b) Se pueden plantear simultáneamente múltiples premisas: si se
cumple la condición 1 se ejecuta el bloque de instrucciones 1,
en caso contrario se comprueba la condición 2, y si es cierta
se ejecuta el bloque 2, y así sucesivamente hasta ilimitadas (n)
condiciones. Si ninguna de ellas es cumple se ejecuta el bloque
de instrucciones Else.
Cada condición
tiene la estructura:

Como ya se conoce, puede combinarse con operadores lógicos o


de comparación, y siempre termina con End If.. 61
SENTENCIA SELECT-CASE:
a) Permite ejecutar una de entre varias acciones en función del valor de una expresión. Es
una alternativa a If…Then…Else , pero comparando valores numéricos, para lo cual se
recorren los "Case" en la estructura, buscando el que coincida con uno de los valores.
b) Cuando se encuentra la primera coincidencia se ejecuta el bloque de instrucciones
correspondiente y se cierra la estructura Select-Case. Si no se encuentra coincidencia con
algún valor, se ejecuta el bloque de instrucciones Case Else.
Presenta dos variantes: La condición inicial
tiene la estructura:

SELECT CASE IS:


• Luego de escribir la condición inicial se escribirán los Case
(casos condicionales) , que en esta variante están formados
por: (Case Is)(operador de comparación)(valor numérico).
Luego se escribe el bloque de instrucciones a ejecutar. Siempre
se termina con End Select en ambas variantes.
SELECT CASE TO:
• Luego de escribir la condición inicial se escribirán los Case,
que en esta variante están formados por: Case (número
menor) To (número mayor). Luego se escribe el bloque de
instrucciones a ejecutar mientras el valor numérico en el
control esté dentro del rango indicado (1 al 15 en este ejemplo).
(En los ejemplos se usó un txt como control. También puede utilizarse un lbl, con igual resultado). 62
En programación, una función es un grupo de instrucciones
Funciones que se ejecuta al ser llamada desde otra función o
procedimiento, para entregar un resultado.
Pueden ser llamadas múltiples veces para recibir datos desde afuera a través de sus
parámetros. Se diferencian de los procedimientos porque estos no devuelven resultado.
Una función tiene tres componentes básicos:
• Los parámetros, que son los valores de entrada. Generalmente las
• El código, que son las operaciones, o proceso, que realiza. funciones inician su
• El resultado, que es el valor final que entrega a la salida. código con la variable
int (Integer).
FUNCIÓN RANDOM:
La función Int(#*Rnd+1) se emplea en la GENERACIÓN ALEATORIA DE NÚMEROS, de mucha
utilidad en proyectos de programación. Sus componentes significan:
Int: declaración de la función como Integer (variable que trabaja con números).
#: se escribe el valor mayor que puede alcanzar la función (1000, por ejemplo).
*Rnd + 1: esta fórmula generará aleatoriamente un número entero del 1 al 1000.
EJERCICIO 23:
a) Instale un txt1, con sus propiedades básicas.
b) Escriba el siguiente código:
c) Cuando haga DblClick en el control
se mostrará un número, en este caso
del 1 al 1000, aleatoriamente generado.
Esto también puede hacerse con clic en un cmd, y tanto para un txt como para un lbl. 63
FUNCIÓN MSGBOX:
La función MsgBox se emplea en la creación de CAJAS DE MENSAJES, que cumplen un
importante papel de interactividad en los programas, devolviendo resultados a partir de
varios argumentos escritos en el código. Durante el diseño los argumentos van mostrándose
en listas cuando se escribe una coma (,) en el texto, a fin de que se pueda elegir el que se
desee, en el orden: “mensaje”,diseño+botones,”titulo”.

EJERCICIO 24:
a) Con un txt y un cmd haga este
ejercicio. Escriba en el txt el mensaje que se muestra, y ponga al cmd
el Caption Borrar.
a) Luego de escribir los códigos podrá, con clic en el cmd, abrir un MsgBox
titulado EJEMPLO, que tiene las opciones Sí / No. Con clic en No nada
pasará; con clic en Sí se borrará el mensaje del txt. En ambos casos el
MsgBox desaparecerá luego de hacer clic en alguno de ambos botones.
c) Los argumentos empleados y sus efectos en el MsgBox, son los
siguientes :
¿Recuerda
• Título: para escribir entre comillas dobles el título que tendrá el haber visto esto
MsgBox al mostrarse. en aplicaciones
• Diseño: para escoger un signo (¡…?...) con que ilustrar el MsgBox. de Windows?
¿Cómo se hace?
• Mensaje: para escribir entre comillas dobles la instrucción que Lo aprenderá a
aparecerá en el MsgBox. continuación…
• Botones: para escoger la opción de selección del MsgBox. 64
Para escribir el código al control empleado (generalmente un cmd), se escribe el nombre de la
función. Escriba al final un paréntesis ( y se mostrará la lista de argumentos…
Nombre de la función

“mensaje”, diseño+botones, ”titulo”


El elemento en turno dentro de la lista se verá en negrita (Prompt, primeramente). Después
del paréntesis escriba entre “” el mensaje que aparecerá en el MsgBox. Escriba una coma ,
y se abrirá una lista de opciones para el diseño…

Haga dobleclic en la opción de diseño que escoja, escriba seguidamente un signo + y se abrirá
una lista de opciones para los botones…

65
Haga dobleclic en la opción de botón que escoja, escriba seguidamente una coma , y se pasará
al último elemento de la lista, que es el título del msg. Escríbalo entre “” y cierre el paréntesis.

La función terminada
quedará finalmente así…

Termine de escribir el código empleando una sentencia condicional simple If…

Donde la proposición está determinada por la opción de botón escogida (en este caso vbYes).
Escriba la instrucción a ejecutar en el control (en este caso txt1). Y termine con End If.
LAS OPCIONES DE DISEÑO LAS OPCIONES DE BOTONES
MÁS COMUNES (Y LOS MÁS COMUNES (Y SUS Sin importar cuántos botones de
SÍMBOLOS QUE ACCIONES) SON:
comando existan en un MsgBox,
IMPLEMENTAN) SON: • vbOK: clic en Aceptar sólo podrá hacerse clic en uno,
• vbCritical: letra X • vbCancel: clic en Cancelar pues al hacerlo desaparecerá de
• vbQuestion: interrogación • vbAbort: clic en Abortar
inmediato, y el valor de
• vbExclamation: admiración • vbRetry: clic en Reintentar
• vbIgnore: clic en Ignorar
respuestas será solo el del botón
• vbInformation: letra i
• vbYes: clic en Sí en que se hizo clic.
• vbNo: clic en No 66
FUNCIÓN INPUTBOX:
La función InputBox se emplea en la creación de CUADROS DE ENTRADAS, que cumplen un
importante papel de interactividad en los programas. Al igual que las MSGBOX, vistas
anteriormente (diapositiva 65), para escribir el código al control empleado (generalmente
un cmd) se ponen el nombre de la función y un paréntesis ( y de inmediato se mostrará la
lista de argumentos: InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])
El primer argumento (prompt) es el mensaje que se desea aparezca en el InputBox, luego se
escribe una coma (,) y se pondrá como segundo argumento (title) el título que llevará el
cuadro de entradas. Los otros argumentos no son necesarios. Para realizar un InputBox es
preciso emplear una sintaxis de variable, lo que será estudiado más adelante (diapositiva
70). Por eso veremos ahora este único caso indispensable:

EJERCICIO 25:
a) Instale un CommandButton y un TextBox, con las propiedades habituales.
b) Escriba al cmd1 el código:
declare la variable con Dim str
y póngale un nombre que la
designe. Valídela con la función InputBox, escribiendo el prompt y el title que desee.
Cuando haga clic en el cmd se mostrará el cuadro
de entradas siguiente, donde en la ventana de
edición podrá escribir según el mensaje, y al hacer
clic en Aceptar, lo que escriba se verá en el txt.
Con este procedimiento se podrá cambiar el Caption
de un control en modo de ejecución. 67
EJERCICIO 26:
Con el recurso de los TextBox, los ListBox, y ahora los InputBox, podrá Ud. construir su
propia BASE DE DATOS. El siguiente producto es muy elemental, pero lo que se pretende es
que aprenda a conocer las posibilidades que brinda la combinación de estas herramientas
para la realización de un proyecto sencillo y práctico.
a) Instale un TextBox, 2 ListBox y 3 CommandButton, con sus propiedades habituales.
b) Al cmd1 póngale ENTRADA DE DATOS como Caption y escríbale el código:

Así implementará un InputBox por cada información que desee incluir en la base de datos.
Cuando haga clic en este cmd1 en modo de ejecución se irán mostrando los InputBox
consecutivamente, y las respuestas que se escriban en ellos se podrán ver en el txt1.
c) El siguiente código para el txt1, con el procedimiento Change irá transfiriendo al lst1 la
información que reciba del InputBox, la que se mostrará como lista de opciones para
conformar el almacén de la base de datos. El txt1 debe ser ocultado con Visible False.

68
d) Escriba este código para el lst1, que permitirá seleccionar en él la información deseada,
pasándola con clic en su botón de opción al lst2, donde se mostrará igualmente como
una lista:

e) Finalmente, estos
códigos para cmd2 y
cmd3 permitirán dejar
vacíos los ListBox 1 y 2
cuando sea necesario:
EJERCICIO 27:
Ahora veamos cómo COMBINAR MSGBOX E INPUTBOX para decidir sobre la entrada o no de
información en una base de datos:
a) Instale un TextBox y un CommandButton, con sus propiedades habituales.
b) Escriba el siguiente código al cmd1:

Cuando haga clic en el cmd en modo de ejecución se mostrará un InputBox donde escribirá su
respuesta, y cuando haga clic en Aceptar se mostrará un MsgBox donde podrá optar por SI o
NO. En el primer caso su respuesta irá al txt; en el segundo caso no aparecerá en él.
69
Las variables son las estructuras de control más importantes
Variables en todo lenguaje informático, pudiendo considerarse como la
base de la programación.
Cada una resulta un área temporal de almacenamiento de datos alojados en la memoria de
la computadora, donde se guarda un valor que va a variar (de ahí su nombre) durante la
ejecución del programa, y que puede ser llamado en cualquier momento para cumplir
funciones definidas por el programador mediante códigos.

EL TRABAJO CON VARIABLES REQUIERE 2 PASOS:


1. DECLARARLA. Para usar una variable primero hay que declararla con la instrucción Dim,
que declara variables asignándoles un nombre y un tipo. Los tipos más frecuentes son:
bln (tipo Boolean): contiene resultados Verdadero (True) o Falso (False), Sí o No.
int (tipo Integer): contiene valores numéricos entre -32,768 y 32,767.
str (tipo String): contiene cadenas ilimitadas de caracteres no numéricos.
cur (tipo Currency): contiene cadenas ilimitadas de valores numéricos.
vnt (tipo Variant): contiene cualquier tipo de dato (numérico o de texto).

Al declarar una variable se usa la sintaxis: Dim (Nombre) As (Tipo)


El Nombre se forma con el prefijo de su tipo y una palabra clave que la identifique
según su función. Y el Tipo es uno de los 4 expuestos arriba. Por ejemplo:
Dim intResultado As Integer
Es una variable nombrada Resultado, tipo Integer (int), con valor numérico 70
2. VALIDARLA. Después de declarar una variable podrá almacenar datos en ella; esto es:
darle un valor mediante una instrucción de asignación, que usa la sintaxis:

Nombre = ValorAsignado
Como ValorAsignado puede emplearse una expresión literal, una expresión matemática,
otra variable, una expresión lógica o una cadena, la propiedad de un control (los que
aparecen en el cuadro Propiedades), etc. Por ejemplo:
strResultado = “Patricia” Contiene una expresión literal (se escribe entre “”).
intResultado = 571 Contiene una expresión matemática.
vntResultado= strPrueba Contiene otra variable (se escribe su nombre).
blnResultado=True Contiene una expresión lógica (Verdadero/Falso).
vntResultado=Font Arial Contiene una propiedad del control.
La variable ya declarada y validada podrá emplearse para asignar un procedimiento de evento
a cualquier control dentro del programa. HAGAMOS LAS SIGUIENTES PRÁCTICAS:
EJERCICIO 28:
BUCLE FOR:
Se emplea para repetir la ejecución de instrucciones n veces, según la diferencia numérica
entre un valor inicial (#1) y uno final (#2), con un número de pasos dados por el valor que se
dé a la propiedad Step. Si el #1 es menor que el #2, Step tendrá valor positivo (+), siendo
negativo (-) si el #1 es mayor que el #2. Con un bloque de instrucciones aplicado a un txt, por
su propiedad Change pueden generarse múltiples acciones a otros controles. A continuación
se explica cómo proceder… 71
a) Instale un TextBox1, un TextBox2 y
un SpinButton1, con sus propiedades habituales.
b) Escriba el siguiente código al spn1:
c) Escriba el siguiente código al txt1, con Change:

d) Observe en el código anterior que:


• Se declara y nombra una variable: Dim intPrueba As Integer.
• Se valida la variable: intPrueba=TextBox1.BackColor And TextBox1.Text
• Se usa el operador lógico And para dar dos elementos al valor de la variable.
• Se declara el bucle For para la variable: For intPrueba con valor: 1 To 50 (del 1 al 50) y
Step 1 (paso a paso), lo cual quiere decir que el bucle se repetirá 50 veces. Estos
valores serán dados por el programador, si quiere lograr mayor o menor recorrido del
bucle (por la distancia entre los números inicial y final), y mayor o menor reiteración, o
cantidad de pasos (por el número de Step).
• Se establece la instrucción, consistente en que el txt2 muestre el contenido establecido
por el valor de la variable intPrueba (TextBox1.BackColor And TextBox1.Text). Y así, en
el txt2 se mostrarán el texto y el color de fondo del txt1, con una secuencia de veces
establecida por Step hasta recorrer la distancia entre los números, como ordena el
cierre obligatorio del bucle (DoEvents/Next). Aquí, por ser paso a paso (Step 1), la
instrucción se cumplirá 50 veces, generando igual cantidad de posibles acciones… 72
EJERCICIO 29: Se emplea para ejecutar acciones que se repiten, conformando un lazo
(loop), mientras (Do While) se mantengan válidos los valores empleados
BUCLE WHILE: como premisas. En el Ejercicio 15 instalamos un generador aleatorio de
acciones por variación numérica constante, basado en la Fecha y Hora
tomadas del sistema para un txt con el procedimiento MouseMove. Ahora
realizaremos un RELOJ DIGITAL que funcione permanentemente con un clic.
a) Instale un TextBox1, un TextBox2 y un SpinButton1 vertical, con propiedades habituales.
b) Escriba el siguiente código al spn1, con procedimientos SpinDow y SpinUp:
c) Escriba este código para
el txt1, con Change: Es el apagado del reloj

La Fecha y Hora instaladas Es el encendido del reloj


inicialmente por el sistema
en txt2, pasan al txt1 con
SelText. Con esas lecturas se
declaran las dos variables
strHora. Al compararlas con
Do While, por ser iguales (=)
se cumple de nuevo la
instrucción para el txt2,
actualizándose Fecha y Hora
de manera constante.
La sentencia de salida y la instrucción Exit Do evitan que el lazo sea infinito y el sistema se bloquee.
Al final el txt1 se oculta con Visible False, y solo se verá el txt2. 73
EJERCICIO 30:
¿Quiere hacer esta CALCULADORA? Verá cómo.
Necesita: 2 TextBox
6 CommandButton
a) Declare a estos controles las propiedades habituales.
Cuide que en los txt el tamaño de Font sea óptimo, que
TextAligment sea Right, así como los BackColor atractivos.
b) El apagado de la calculadora, con DblClick en el cmd
On/Off, borra todo en los txt, pone los BackColor en gris,
y cierra candados en todos los controles (Locked True)
para evitar que puedan accionarse por error.
c) El encendido con Click en
ese botón abre candados en
los txt (Locked False), borra
todo en ellos y les pone los
colores de fondo previstos .
d) Ahora podrá actuar según
se indica en el ejemplo:
sitúe el cursor en el txt1
(azul) y escriba un número.
Con clic lo pasará al txt2
(amarillo). Luego escriba un
segundo número en el txt1.
74
e) Observe que pasar un número del txt1 al txt2 (instrucción SelText) no se hace con Click (los
txt no tienen esta propiedad), sino que se emplea MouseDown (que se ejecuta cuando se
oprime el botón del mouse). El número se borra del txt1, e inmediatamente que aparece
en el txt2, por la propiedad Change se abren los candados (Locked False) en los 4 botones
de operaciones aritméticas (+ - * /) y estos quedan listos para procesar el resultado:

f) Para obtener un resultado en cada operación aritmética hay que emplear 2 variables:
• La primera corresponde al contenido del txt1, y se nombra curPantalla1.
• La segunda corresponde al contenido del txt2, y se nombra curPantalla2.

Observe que el tipo de


variable empleado es
Currency (cur) pues
permite cadenas
ilimitadas de números,
así como valores
enteros y decimales.

75
g) Observe que para cada operación aritmética se comparan ambas variables, con la sintaxis:
TextBox2.Text = (variable1) (signo aritmético) (variable 2)
También se
borra el txt1,
para una
nueva acción.

h) Una última
instrucción
permite borrar el
contenido del txt2
para rectificar un
error.

Si quiere una calculadora con teclas, sitúe otros 10 cmd, con


Caption: 1,2,3,4,5,6,7,8,9,0, y dé a cada uno el siguiente código:
Con clic, cada cmd incorpora al txt1 el número que lo identifica
en su Caption. Pero, para que ese número no sustituya al que ya está en el txt, sino que
se adicione al final del mismo, después de poner la variable hay que colocar un ampersand
(&) como operador de enlace, y luego poner el número entre “”. Este operador se emplea
para unir los dos extremos de una cadena de caracteres. Los 10 nuevos cmd también deben
ser accionados con Locked True y Locked False al apagar y encender la calculadora (incisos
b,c). Y otro importante detalle es que NUNCA se debe usar TextBox1.Text=“”,
sino: TextBox1.Text=“0” para que el código encuentre un valor inicial en txt1.
76
Ya hemos cumplido el propósito de conocer controles y
estructuras de control en el lenguaje de programación
VBA. Ahora corresponde integrar esos recursos en el
logro del objetivo final: el desarrollo de proyectos de
programación, o softwares. Lo que abordaremos aquí
son procedimientos y recomendaciones para alcanzar el
éxito en lo que cada cual se proponga realizar.
La realización de un proyecto computacional es una
tarea semejante a la construcción de una maquinaria,
donde cada pieza debe estar en su lugar exacto para
que el conjunto funcione correctamente. No se puede
modificar un elemento interno cuando ya se está
trabajando en la cubierta exterior. De modo que desde
el inicio hay que tener claridad sobre lo que se desea y
cómo lograrlo, para ir avanzando paso a paso desde lo
inferior hacia lo superior, desde adentro hacia afuera. Y
eso solo será posible si se aplica una metodología que
las Ciencias Informáticas definen como

77
La Ingeniería de software es la aplicación de un enfoque sistemático al diseño, desarrollo,
operación y mantenimiento de programas informáticos. La creación de softwares es un
proceso intrínsecamente creativo y la Ingeniería de software trata de sistematizar este
proceso con el fin de reducir el riesgo del fracaso en la consecución del objetivo, que no es
solamente la resolución de problemas, sino sobre todo teniendo en cuenta las diferentes
soluciones, elegir la más adecuada. La metodología se resume en el esquema:
Aplicándolo a la realidad del presente Curso se pueden
definir sus componentes del siguiente modo:
• HERRAMIENTAS: los controles y estructuras de control
que el lenguaje VBA pone al servicio del desarrollador.
• MÉTODOS: planteamiento y solución de problemas
(práctica heurística) mediante herramientas
computacionales, y fomento del trabajo intelectual
individual y colectivo con técnicas de creatividad, como Brainstorming (tormenta de ideas).
• PROCESO: creación de interfaces en soporte PowerPoint, escritura de códigos VBA, pruebas
continuas del diseño en modo de ejecución.
• ENFOQUE DE CALIDAD: usar los controles y estructuras más adecuados para cada caso,
aplicar las soluciones más sencillas, una escritura ordenada de códigos con claridad y
precisión, una presentación atractiva y coherente del producto final.
ES UN PROCESO CON 3 COMPONENTES BÁSICOS:

Intereses y necesidades Desarrollo Producto final


Su desarrollo comprende las 3 siguientes etapas:
Partiendo de los intereses y necesidades planteados se procede a
DISEÑO concebir el software que se desea, aplicando métodos heurísticos y
(creación de la creativos, tanto individual como colectivamente. La mayor capacidad
del ser humano es que puede crear un mismo producto dos veces:
interface) primero en su mente, y luego con sus manos lo que imaginó. Esta es
una etapa decisiva, donde se construyen las bases que soportarán al
edificio, como resultado de la cual se sabrá qué se quiere hacer…
Sabiendo qué se quiere hacer se procederá a analizar la dinámica del
PLANIFICACIÓN software, procurando una comprensión lo más exacta posible sobre
(algoritmos de cómo funcionará, qué algoritmos, o lógica de ejecución, hay que
cumplir para llegar al objetivo previsto en el diseño. Para esto es
funcionamiento) indispensable considerar con qué herramientas se cuenta, ya que lo
propuesto tiene que ser absolutamente realizable. Si no se dispone
de herramientas a tal fin, habrá que reajustar el diseño.
Habiendo vencido las dos etapas anteriores ya se tendrá el 80% del
REALIZACIÓN éxito, pues lo que queda es ¡poner manos a la obra!, en un empeño
(escritura de básicamente “de taller”, paciente, persistente, cuidadoso y técnico, a
fin de aplicar los algoritmos planificados, con el uso de herramientas
códigos) disponibles para alcanzar los objetivos diseñados. De modo que si
todo lo anterior fue bien hecho… ¡FELICIDADES! Se tendrá un buen
producto final.
El producto final, que es una PRESENTACIÓN INTERACTIVA, es mejor guardarla con la opción
PRESENTACIÓN CON DIAPOSITIVAS DE POWERPOINT HABILITA PARA MACROS,
lo que permitirá abrirla directamente en modo de ejecución, y no en modo de diseño. 79
Algunos Programe Procure programar los controles del mismo
consejos… ordenadamente y con tipo en orden numérico. Así podrá localizarlos
claridad, para que con facilidad dentro del total.
luego pueda revisar Cuando un mismo control deba cumplir varias
bien el código y funciones (Caption, ForeColor...) escríbalas en
analizar su estructura. el orden en que desee se ejecuten. El
Localizar un error en programa siempre "corre" de arriba a abajo.
un código confuso Si eso fuese indiferente, puede agrupar los
puede enloquecer a controles por tipos de funciones. Por ej.:
cualquiera. primero todos los Caption, luego los
ForeColor, y así sucesivamente.

Escribir códigos que se repiten es sencillo con la posibilidad de


Copiar y Pegar. Seleccione con el mouse (como en un
Pruebe continuamente el procesador de texto) el bloque de instrucciones que quiera
proyecto en desarrollo, y no copiar, y péguelo donde necesite. Como seguramente tendrá
espere al final para que cambiar algunos datos en la copia, eso se facilitará del
comprobar cómo va. Y no siguiente modo: estando en el editor de códigos seleccione el
olvide ir salvando lo texto que pegó y haga clic en el ícono Buscar, de la barra de
realizado, pues una falla en el menús. En el cuadro que se abrirá elija la opción Reemplazar.
sistema le ocurre a Escriba en la ventana Buscar el texto a cambiar, y el nuevo
cualquiera... y es muy texto en la ventana Reemplazar con. Cerciórese que está
lamentable tener que marcada la opción Texto seleccionado, y haga clic en la tecla
comenzar todo de nuevo. Reemplazar todo.

Nunca diga: “¡Este programa no quiere correr!” Si su programa no funciona


puede estar 100% seguro de que contiene un error de Ud. Tómelo con calma y
póngase a revisarlo con detenimiento. La causa puede estar en un imperceptible
punto. El programa es obediente, y hará todo lo que se le ordene bien… 80
En programas con muchos controles puede ser tremendamente trabajoso escribir para cada
control extensos bloques de instrucciones que se ejecutan de igual manera. Esto se simplifica
notablemente si emplea la opción PROCEDIMIENTOS GENERALES del editor de códigos.
a) Haciendo clic en la pestaña de la ventana superior izquierda del editor verá los controles
que están instalados en la interface. Note
que lo primero que se lee es (General).
Está entre paréntesis para indicar que no
es un control, sino una opción de edición.
En el editor existen 2 opciones:
• GENERAL, para códigos que no
pertenecen a un control.
• PRIVATE, para códigos de eventos, que
pertenecen a un control en particular.
b) Los códigos que hemos escrito hasta ahora son de tipo privado, vinculados a un control,
como este que se ve, perteneciente al CommandButton1.
c) Como Procedimiento General podrán escribirse códigos que se cumplan para cualquier
cantidad de controles, como es el caso de las sentencias condicionales. Para eso, haga clic
en la opción (General) y el cursor del mouse de detendrá en la línea superior del editor.
d) Escriba entonces: Private Sub doPro1 Para un segundo
(seguidamente los bloques de instrucciones) procedimiento escriba doPro2,
End Sub y así sucesivamente.
Cuando quiera usar en un control uno de los Procedimientos Generales guardados, llámelo
escribiendo al inicio de su código: Private Sub CommandButton1_Click()
Call doPro1
ESTO LE AHORRARÁ TRABAJO Y HARÁ SU (seguidamente el resto del bloque)
PROYECTO MÁS COMPACTO Y FUNCIONAL. End Sub 81
La mayor necesidad en el desarrollo de un software es guardar los procesos que se vayan
generando para emplearlos en otro momento en que se requieran, lo que se resuelve con el
uso de variables, que los conservan en áreas temporales de memoria hasta que sean
llamados por los códigos. Pero también se puede hacer, en algunos casos, mediante los
denominados CONTROLES AUXILIARES, que se ocultan con Visible False para que cumplan su
función sin ser vistos en la interface. Veamos los siguientes ejemplos en este curso:
En el Ejercicio 10 se emplea un Label auxiliar (lbl2) que recoge los números con que se
identifican las diversas categorías a mostrar en el TV digital que se construye en el ejemplo.
Los cambios de números en el lbl auxiliar, apoyados por el operador lógico And, propician el
funcionamiento múltiple de la sentencia condicional. En el Ejercicio 13 se emplea un Label
auxiliar (lbl1) que igualmente recibe marcadores numéricos para que, junto al operador
lógico And y de comparación = <> se ejecute la sentencia condicional que propicia la
evaluación de resultados. En el Ejercicio 16 se emplea un TextBox auxiliar (txt2) que al
recibir los cambios numéricos generados por las variaciones horarias provoca, con su
procedimiento Change, hasta 10 acciones en otros controles del proyecto. En el Ejercicio 17
se emplea un Label auxiliar (lbl1) cuyas variaciones numéricas por el recorrido del ScrollBar
generan múltiples acciones en otros controles del proyecto.
Acuda a los CONTROLES AUXILIARES cada vez que pueda, pues trabajar con ellos es muy fácil.
Por ejemplo: si necesita mover una imagen de un sitio a otro en la interface podrá, al
quitarla, pasarla a un control auxiliar, donde la tomará cuando quiera instalarla en otro lugar
para completar el movimiento. Este recurso es útil en la realización de juegos con tableros,
entre cuyas casillas se moverán las fichas: con clic en una casilla pasará la ficha que esté allí
al control auxiliar, donde con una sentencia condicional simple podrá tomarla para situarla
en otra casilla que esté vacía. ¡PRUÉBELO EN SUS PROYECTOS!
82
Para tener éxito como desarrollador de softwares en
cualquier lenguaje de programación, se requieren…

Si me pregunta:
¿cuál es el mejor
lenguaje de
Conocimientos programación?
Imaginación Mi respuesta es:
FACTORES el que más Ud.
Creatividad domine para
APTITUDINALES
(¿qué poseo?) Concentración resolver sus
Capacidad de análisis intereses y
… necesidades…
Voluntad
FACTORES Decisión
ACTITUDINALES Constancia
(¿cómo actúo?) Ecuanimidad
Autocrítica

83
Ahora le corresponde a Ud. demostrar lo aprendido. Y para eso tendrá que realizar un
proyecto de regular complejidad, que será su Trabajo de Graduación.

Un niño o adolescente enamorado de la computación podrá


iniciarse en la programación con un lenguaje y una interface
fáciles de usar, y elaborar sencillos programas de entretenimiento
y educativos. Lo mismo podrán hacer padres
y abuelos para apoyarlos…

Si es un educador, podrá elaborar juegos y


sistemas lúdicos para la comprobación de
conocimientos, con el empleo de
herramientas de programación fáciles de
aprender y usar, elevando así la
motivación en su desempeño docente…

Si es un profesional en cualquier rama, podrá elaborar


presentaciones interactivas de PowerPoint para sus conferencias
y otras necesidades, con el atractivo de una dinámica
participativa lograda con la programación VBA que, entre otras
cosas, le permitirá incluir todo el contenido en una sola
diapositiva, con pantallas que se abrirán a
su voluntad mediante códigos… 84
CURSO

¡Gracias
por darme la
oportunidad de
compartir con Ud. mis
conocimientos…!
jueves, 05 de junio de 2014

También podría gustarte