Controles de formulario en Excel (1128239)

Anuncio
Controles de
formulario en Excel
Por Moisés Ortíz el 19 diciembre, 2011
Los controles de formulario en Excel son objetos que podemos colocar dentro de una hoja y
que nos darán funcionalidad adicional para interactuar mejor con los usuarios y tener un mejor
control sobre la información.
Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de una
lista predefinida o permitir que el usuario inicie una macro con tan solo pulsar un botón.
Los controles de formulario en Excel se encuentran dentro de la fichaProgramador dentro
del grupo Controles. Solamente pulsa el botón Insertar y observarás cada uno de ellos:
Justo por debajo de los controles de formulario podrás observar el grupo de controles
ActiveX pero sus diferencias y similitudes las discutiremos en otro artículo. Por ahora nos
enfocaremos solamente en los controles de formulario.
¿Cómo insertar un control de formulario en
Excel?
Para insertar cualquiera de los controles de formulario debes seleccionarlo del menú
desplegable y hacer clic sobre la hoja de Excel arrastrando el borde para “dibujar” el contorno
del control. Observa este procedimiento.
Los diferentes controles de formulario
Existen diferentes tipos de controles de formulario en Excel que ofrecen diversos tipos de
funcionalidad e interacción con el usuario. Desde una simple etiqueta hasta controles que
permiten una selección múltiple de sus opciones. A continuación una breve descripción de
cada uno de ellos.
 Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra dentro
de un intervalo predefinido.
 Botón. El botón nos permite ejecutar una macro al momento de hacer clic sobre él.
 Botón de opción. Nos permite una única selección dentro de un conjunto de opciones.
 Casilla de verificación. Permite la selección o no selección de una opción.
 Control de número. Nos ayuda a aumentar o disminuir un valor numérico.
 Cuadro combinado. Es una combinación de un cuadro de texto con un cuadro de lista.
 Cuadro de grupo. Agrupa varios controles dentro de un rectángulo.
 Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una sola
opción o múltiples opciones de acuerdo a la configuración del control.
 Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.
Controles de formulario no disponibles en
Excel 2010
Los controles de formulario han estado presentes por varias versiones de Excel, sin
embargo existen algunos controles que ya no pueden ser utilizados en Excel 2010 como lo
son el Campo de texto, el Cuadro combinado de lista y el Cuadro combinado
desplegable. Sin embargo podemos alcanzar funcionalidad similar utilizando controles
ActiveX.
Formularios en Excel
Por Moisés Ortíz el 16 diciembre, 2011
Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de
mucha utilidad porque nos ayudan a evitar errores en la captura de información. Podemos
comparar los formularios de Excel con los formularios impresos en papel.
¿Qué es un formulario en Excel?
Seguramente has llenado un formulario en papel, tal vez cuando has acudido a alguna oficina
de gobierno para realizar un trámite, así que sabes de lo que estoy hablando. Estos
formularios contienen instrucciones precisas de lo que debes escribir y contienen los
recuadros necesarios para que introduzcas la información.
Los formularios en Excel no son tan diferentes de los impresos ya que de igual manera
proveen de los espacios necesarios para ingresar los datos. Los formularios en Excel utilizan
objetos especiales conocidos como controles de formulario que son precisamente los que
nos permiten agregar campos de texto, listas, botones de opción entre otras cosas más.
Tipos de formularios en Excel
Podemos crear tres tipos diferentes de formularios en Excel.
 Formulario de datos
 Hojas de cálculo con controles de formulario o controles ActiveX
 Formularios de usuario de VBA
A continuación describiré brevemente cada uno de ellos.
Formularios de datos
A través de un formulario de datos podemos mostrar al usuario una sola fila de nuestra tabla
de datos. En este formulario se puede realizar la edición de la información e inclusive crear un
nuevo registro para la tabla.
Excel puede generar automáticamente un formulario de datos para nuestras tabla. Para
consultar más detalle sobre este tema consulta el artículo: Agregar filas a una tabla de Excel.
Un detalle importante que debes saber sobre los formularios de datos es que si una celda
contiene una fórmula no podrás modificar dicha fórmula mediante el formulario sino que
solamente se mostrará el resultado del cálculo sin poder editarlo.
Hoja de cálculo con controles
Ya que las celdas de una hoja de Excel nos sirven para introducir información, podemos
pensar en una hoja como un gran formulario. De esta manera, si agregamos controles de
formulario a nuestra hoja podremos crear formularios de entrada de datos muy útiles.
Por ejemplo, podemos agregar a nuestra hoja un control de cuadro de lista para facilitar la
selección de los elementos.
De igual manera podemos agregar botones, cuadros combinados, casillas de verificación y
otros controles más que nos ayudarán a crear formularios avanzados.
Formularios de usuario VBA
Los formularios de usuario, también conocidos como UserForm, son cuadros de diálogo que
hacen uso de controles ActiveX y que nos permiten solicitar información al usuario. Estos
formularios son creados desde el Editor de Visual Basic y administrados desde código VBA.
Una vez que se ha creado el formulario de usuario podemos arrastrar y soltar los controles
Active X que se mostrarán en elCuadro de herramientas:
Los diferentes tipos de formularios en Excel nos evitarán dolores de cabeza ya que
podremos tener cierto grado de control sobre el ingreso de datos que otras personas realizan
sobre nuestras hojas de Excel.
Controles ActiveX en
Excel
Por Moisés Ortíz el 30 diciembre, 2011
Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de
formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido
como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen
algunas diferencias entre ambos tipos.
Controles ActiveX y controles de formulario
Los controles de formulario fueron introducidos desde la versión 4 de Excel y por lo tanto han
estado presentes en la aplicación por más tiempo que los controles ActiveX los cuales
comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron
introducidos posteriormente ofrecen más posibilidades de configuración y formato que los
controles de formulario. Ambos tipos de controles se encuentran en la ficha Programador.
La diferencia más significativa entre ambos es la manera en como podemos obtener
información de los controles al momento de interactuar con el usuario. Los controles de
formulario solamente responderán después de que el usuario ha interactuado con ellos, como
después de haber pulsado el botón. Por el contrario, los controles ActiveX responden de
manera continua a las acciones del usuario lo cual nos permite realizar acciones como
cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratón sobre el
botón.
Propiedades de los controles ActiveX
A diferencia de los controles de formulario, los controles ActiveX tienen una serie de
propiedades que podemos configurar pulsando el botón Propiedades que se encuentra dentro
del grupo Controles de la ficha Programador.
Antes de poder ver las propiedades de un control ActiveX debemos pulsar el botón Modo
Diseño el cual nos permitirá seleccionar el control y posteriormente ver sus propiedades.
Cada tipo de control ActiveX mostrará una ventana de Propiedades con sus propias
características. A continuación un ejemplo de la ventana Propiedades para un botón de
comando ActiveX:
Controles ActiveX con subrutinas VBA
Otra diferencia entre los controles de formulario y los controles ActiveX es que los primeros
pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciará la
ejecución de dicha macro.
Los controles ActiveX no tienen asignada una macro explícitamente sino que podemos
asignar código VBA para cada evento del control. Un evento de un control ActiveX puede ser
el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener el
foco sobre el control ActiveX, entre otros eventos más.
Para asignar código a uno de los eventos de un control ActiveX solamente debemos hacer
clic derecho sobre él y seleccionar la opción Ver código.
Esto mostrará el Editor de Visual Basic con una subrutina para el evento Click() donde
podremos escribir nuestro código.
En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para
nuestro control ActiveX y para los cuales podemos escribir código VBA. Al seleccionar
cualquiera de dichos eventos se insertará una nueva subrutina que podremos utilizar. Son
precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los
hace controles muy poderosos que podemos utilizar en nuestros formularios.
Otra ventaja de los controles ActiveX
En la versión de Excel 2010 algunos controles de formulario han dejado de ser soportados y
no podemos utilizarlos más. Ese es el caso del control de formulario conocido como campo de
texto. Sin embargo, dentro de la lista de controles ActiveX tenemos disponibles un control
llamado Cuadro de texto lo cual puede hacer atractiva la opción de utilizar controles
ActiveX en lugar de controles de formulario.
Cuadro de texto en
Excel
Por Moisés Ortíz el 31 julio, 2012
El cuadro de texto es un control ActiveX que muestra un campo vacío donde el usuario
puede introducir cualquier texto. En esta ocasión revisaremos cómo incrustar un cuadro de
texto y hacer referencia al mismo desde código VBA.
Insertar un cuadro de texto en Excel
Para insertar un cuadro de texto en una hoja de Excel debes ir a la ficha Programador y
hacer clic en el botón Insertar y entonces hacer clic sobre la opción Cuadro de texto de la
sección Controles ActiveX.
El puntero del ratón se convertirá en una cruz la cual nos permitirá dibujar el cuadro de
texto sobre la hoja de Excel. Una vez dibujado el cuadro de texto podrás hacer clic derecho
sobre él y seleccionar la opción Propiedades para conocer el nombre que la ha sido asignado.
También puedes ver las propiedades de cualquier control seleccionándolo primero y pulsando
el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.
Modificar valor del cuadro de texto
Si deseas colocar un texto dentro del cuadro de texto desde VBA puedes utilizar una
instrucción como la siguiente:
TextBox1.Text = "Texto inicial"
Esto hará que el cuadro de texto se vea de la siguiente manera:
Leer valor del cuadro de texto
Si quieres leer el valor del cuadro de texto y colocarlo en una celda podemos utilizar la
siguiente instrucción:
Range("A1").Value = TextBox1.Text
El valor de la celda será el mismo que el del cuadro de texto.
Si deseas limpiar el cuadro de texto puedes utilizar la siguiente instrucción:
TextBox1.Text = ""
Cuadro de lista en
VBA
Por Moisés Ortíz el 2 agosto, 2012
El cuadro de lista es un control ActiveX que nos permite desplegar una serie de opciones de
las cuales el usuario puede realizar una selección. Podemos configurar el cuadro de lista para
permitir seleccionar uno o varios elementos de la lista.
Dibujar un cuadro de lista
Para insertar un cuadro de lista en una hoja de Excel debemos ir a la ficha Programador y
pulsar el botón Insertar para seleccionar la opción Cuadro de lista (control ActiveX).
Especificar los elementos del cuadro de
lista
Una alternativa para indicar los elementos de un cuadro de lista es a través de la propiedad
llamada ListFillRange. Para ello debemos abrir las propiedades del control e indicar el rango
de celdas que contiene los elementos:
En este ejemplo he especificado que los valores sean tomados del rango A1:A6, lo cual da
como resultado un cuadro de listacon los valores especificados en dicho rango:
Elementos del cuadro de lista por código
Otra alternativa para indicar los elementos de un cuadro de lista es a través de código VBA.
Para ello puedes incluir el siguiente código en el evento Workbook_Open:
De esta manera cuando se abra el libro se agregarán las opciones al cuadro de lista llamado
ListBox1.
Asociar una celda al cuadro de lista
Adicionalmente podemos asociar una celda al cuadro de lista la cual mostrará la selección
que hagamos. Para hacer esta asociación debemos especificar la dirección de la celda en la
propiedad LinkedCell:
De esta manera, cada vez que hagamos una selección de alguna de las opciones del cuadro
de lista se verá reflejado su valor en la celda asociada:
Cuadro combinado
en VBA
Por Moisés Ortíz el 6 agosto, 2012
Excel tiene un control ActiveX conocido como Cuadro combinado el cual también es llamado
comúnmente por su nombre en inglés: Combo Box. Este control nos permite crear listas
desplegables en nuestros formularios.
Para insertar un Cuadro combinado debemos ir a la ficha Programador y dentro del botón
Insertar pulsar el comando Cuadro combinado (control ActiveX):
Después de dibujar el Cuadro combinado tendrás un resultado como el siguiente:
Agregar elementos al cuadro combinado
Si quiero que el Cuadro combinado muestre los valores del rango A1:A5, puedo utilizar la
propiedad ListFillRange donde puedo indicar este rango:
Como resultado obtendré los valores de las celdas como elementos del Cuadro combinado:
Diferencia con el cuadro de lista
Una diferencia importante entre el Cuadro combinado y el cuadro de lista es que el primero
permite que el usuario capture una opción diferente a las mostradas en la lista. En el ejemplo
anterior no aparecía el día domingo como parte de los elementos, sin embargo puedo capturar
el día domingo dentro del cuadro de lista.
Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:


Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado
Utilizar el Cuadro combinado pero validar la opción seleccionada con código VBA de
manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un
ejemplo de código de validación es el siguiente:
Asociar una celda al cuadro combinado
Al igual que con otros controles ActiveX, podemos asocias una celda al cuadro combinado de
manera que muestre el elemento de la lista que haya sido seleccionado. Esta configuración la
hacemos en la propiedad LinkedCell:
Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en la
celda indicada en la propiedadLinkedCell:
Casilla de
verificación en VBA
Por Moisés Ortíz el 8 agosto, 2012
Una casilla de verificación es un control ActiveX que podemos utilizar para permitir que un
usuario marque una opción y por lo tanto poder conocer sus preferencias al verificar dicho
valor en código VBA.
El control ActiveX casilla de verificación
Para insertar este control debemos ir al comando Insertar y seleccionar la opción Casilla de
verificación (Control ActiveX).
Después de dibujar este control tendrás el siguiente resultado:
Propiedades de una casilla de verificación
La primera propiedad que desearas modificar de una casilla de verificación será su
propiedad Caption que es la que almacena el texto desplegado dentro del control ActiveX. Por
ejemplo, si deseo que el control muestre el texto “Mayor de edad” debo hacer el cambio de la
siguiente manera:
La otra propiedad de una casilla de verificación que tal vez quieras modificar será la
propiedad Value que de manera predeterminada tendrá el valor False lo cual indica que el
control se mostrará desmarcado. Si deseas que el control se muestre marcado de manera
predeterminada, debes poner el valor True en la propiedad Value:
Valor de una casilla de verificación
Una casilla de verificación nos dirá su ha sido seleccionada o no, es decir, nos devolverá un
valor FALSO o VERDADERO. Para leer este valor debemos acceder a la propiedad Value del
control de la siguiente manera:
Private Sub CheckBox1_Click()
Range("C4").Value = CheckBox1.Value
End Sub
Esta línea de código coloca el valor de la casilla de verificación en la celda C4. De esta
manera, al seleccionar la casilla de verificación obtendré el siguiente resultado:
Para validar en VBA si la casilla de verificación tiene un valor u otro podemos utilizar un
código como el siguiente:
If CheckBox1.Value = True Then Range("C4").Value = 1
If CheckBox1.Value = False Then Range("C4").Value = 0
La primera línea valida si el control ActiveX tiene un valor verdadero y de ser así coloca el
número 1 en la celda C4. Si la casilla de verificación no ha sido seleccionada (falso)
entonces colocará el número cero en la celda C4.
Botón de opción en
VBA
Por Moisés Ortíz el 10 agosto, 2012
Un botón de opción es un control ActiveX que nos permitirá seleccionar una sola opción
dentro de un grupo de botones de opción. A diferencia de las casillas de verificación, los
botones de opción dependen uno del otro.
El botón de opción en Excel
Para insertar un botón de opción hacemos clic en el comando Insertar de la ficha
Programador.
Un solo botón de opción no hace mucho sentido, así que siempre agregamos dos o
más botones de opción para permitir que usuario haga una selección de cualquiera de ellos.
Una vez que se ha agregado un segundo botón de opción podrás notar que al seleccionar
uno de ellos se desmarcarán todos los demás.
La propiedad Caption
De manera predeterminada Excel colocará el botón de opción con un nombre como
OptionButton1. Para cambiar este texto debemos editar la propiedad Caption del botón de
opción.
El botón de opción en VBA
Para saber si un botón de opción ha sido seleccionado podemos acceder a su
propiedad Value de la siguiente manera:
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opción Hombre")
End Sub
La propiedad Value es la que nos indica si el control está seleccionado, en cuyo caso, la
propiedad será igual a True. Para este ejemplo, al validar que el botón de opción está
seleccionado, se mostrará un cuadro de diálogo con un mensaje sobre la opción seleccionada.
Formularios en VBA
Por Moisés Ortíz el 14 agosto, 2012
Los formularios en VBA no son más que un cuadro de diálogo de Excel donde podremos
colocar controles que nos ayudarán a solicitar información del usuario. Podremos colocar
cajas de texto, etiquetas, cuadros combinados, botones de comando, etc.
Crear un formulario en Excel
Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos
seleccionar la opción de menú Insertar y posteriormente la opción UserForm.
Inmediatamente se mostrar un formulario en blanco y de igual manera podrás observar
el Cuadro de herramientas:
Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro de
herramientas.
Agregar controles al formulario
Para agregar un control al formulario debes seleccionarlo del Cuadro de herramientas y
dibujarlo sobre el formulario. En mi formulario he agregado etiquetas y cuadros de texto así
como un par de botones de comando:
El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este
cambio solamente selecciona el control y se mostrará la ventana de Propiedades donde
podrás hacer la modificación. De igual manera el texto desplegado en los botones de
comando se modifica en su propiedad Caption.
Código para el botón Cancelar
El botón cancelar cerrará el formulario sin guardar la información capturada en ningún lugar.
El código que debemos utilizar es el siguiente:
Private Sub CommandButton2_Click()
Unload Me
End Sub
Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload Me”
cerrará el formulario.
Código para el botón Aceptar
A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de texto en
las celdas A1, B1 y C1. El código utilizado es el siguiente:
Private Sub CommandButton1_Click()
Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value
Worksheets("Hoja1").Range("B1").Value = Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value = Me.TextBox3.Value
End Sub
Al pulsar el botón Aceptar se transferirán los valores de los controles TextBox hacia las celdas
de la Hoja1.
Botón para abrir formulario
Para facilitar la apertura del formulario puedes colocar un botón ActiveX en la hoja con el
siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Probar el formulario
Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:
Descargar