Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Vamos a crear un formulario sencillo utilizando una serie de controles activex y una base de datos
que crearemos previamente.
Una vez tenemos claro el tema, creamos un nuevo archivo de Excel en el que utilizaremos una
hoja que denominaremos “Base de Datos”.
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.
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).
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:
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.
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.
Una vez creado el procedimiento, lo asociamos a la imagen como si se tratara de una macro.
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.
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”.
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.
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.
Formpaises.checkbox1.value= “”
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í:
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.
El siguiente botón que vamos a programar es el botón “Buscar”, que nos permitirá visualizar un registro
de nuestra base de datos.
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
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'
Else
'hay que poner la celda donde se encuentra el primer registro; en nuestro caso, A6'
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'
Call Mimodulo.limpiar
Else
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'
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'
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.
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.