Hver Excel-dialogboks som du oppretter i VBA er lagret i sitt eget UserForm-objekt - én dialogboks per UserForm. Du oppretter og får tilgang til disse brukerskjemaene i Visual Basic Editor.
Setter inn et nytt brukerskjema
Sett inn et UserForm-objekt ved å følge disse trinnene:
Aktiver VBE ved å trykke Alt+F11.
Velg arbeidsboken som skal inneholde brukerskjemaet i prosjektvinduet.
Velg Sett inn → Brukerskjema.
VBE setter inn et nytt UserForm-objekt, som inneholder en tom dialogboks.
Her er et brukerskjema - en tom dialogboks. Din jobb, hvis du velger å godta det, er å legge til noen kontroller til dette brukerskjemaet.
Et nytt UserForm-objekt.
Legge til kontroller i et brukerskjema
Når du aktiverer et brukerskjema, viser VBE verktøykassen i et flytende vindu. Du bruker verktøyene i verktøykassen for å legge til kontroller i brukerskjemaet. Hvis verktøykassen av en eller annen grunn ikke vises når du aktiverer brukerskjemaet, velger du Vis → Verktøykasse.
For å legge til en kontroll klikker du bare på ønsket kontroll i verktøykassen og drar den inn i dialogboksen for å lage kontrollen. Etter at du har lagt til en kontroll, kan du flytte og endre størrelse på den ved å bruke standardteknikker.
Her er en liste over de ulike verktøyene, samt deres evner.
Styre |
Hva det gjør |
Merkelapp |
Viser tekst |
Tekstboks |
Lar brukeren skrive inn tekst |
ComboBox |
Viser en rullegardinliste |
ListBox |
Viser en liste over elementer |
Avmerkingsboks |
Gir alternativer som av/på eller ja/nei |
Alternativknapp |
Lar brukeren velge ett av flere alternativer; brukes i
grupper på to eller flere |
Toggle-knapp |
Gjør det mulig for brukeren å slå en knapp på eller av |
Ramme |
Inneholder andre kontroller |
Kommandoknapp |
En klikkbar knapp |
TabStrip |
Viser faner |
MultiPage |
En fanebeholder for andre objekter |
Rullelinje |
Gjør det mulig for brukeren å dra en stolpe for å etablere en innstilling |
Spin Button |
Gjør det mulig for brukeren å klikke på en knapp for å endre en verdi |
Bilde |
Holder et bilde |
RefEdit |
Lar brukeren velge et område |
Endre egenskaper for en UserForm-kontroll
Hver kontroll du legger til i et UserForm har egenskaper som bestemmer hvordan kontrollen ser ut eller oppfører seg. I tillegg har selve UserForm sitt eget sett med egenskaper. Du kan endre disse egenskapene med det passende navnet Egenskaper-vinduet. Dette viser Egenskaper-vinduet når en Command Button-kontroll er valgt.
Bruk egenskapsvinduene til å endre egenskapene til UserForm-kontroller.
Egenskaper-vinduet vises når du trykker F4, og egenskapene som vises i dette vinduet avhenger av hva som er valgt. Hvis du velger en annen kontroll, endres egenskapene til de som passer for den kontrollen. For å skjule egenskapsvinduet og få det ut av veien, klikk på Lukk-knappen i tittellinjen. Hvis du trykker på F4, kommer den alltid tilbake når du trenger den.
Egenskaper for kontroller inkluderer følgende:
-
Navn
-
Bredde
-
Høyde
-
Verdi
-
Bildetekst
Hver kontroll har sitt eget sett med egenskaper (selv om mange kontroller har noen felles egenskaper). Følg disse trinnene for å endre en egenskap ved hjelp av vinduet Egenskaper:
Sørg for at riktig kontroll er valgt i brukerskjemaet.
Sørg for at vinduet Egenskaper er synlig.
I Egenskaper-vinduet klikker du på egenskapen du vil endre.
Gjør endringen i høyre del av vinduet Egenskaper.
Hvis du velger selve UserForm (ikke en kontroll på UserForm), kan du bruke Egenskaper-vinduet til å justere UserForm-egenskaper.
Viser vinduet UserForm Code
Hvert UserForm-objekt har en kodemodul som inneholder VBA-koden (hendelsesbehandlingsprosedyrene) som utføres når brukeren arbeider med dialogboksen. For å se kodemodulen, trykk F7. Kodevinduet er tomt til du legger til noen prosedyrer. Trykk Shift+F7 for å gå tilbake til dialogboksen.
Her er en annen måte å bytte mellom kodevinduet og UserForm-visningen: Bruk knappene Vis kode og Vis objekt i prosjektvinduets tittellinje. Eller høyreklikk på brukerskjemaet og velg Vis kode. Hvis du viser kode, dobbeltklikker du på UserForm-navnet i prosjektvinduet for å gå tilbake til UserForm.
Viser et brukerskjema
Du viser et UserForm ved å bruke UserForms Vis-metode i en VBA-prosedyre.
Makroen som viser dialogboksen må være i en VBA-modul – ikke i kodevinduet for brukerskjemaet.
Følgende prosedyre viser dialogboksen med navnet UserForm1:
Sub ShowDialogBox()
UserForm1.Show
' Andre uttalelser kan gå her
End Sub
Når Excel viser dialogboksen, stopper ShowDialogBox-makroen til brukeren lukker dialogboksen. Deretter utfører VBA eventuelle gjenværende setninger i prosedyren. Mesteparten av tiden vil du ikke ha mer kode i prosedyren. Som du senere ser, legger du hendelsesbehandlingsprosedyrene dine i kodevinduet for brukerskjemaet. Disse prosedyrene starter når brukeren arbeider med kontrollene på brukerskjemaet.
Bruke informasjon fra et brukerskjema
VBE gir et navn for hver kontroll du legger til i et brukerskjema. Kontrollens navn tilsvarer dens Name-egenskap. Bruk dette navnet for å referere til en bestemt kontroll i koden din. Hvis du for eksempel legger til en CheckBox-kontroll i et UserForm kalt UserForm1, heter CheckBox-kontrollen CheckBox1 som standard. Du kan bruke Egenskaper-boksen for å få denne kontrollen til å vises med en hake. Eller du kan skrive kode for å gjøre det:
UserForm1.CheckBox1.Value = True
Som oftest skriver du koden for et UserForm i UserForms kodemodul. Hvis det er tilfelle, kan du utelate UserForm-objektkvalifikatoren og skrive setningen slik:
CheckBox1.Value = True
VBA-koden din kan også sjekke ulike egenskaper til kontrollene og iverksette passende handlinger. Følgende setning kjører en makro kalt PrintReport hvis avmerkingsboksen (kalt CheckBox1) er merket:
Hvis CheckBox1.Value = True Ring deretter PrintReport
Det er vanligvis en god idé å endre standardnavnet VBE har gitt til kontrollene dine til noe mer meningsfylt.