Cada quadre de diàleg d'Excel que creeu a VBA s'emmagatzema al seu propi objecte UserForm: un quadre de diàleg per UserForm. Creeu i accediu a aquests formularis d'usuari a l'Editor de Visual Basic.
Inserint un nou formulari d'usuari
Inseriu un objecte UserForm seguint aquests passos:
Activeu el VBE prement Alt+F11.
Seleccioneu el llibre de treball que contindrà el formulari d'usuari a la finestra del projecte.
Seleccioneu Insereix → Formulari d'usuari.
El VBE insereix un nou objecte UserForm, que conté un quadre de diàleg buit.
Aquí hi ha un UserForm: un quadre de diàleg buit. La vostra feina, si decidiu acceptar-ho, és afegir alguns controls a aquest formulari d'usuari.
Un nou objecte UserForm.
Afegir controls a un formulari d'usuari
Quan activeu un formulari d'usuari, el VBE mostra la caixa d'eines en una finestra flotant. Utilitzeu les eines de la Caixa d'eines per afegir controls al vostre formulari d'usuari. Si, per algun motiu, la Caixa d'eines no apareix quan activeu el formulari d'usuari, seleccioneu Visualitza → Caixa d'eines.
Per afegir un control, només cal que feu clic al control desitjat a la Caixa d'eines i arrossegueu-lo al quadre de diàleg per crear el control. Després d'afegir un control, podeu moure'l i canviar-ne la mida mitjançant tècniques estàndard.
Aquí teniu una llista de les diferents eines, així com les seves capacitats.
Control |
Què fa |
Etiqueta |
Mostra text |
Caixa de text |
Permet a l'usuari introduir text |
Quadre combinat |
Mostra una llista desplegable |
ListBox |
Mostra una llista d'elements |
CheckBox |
Ofereix opcions com activar/desactivar o sí/no |
Botó d'opció |
Permet a l'usuari seleccionar una de diverses opcions; utilitzat en
grups de dos o més |
Botó de commutació |
Permet a l'usuari activar o desactivar un botó |
Marc |
Conté altres controls |
Botó d'ordre |
Un botó clicable |
TabStrip |
Mostra pestanyes |
MultiPàgina |
Un contenidor amb pestanyes per a altres objectes |
Barra de desplaçament |
Permet a l'usuari arrossegar una barra per establir una configuració |
SpinButton |
Permet a l'usuari fer clic en un botó per canviar un valor |
Imatge |
Conté una imatge |
RefEdit |
Permet a l'usuari seleccionar un interval |
Canvi de propietats per a un control UserForm
Cada control que afegiu a un formulari d'usuari té propietats que determinen com es veu o es comporta el control. A més, el mateix UserForm té el seu propi conjunt de propietats. Podeu canviar aquestes propietats amb la finestra de Propietats anomenada correctament. Això mostra la finestra de Propietats quan es selecciona un control CommandButton.
Utilitzeu les finestres Propietats per canviar les propietats dels controls UserForm.
La finestra Propietats apareix quan premeu F4 i les propietats que es mostren en aquesta finestra depenen del que estigui seleccionat. Si seleccioneu un control diferent, les propietats canvien a les adequades per a aquest control. Per amagar la finestra de Propietats i desfer-la, feu clic al botó Tanca a la seva barra de títol. Premeu F4 sempre el retornarà quan el necessiteu.
Les propietats dels controls inclouen les següents:
-
Nom
-
Amplada
-
Alçada
-
Valor
-
Subtítol
Cada control té el seu propi conjunt de propietats (tot i que molts controls tenen algunes propietats comunes). Per canviar una propietat mitjançant la finestra Propietats, seguiu aquests passos:
Assegureu-vos que el control correcte estigui seleccionat al formulari d'usuari.
Assegureu-vos que la finestra de Propietats sigui visible.
A la finestra Propietats, feu clic a la propietat que voleu canviar.
Feu el canvi a la part dreta de la finestra de Propietats.
Si seleccioneu el formulari d'usuari en si (no un control del formulari d'usuari), podeu utilitzar la finestra Propietats per ajustar les propietats del formulari d'usuari.
Visualització de la finestra del codi del formulari d'usuari
Cada objecte UserForm té un mòdul de codi que conté el codi VBA (els procediments del gestor d'esdeveniments) que s'executa quan l'usuari treballa amb el quadre de diàleg. Per veure el mòdul Codi, premeu F7. La finestra Codi està buida fins que afegiu alguns procediments. Premeu Maj+F7 per tornar al quadre de diàleg.
Aquí hi ha una altra manera de canviar entre la finestra Codi i la pantalla del Formulari d'usuari: Utilitzeu els botons Visualitza el codi i Visualitza l'objecte a la barra de títol de la finestra del projecte. O feu clic amb el botó dret al formulari d'usuari i seleccioneu Visualitza el codi. Si esteu visualitzant el codi, feu doble clic al nom del formulari d'usuari a la finestra del projecte per tornar al formulari d'usuari.
Visualització d'un formulari d'usuari
Podeu mostrar un UserForm mitjançant el mètode Show de UserForm en un procediment VBA.
La macro que mostra el quadre de diàleg ha d'estar en un mòdul VBA, no a la finestra Codi per al formulari d'usuari.
El procediment següent mostra el quadre de diàleg anomenat UserForm1:
Sub ShowDialogBox()
UserForm1.Mostra
' Altres declaracions poden anar aquí
End Sub
Quan Excel mostra el quadre de diàleg, la macro ShowDialogBox s'atura fins que l'usuari tanca el quadre de diàleg. Aleshores, VBA executa les declaracions restants del procediment. La majoria de les vegades, no tindreu més codi al procediment. Com veureu més endavant, poseu els vostres procediments de gestor d'esdeveniments a la finestra Codi per al formulari d'usuari. Aquests procediments s'inicien quan l'usuari treballa amb els controls del formulari d'usuari.
Ús d'informació d'un formulari d'usuari
El VBE proporciona un nom per a cada control que afegiu a un formulari d'usuari. El nom del control correspon a la seva propietat Name. Utilitzeu aquest nom per referir-vos a un control concret del vostre codi. Per exemple, si afegiu un control CheckBox a un UserForm anomenat UserForm1, el control CheckBox s'anomena CheckBox1 de manera predeterminada. Podeu utilitzar el quadre Propietats per fer que aquest control aparegui amb una marca de verificació. O podeu escriure codi per fer-ho:
UserForm1.CheckBox1.Value = Veritable
La majoria de vegades, escriviu el codi d'un UserForm al mòdul de codi del UserForm. Si aquest és el cas, podeu ometre el qualificador d'objecte UserForm i escriure la declaració com aquesta:
CheckBox1.Value = Veritable
El vostre codi VBA també pot comprovar diverses propietats dels controls i prendre les accions adequades. La instrucció següent executa una macro anomenada PrintReport si la casella de selecció (anomenada CheckBox1) està marcada:
Si CheckBox1.Value = True, truqueu PrintReport
Normalment és una bona idea canviar el nom predeterminat que el VBE ha donat als vostres controls per alguna cosa més significatiu.