Personalizar a nuestro gusto el diseño de los formularios creados en Excel VBA
Pregunta
¿Existe un modo de personalizar los userForms que cree en Excel o Access usando VBA?
Respuesta
Todo desarrollador de aplicaciones gusta de añadir su toque personal a las aplicaciones que desarrolla. Y los usuarios de Excel no son la excepción. En Excel podemos darle nuestro toque a tablas, formularios, cuadros de mando, tablas dinámicas, etc.
En este artículo les compartiré una macro que les permitirá aplicar el mismo diseño a los formularios que desarrollen, esto para que “nuestro toque” quede plasmado en el diseño que elijamos y tener formularios unificados.
Aplicar el mismo diseño a mis formularios de VBA
Para modificar el diseño de nuestros formularios haremos uso de las Propiedades de cada Control. Por ejemplo, recorreremos cada Control del formulario y le asignaremos un Color blanco, así como asignarles la propiedad Flat, para que se vean más ad hoc al diseño de los Formularios de Windows.
Cómo funciona
En un Módulo normal tendremos la macro llamada FormDesign, la cual se ejecturá cada que un formulario se ejecute. La macro será llamada desde el evento Initialize.
Private Sub UserForm_Initialize()
Call FormDesign
End Sub
La macro hará uso del constructor For each para recorrer todos los Controles del formulario y modificarás las siguientes propiedades:
- BackColor = Cambiamos el color de fondo del Control o Formulario.
- ForeColor = Cambiamos el color de la fuente.
- Font.Size = Cambiamos el tamaño del texto de un Control.
- Font.Name = Cambiamos el tipo de fuente.
- SpecialEffect = Le asignamos un diseño al Control. Para este ejemplo usaremos el estilo fmSpecialEffectFlat.
- BorderStyle = Cambiamos el diseño del borde.
- BorderColor = Cambiamos el color del borde.
Código vba de la macro
Nombre: FormDesign.
Ubicación: Modulo 1.
'---------------------------------------------------------------------------------------
' Module : Módulo2
' Author : MVP, Sergio Alejandro Campos
' Date : 31/08/2015
' Purpose : Personalizar diseño de Formularios
'---------------------------------------------------------------------------------------
'
Sub FormDesign()
'
Set FormActivo = UserForms(0)
'
FormActivo.BackColor = vbWhite
'
For Each Control In FormActivo.Controls
'
On Error Resume Next
'
'Si el Control es un Botón no le cambies el color
If TypeOf Control Is MSForms.CommandButton Then
Else
Control.BackColor = vbWhite
End If
Control.ForeColor = 4210752
'Control.Font.Name = "Calibri"
'Control.Font.Size = 10
'
'Si hay una etiqueta llama lblTitulo...
If Control.Name = "lblTitulo" Then
Control.Font.Size = 14
Contro.BakColor = 2147483663#
End If
'
'Si se encuentra un Frame...
If TypeOf Control Is MSForms.Frame Then
Control.SpecialEffect = fmSpecialEffectFlat
Control.ForeColor = 32768
Control.BorderStyle = fmBorderStyleSingle
Control.BorderColor = 12632256
End If
'
'Si se encuentra un Label
If Not TypeOf Control Is MSForms.Label Then
Control.SpecialEffect = fmSpecialEffectEtched
End If
'
'Si se encuentra un CheckBox
If TypeOf Control Is MSForms.CheckBox Then
Control.SpecialEffect = fmSpecialEffectFlat
End If
'
On Error GoTo 0
'
Next Control
'
End Sub
Archivo de ejemplo
Excel e Info – OneDrive (live.com)
Créditos
con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Excel en español, y tras solicitar su permiso, replico este artículo de Sergio Alejandro Campos. Todos los derechos y autoría corresponden a él. Personalizar a nuestro gusto el diseño de los formularios creados en Excel vba (exceleinfo.com)