Está en la página 1de 13

PRÁCTICA GUIADA SOBRE FORMULARIOS CON CONTROLES ACTIVEX

Vamos a crear un formulario sencillo utilizando una serie de controles activex y una base de datos
que crearemos previamente.

Lo primero es decidir el tema de nuestro formulario; nosotros realizaremos la práctica con un


formulario dedicado a países europeos; denominaremos a nuestro proyecto como “Países de Europa”.

Una vez tenemos claro el tema, creamos un nuevo archivo de Excel en el que utilizaremos una
hoja que denominaremos “Base de Datos”.

A continuación puedes ver la base de datos que vamos a crear.

Esta base de datos tiene 10 registros y cada registro tiene un total de 17 campos.

Una vez
introducidos los
datos, vamos a
grabarlos como
base de datos;
para ello
seleccionamos
desde la fila del
encabezado hasta
el último registro y
vamos al menú
“insertar” y luego
seleccionamos
Tabla.

Pulsamos aceptar y le ponemos como nombre “Paises_europa”.

Esto nos va a facilitar el trabajo posteriormente.

Vamos ahora a grabar el trabajo realizado; lo haremos con el formato de “archivo habilitado para macros”
y por nombre “Proyecto formulario países”.

Una vez creado nuestro fichero, pasaremos a elaborar el formulario. Crearemos un modelo
sencillo, en el que incluiremos los controles más habituales.
Para crear el formulario vamos al menú de desarrollador y activamos el entorno de programación
Visual Basic de Excel (IDE).

Ahora le damos al botón Insertar – Userform para crear un formulario de usuario

Se abre una ventana con el nombre UserForm1 (este es nuestro formulario) y una caja de
herramientas que contiene los controles a utilizar en el formulario.

A la izquierda del formulario tenemos la ventana de control del proyecto y debajo la ventana de
las propiedades del objeto con el que estemos trabajando en cada momento (en este momento, son las
del formulario).

Hacemos un poco más grande el espacio del formulario y movemos la caja de herramientas hacia
la derecha para que no nos tape el control del proyecto ni la caja de propiedades.
Cada objeto con el que estemos trabajando tiene sus propiedades; iremos viendo las más
habituales conforme creemos el formulario.

En primer lugar vamos a cambiar el nombre del formulario y el título que aparecerá visualizado;
para ello, vamos a utilizar dos propiedades:

- Name: es el nombre del objeto; en este caso es el nombre del formulario. Le


llamaremos Formpaises.
- Caption es el texto que va a aparecer en la cabecera del formulario; vamos a poner
“Países de Europa”.

Ahora vamos a empezar a introducir los controles de nuestro formulario; necesitamos un control
para cada dato de la base de datos. Empezaremos poniendo el código del país; para ello necesitaremos
dos controles, una etiqueta para poner el nombre del campo y un cuadro de texto para poner el dato de
ese campo.

Pinchamos sobre el control Label (etiqueta) y lo insertamos en el formulario del mismo modo que
hacemos con las formas o los gráficos.

Cambiamos el nombre del objeto le llamaremos “Etcódigo” y el texto que aparece (pondremos
“Código”.

Seguimos el mismo proceso para las etiquetas de los diferentes campos y al final nos quedará un
formulario como el de la imagen. Lo más cómodo es copiar y pegar
la primera etiqueta y cambiar los nombres.

Una vez tenemos todas las etiquetas de los campos de nuestra


base de datos, pasamos a colocar los controles “Cuadro de texto”.
En este caso, solo cambiaremos el nombre usando una codificación
similar a la empleada con las etiquetas, pero empezando cada caso
por Ct seguido del nombre del campo (por ejemplo, Ctcódigo).

El resultado quedaría así

Nos quedan ahora los tres campos de imágenes; para ellos vamos a utilizar el control “Picture”.
Los colocamos y cambiamos su nombre utilizando el código I seguido del nombre del campo (Imoneda,
por ejemplo).
Nuestro formulario ha quedado acabado en cuanto a los controles que permiten visualizar los
campos.

Para poder ver el resultado del formulario, pulsamos el botón “Ejecutar formulario de usuario” o
bien pulsar la tecla F5.
Ahora vamos a empezar a escribir el código necesario para que funcione
correctamente. Lo primero va a ser colocar un elemento gráfico que nos permita
visualizar nuestro formulario; lo haremos junto al título de la hoja y utilizaremos esta
imagen que he seleccionado de Internet.

Para poder hacer que se visualice el formulario al pulsar sobre la imagen es preciso que creemos
un nuevo módulo al que llamaremos Mimodulo. Este módulo lo creamos pulsando en el botón Insertar –
módulo del menú de desarrollador.

En el módulo vamos a escribir un procedimiento que nos permitirá visualizar el formulario.


El código a escribir es el siguiente:

Todos los procedimientos empiezan con la palabra Sub y el nombre del


procedimiento seguido de ()
Sub mostrarformulario()
A continuación escribimos el nombre del formulario seguido de un
Formpaises.show punto y el nombre de la acción que queremos realizar (en este caso
Show, que es para visualizar)
End sub
Todos los procedimientos finalizan con End sub

Una vez creado el procedimiento, lo asociamos a la imagen como si se tratara de una macro.

Para ello pulsamos el botón derecho y seleccionamos la opción “asignar macro”.

Al hacerlo, nos aparecerá este cuadro de diálogo

Como solo tenemos un procedimiento escrito, lo seleccionamos,


aceptamos y probamos el resultado, que será la visualización del
formulario.

Añadiremos a nuestro formulario una serie de botones que nos


permitan añadir, modificar o eliminar registros de nuestra base de
datos y otro botón para cerrar el formulario. Por último, incluiremos un
elemento en nuestra hoja de cálculo que permita visualizar el
formulario.

En concreto vamos a poner un botón para Añadir un registro, otro para


Buscar, un tercero para eliminar, un cuarto botón para imprimir la ficha y un quinto botón para cerrar el
formulario.

El control que vamos a utilizar es el denominado “Botón de comando”.

Para cada botón cambiaremos su nombre con el código B seguido del nombre de la acción a realizar (por
ejemplo, Bañadir) y la propiedad
Caption por el Texto que
queremos que aparezca en el
botón.

También podríamos sustituir el


texto por una imagen tipo icono
en el botón.

Después de realizar todas estas


operaciones obtendremos el
siguiente formulario:
Asociando a cada botón una imagen en la propiedad Picture podemos mejorar el aspecto de nuestro
formulario.

Le añadiremos un nuevo botón llamado “Limpiar” y asociamos imágenes a todos los botones, de manera
que finalmente nuestro formulario quedará así

Ahora vamos a crear un procedimiento que nos permita cerrar el formulario y, posteriormente lo
asignaremos al botón “salir”.

Volvemos al EDI e insertamos un nuestro módulo un nuevo procedimiento al que denominaremos


“salirformulario”.

En este caso usamos la acción Unload que descarga de la


Sub salirformulario() memoria el formulario que habíamos abierto previamente.
Unload formpaises Una vez escrito el procedimiento visualizamos el formulario y
hacemos doble click sobre el botón “Salir”.
End sub
Nos aparece esta pantalla con un procedimiento privado
asociado a la acción de pulsar click en el botón “salir”.

Lo único que tenemos que hacer es escribir el código que nos permite ejecutar el procedimiento para salir
del formulario.

Se trata de la
instrucción call que
hace una llamada a
un determinado
procedimiento de
un módulo.

En nuestro caso, el
código a escribir
será el siguiente:

Private Sub
Bsalir_Click()

Call Mimodulo.salirformulario

End Sub
El siguiente botón que vamos a programar es “Limpiar”, puesto que es muy simple.

Lo que haremos es crear en nuestro módulo un nuevo procedimiento que denominaremos limpiar y que
nos permitirá dejar en blanco todos los cuadros de texto que contienen los datos a mostrar, así como el
resto de controles.

Lo que escribimos es:

Sub limpiar() Esta


instrucción
s.CTcódigo.text="" asigna al
End sub cuadro de
texto
Ctcódigo el
valor “” en la propiedad text.

Si hacemos lo mismo con todos los cuadros de texto del formulario, los borraremos.

Una vez introducidas las órdenes para los cuadros de texto, vamos a finalizar nuestro formulario usando
el control “Frame” para alojar las cuatro casillas de verificación que nos permiten incluir la información
sobre pertenencia de cada país a organismos internacionales.

El formulario nos va a quedar así

Para limpiar estos campos usaremos la instrucción

Formpaises.checkbox1.value= “”

Que escribiremos dentro de nuestro procedimiento “Limpiar”

Escribiremos una instrucción por cada una de las custro casillas de verificación que tenemos.

Por último, tenemos que borrar el contenido de los controles que nos muestran imágenes; para cada
control escribimos

Formpaises.imagen1.picture=loadpicture(“”)
Una vez creado el procedimiento ahora lo que tenemos que hacer es asociarlo al botón “Limpiar”.

Abrimos el formulario en modo diseño y hacemos doble click en el botón; a continuación, escribimos en
nuestro módulo el nuevo procedimiento; nos quedará así:

Y podemos probar su funcionamiento.

Antes de programar el siguiente botón, hay que tener en cuenta que en nuestra base de datos estamos
utilizando campos que contienen imágenes; para facilitarnos el trabajo, crearemos una carpeta para cada
campo de imagen (en nuestro caso, las carpetas serán Monedas, Banderas y Mapas); las imágenes de
cada carpeta estarán asociadas a un registro concreto y para facilitar su uso, las nombraremos con el
mismo número del registro al que corresponden; así, el registro 1 que corresponde a Portugal tendrá
como imagen de su bandera el fichero 1.jpg, como imagen de su moneda 1.jpg y como imagen del mapa
1.jpg; por eso es preciso que las imágenes estén guardadas en carpetas diferentes.

Respecto a la extensión, usaremos siempre la .jpg

El siguiente botón que vamos a programar es el botón “Buscar”, que nos permitirá visualizar un registro
de nuestra base de datos.

Este proceso es más complejo y requiere conocimientos de programación en VB.

A continuación te muestro el código a escribir (pongo todo el código puesto que hay que añadir una
instrucción en la cabecera de los subprogramas, aunque parte del código que se muestra ya está escrito).

Option Explicit

Private codigo As Range

Sub mostrarformulario()

Formpaises.Show

End Sub
Sub salirformulario()

Unload Formpaises

End Sub

Sub limpiar()

Formpaises.CTcódigo.Text = ""

Formpaises.Ctnombre.Text = ""

Formpaises.CTcapital.Text = ""

Formpaises.Ctestado.Text = ""

Formpaises.Ctkm2.Text = ""

Formpaises.CtPIB.Text = ""

Formpaises.CtPIBc.Text = ""

Formpaises.Ctpoblación.Text = ""

Formpaises.CheckBox1.Value = ""

Formpaises.CheckBox2.Value = ""

Formpaises.CheckBox3.Value = ""

Formpaises.CheckBox4.Value = ""

Formpaises.Imagen1.Picture = LoadPicture("")

Formpaises.Imagen2.Picture = LoadPicture("")

Formpaises.Imagen3.Picture = LoadPicture("")

End Sub

Sub buscar()

Dim Rcodigos As Range 'variable creada para almacenar los datos de la columna código de la base de
datos'

'hay que incluir una variable similar en la cabecera de los procedimientos (private
codigo as range)'

Dim ruta1 As String 'variable para contener la ruta donde se almacenan las imágenes de las banderas'

Dim ruta2 As String 'variable para contener la ruta donde se almacenan las imágenes de las monedas'

Dim ruta3 As String 'variable para contener la ruta donde se almacenan las imágenes de los mapas'
If Formpaises.CTcódigo.Text = "" Then 'si el campo código está vacío nos aparece un mensaje informativo
en pantalla'

MsgBox "Escribe un código"

Else

Set Rcodigos = hoja1.ListObjects("paises_europa").ListColumns(1).Range 'si no lo está, buscamos en


nuestra base de datos el valor'

'que coincide con el escrito en el cuadro de texto del código'

'hay que poner la celda donde se encuentra el primer registro; en nuestro caso, A6'

'como queremos búsqueda exacta, ponemos el valor xlwhole'

Set codigo = Rcodigos.Find(what:=Formpaises.CTcódigo.Text, _

after:=hoja1.Range("B6"), _

lookAt:=xlWhole)

'si la variable codigo se carga con un valor, quiere decir que existe el registro y habrá que visulizarlo'

'si,en cambio, no se carga con ningún valor, habrá que limpiar el formulario y decir al usuario que no
existe el código introducido'

If codigo Is Nothing Then

Call Mimodulo.limpiar

MsgBox "Código de país inexistente"

Else

Formpaises.Ctnombre.Text = codigo.Offset(0, 1).Value 'asignamos al cuadro de texto del


nombre, el valor situado'

'en la misma línea, pero en un columna a la derecha de nuestra


base de datos'

'repetimos para todos los demás controles'

Formpaises.CTcapital.Text = codigo.Offset(0, 2).Value

Formpaises.Ctestado.Text = codigo.Offset(0, 9).Value

Formpaises.Ctkm2.Text = codigo.Offset(0, 4).Value

Formpaises.CtPIB.Text = codigo.Offset(0, 7).Value

Formpaises.CtPIBc.Text = codigo.Offset(0, 8).Value

Formpaises.Ctpoblación.Text = codigo.Offset(0, 3).Value

Formpaises.CheckBox1.Value = codigo.Offset(0, 13).Value

Formpaises.CheckBox2.Value = codigo.Offset(0, 14).Value

Formpaises.CheckBox3.Value = codigo.Offset(0, 15).Value

Formpaises.CheckBox4.Value = codigo.Offset(0, 16).Value


'introducimos la ruta donde se encuentra la carpeta con las imágenes de las monedas. Cada imagen
debe tener el mismo nombre que el código del país'

ruta1 = ActiveWorkbook.Path & Application.PathSeparator & "monedas" &


Application.PathSeparator & _

Formpaises.CTcódigo.Text & ".jpg"

Formpaises.Imagen1.Picture = LoadPicture(ruta1)

'introducimos la ruta donde se encuentra la carpeta con las imágenes de las banderas. Cada
imagen debe tener el mismo nombre que el código del país'

ruta2 = ActiveWorkbook.Path & Application.PathSeparator & "banderas" &


Application.PathSeparator & _

Formpaises.CTcódigo.Text & ".jpg"

Formpaises.Imagen2.Picture = LoadPicture(ruta2)

'introducimos la ruta donde se encuentra la carpeta con las imágenes de los mapas. Cada
imagen debe tener el mismo nombre que el código del país'

ruta3 = ActiveWorkbook.Path & Application.PathSeparator & "mapas" &


Application.PathSeparator & _

Formpaises.CTcódigo.Text & ".jpg"

Formpaises.Imagen3.Picture = LoadPicture(ruta3)

End If

End If
End Sub

Para que las imágenes nos queden bien visualizadas en sus campos, es preciso poner en cada caso la
propiedad “Picturesizemode” en la opción 1, que corresponde al modo Stretch.

Por último, asignamos al botón el nuevo procedimiento.

La forma de buscar los datos de un país es muy simple; una vez visualizado el formulario, se introduce el
código numérico del país a busca y se pulsa el botón “buscar”; el formulario se cargará con los datos del
registro indicado. Si no existe, nos aparecerá un mensaje de error y se borrará lo escrito en el campo
código. En el caso de que no se haya escrito ningún código y se pulse el botón, aparecerá un mensaje de
error.

También podría gustarte