Hver Excel-dialogboks, som du opretter i VBA, er gemt i sit eget UserForm-objekt — én dialogboks pr. UserForm. Du opretter og får adgang til disse brugerformularer i Visual Basic Editor.
Indsættelse af en ny brugerformular
Indsæt et UserForm-objekt ved at følge disse trin:
Aktiver VBE ved at trykke på Alt+F11.
Vælg den projektmappe, der skal indeholde brugerformularen i projektvinduet.
Vælg Indsæt → Brugerformular.
VBE'en indsætter et nyt UserForm-objekt, som indeholder en tom dialogboks.
Her er en brugerformular - en tom dialogboks. Dit job, hvis du vælger at acceptere det, er at tilføje nogle kontroller til denne brugerformular.
Et nyt UserForm-objekt.
Tilføjelse af kontrolelementer til en brugerformular
Når du aktiverer en brugerformular, viser VBE'en værktøjskassen i et flydende vindue. Du bruger værktøjerne i værktøjskassen til at tilføje kontrolelementer til din brugerformular. Hvis værktøjskassen af en eller anden grund ikke vises, når du aktiverer din brugerformular, skal du vælge Vis → Værktøjskasse.
For at tilføje et kontrolelement skal du blot klikke på det ønskede kontrolelement i værktøjskassen og trække det ind i dialogboksen for at oprette kontrolelementet. Når du har tilføjet en kontrol, kan du flytte og ændre størrelsen på den ved at bruge standardteknikker.
Her er en liste over de forskellige værktøjer, samt deres muligheder.
Styring |
Hvad det gør |
Etiket |
Viser tekst |
Tekstboks |
Giver brugeren mulighed for at indtaste tekst |
Kombinationsfelt |
Viser en rulleliste |
ListBoks |
Viser en liste over elementer |
Afkrydsningsfelt |
Giver muligheder såsom tænd/sluk eller ja/nej |
Option-knap |
Giver brugeren mulighed for at vælge en af flere muligheder; bruges i
grupper på to eller flere |
Toggle-knap |
Gør det muligt for brugeren at slå en knap til eller fra |
Ramme |
Indeholder andre kontroller |
Kommandoknap |
En klikbar knap |
TabStrip |
Viser faner |
MultiPage |
En fanebeholder til andre genstande |
Rullebar |
Gør det muligt for brugeren at trække en bjælke for at etablere en indstilling |
Spin-knap |
Gør det muligt for brugeren at klikke på en knap for at ændre en værdi |
Billede |
Indeholder et billede |
RefEdit |
Giver brugeren mulighed for at vælge et område |
Ændring af egenskaber for en UserForm-kontrol
Hver kontrol, du tilføjer til en UserForm, har egenskaber, der bestemmer, hvordan kontrolelementet ser ud eller opfører sig. Derudover har selve UserForm sit eget sæt egenskaber. Du kan ændre disse egenskaber med vinduet Egenskaber med passende navn. Dette viser vinduet Egenskaber, når en CommandButton-kontrol er valgt.
Brug vinduerne Egenskaber til at ændre egenskaberne for UserForm-kontroller.
Egenskabsvinduet vises, når du trykker på F4, og egenskaberne vist i dette vindue afhænger af, hvad der er valgt. Hvis du vælger et andet kontrolelement, ændres egenskaberne til dem, der passer til det pågældende kontrolelement. For at skjule vinduet Egenskaber og få det af vejen, skal du klikke på knappen Luk i dets titellinje. Et tryk på F4 bringer det altid tilbage, når du har brug for det.
Egenskaber for kontroller omfatter følgende:
-
Navn
-
Bredde
-
Højde
-
Værdi
-
Billedtekst
Hver kontrol har sit eget sæt af egenskaber (selvom mange kontrolelementer har nogle fælles egenskaber). Følg disse trin for at ændre en egenskab ved hjælp af vinduet Egenskaber:
Sørg for, at det korrekte kontrolelement er valgt i brugerformularen.
Sørg for, at vinduet Egenskaber er synligt.
I vinduet Egenskaber skal du klikke på den egenskab, du vil ændre.
Foretag ændringen i den højre del af vinduet Egenskaber.
Hvis du vælger selve UserForm (ikke et kontrolelement på UserForm), kan du bruge vinduet Egenskaber til at justere UserForm-egenskaber.
Se vinduet UserForm Code
Hvert UserForm-objekt har et kodemodul, der indeholder VBA-koden (hændelseshåndteringsprocedurerne), der udføres, når brugeren arbejder med dialogboksen. Tryk på F7 for at se kodemodulet. Kodevinduet er tomt, indtil du tilføjer nogle procedurer. Tryk på Shift+F7 for at vende tilbage til dialogboksen.
Her er en anden måde at skifte mellem kodevinduet og UserForm-visningen på: Brug knapperne Vis kode og Vis objekt i projektvinduets titellinje. Eller højreklik på brugerformularen og vælg Vis kode. Hvis du ser kode, skal du dobbeltklikke på UserForm-navnet i projektvinduet for at vende tilbage til UserForm.
Viser en brugerformular
Du viser en UserForm ved at bruge UserForms Vis metode i en VBA-procedure.
Makroen, der viser dialogboksen, skal være i et VBA-modul — ikke i kodevinduet for brugerformularen.
Følgende procedure viser dialogboksen med navnet UserForm1:
Sub ShowDialogBox()
BrugerForm1.Vis
' Andre udtalelser kan gå her
Slut Sub
Når Excel viser dialogboksen, stopper ShowDialogBox-makroen, indtil brugeren lukker dialogboksen. Derefter udfører VBA eventuelle resterende udsagn i proceduren. Det meste af tiden vil du ikke have mere kode i proceduren. Som du senere ser, placerer du dine hændelseshåndteringsprocedurer i kodevinduet for brugerformularen. Disse procedurer starter, når brugeren arbejder med kontrollerne på brugerformularen.
Brug af information fra en brugerformular
VBE giver et navn for hver kontrol, du tilføjer til en brugerformular. Kontrolelementets navn svarer til dens Navn-egenskab. Brug dette navn til at henvise til en bestemt kontrol i din kode. Hvis du f.eks. tilføjer et CheckBox-kontrolelement til en UserForm ved navn UserForm1, hedder CheckBox-kontrolelementet CheckBox1 som standard. Du kan bruge boksen Egenskaber til at få denne kontrol til at blive vist med et flueben. Eller du kan skrive kode for at gøre det:
UserForm1.CheckBox1.Value = Sand
Det meste af tiden skriver du koden til en UserForm i UserForms kodemodul. Hvis det er tilfældet, kan du udelade UserForm-objektkvalifikationen og skrive sætningen sådan her:
CheckBox1.Value = Sand
Din VBA-kode kan også kontrollere forskellige egenskaber for kontrollerne og tage passende handlinger. Følgende sætning udfører en makro ved navn PrintReport, hvis afkrydsningsfeltet (kaldet CheckBox1) er markeret:
Hvis CheckBox1.Value = True, så ring til PrintReport
Det er normalt en god idé at ændre standardnavnet, som VBE har givet til dine kontroller, til noget mere meningsfuldt.