Varje Excel-dialogruta som du skapar i VBA lagras i sitt eget UserForm-objekt — en dialogruta per UserForm. Du skapar och får åtkomst till dessa användarformulär i Visual Basic Editor.
Infogar ett nytt användarformulär
Infoga ett UserForm-objekt genom att följa dessa steg:
Aktivera VBE genom att trycka på Alt+F11.
Välj arbetsboken som innehåller användarformuläret i projektfönstret.
Välj Infoga → Användarformulär.
VBE:n infogar ett nytt UserForm-objekt, som innehåller en tom dialogruta.
Här är ett användarformulär - en tom dialogruta. Ditt jobb, om du väljer att acceptera det, är att lägga till några kontroller i detta användarformulär.
Ett nytt UserForm-objekt.
Lägga till kontroller i ett användarformulär
När du aktiverar ett användarformulär visar VBE verktygslådan i ett flytande fönster. Du använder verktygen i verktygslådan för att lägga till kontroller i ditt användarformulär. Om, av någon anledning, verktygslådan inte visas när du aktiverar ditt användarformulär, välj Visa → Verktygslåda.
För att lägga till en kontroll klickar du bara på önskad kontroll i verktygslådan och drar den till dialogrutan för att skapa kontrollen. När du har lagt till en kontroll kan du flytta och ändra storlek på den med hjälp av standardtekniker.
Här är en lista över de olika verktygen, såväl som deras kapacitet.
Kontrollera |
Vad den gör |
Märka |
Visar text |
Textruta |
Tillåter användaren att skriva in text |
Kombinationsrutan |
Visar en rullgardinslista |
ListBox |
Visar en lista med objekt |
Kryssruta |
Ger alternativ som på/av eller ja/nej |
Alternativknapp |
Tillåter användaren att välja ett av flera alternativ; används i
grupper om två eller fler |
Växlingsknapp |
Gör det möjligt för användaren att slå på eller av en knapp |
Ram |
Innehåller andra kontroller |
Kommandoknapp |
En klickbar knapp |
TabStrip |
Visar flikar |
MultiPage |
En flikbehållare för andra föremål |
Rullningslist |
Gör det möjligt för användaren att dra en stapel för att upprätta en inställning |
Spin Button |
Gör det möjligt för användaren att klicka på en knapp för att ändra ett värde |
Bild |
Håller en bild |
RefEdit |
Tillåter användaren att välja ett intervall |
Ändra egenskaper för en UserForm-kontroll
Varje kontroll du lägger till i ett UserForm har egenskaper som bestämmer hur kontrollen ser ut eller beter sig. Dessutom har UserForm själv sin egen uppsättning egenskaper. Du kan ändra dessa egenskaper med det passande namnet Egenskaper-fönstret. Detta visar fönstret Egenskaper när en kommandoknappskontroll är vald.
Använd Egenskapsfönstren för att ändra egenskaperna för UserForm-kontroller.
Fönstret Egenskaper visas när du trycker på F4, och egenskaperna som visas i det här fönstret beror på vad som är valt. Om du väljer en annan kontroll ändras egenskaperna till de som är lämpliga för den kontrollen. För att dölja fönstret Egenskaper och få det ur vägen, klicka på knappen Stäng i namnlisten. Om du trycker på F4 kommer den alltid tillbaka när du behöver den.
Egenskaper för kontroller inkluderar följande:
-
namn
-
Bredd
-
Höjd
-
Värde
-
Rubrik
Varje kontroll har sin egen uppsättning egenskaper (även om många kontroller har vissa gemensamma egenskaper). För att ändra en egenskap med hjälp av fönstret Egenskaper, följ dessa steg:
Se till att rätt kontroll är vald i användarformuläret.
Se till att fönstret Egenskaper är synligt.
I fönstret Egenskaper klickar du på egenskapen som du vill ändra.
Gör ändringen i den högra delen av fönstret Egenskaper.
Om du väljer själva UserForm (inte en kontroll på UserForm), kan du använda fönstret Egenskaper för att justera UserForm-egenskaper.
Visa fönstret UserForm Code
Varje UserForm-objekt har en kodmodul som innehåller VBA-koden (händelsehanteraren) som exekveras när användaren arbetar med dialogrutan. För att se kodmodulen, tryck på F7. Kodfönstret är tomt tills du lägger till några procedurer. Tryck på Skift+F7 för att återgå till dialogrutan.
Här är ett annat sätt att växla mellan kodfönstret och UserForm-visningen: Använd knapparna Visa kod och Visa objekt i projektfönstrets namnlist. Eller högerklicka på användarformuläret och välj Visa kod. Om du visar kod, dubbelklicka på UserForm-namnet i projektfönstret för att återgå till UserForm.
Visar ett användarformulär
Du visar ett UserForm genom att använda UserForms Show-metod i en VBA-procedur.
Makrot som visar dialogrutan måste finnas i en VBA-modul — inte i kodfönstret för UserForm.
Följande procedur visar dialogrutan med namnet UserForm1:
Sub ShowDialogBox()
UserForm1.Show
' Andra uttalanden kan gå här
Avsluta Sub
När Excel visar dialogrutan, stannar ShowDialogBox-makrot tills användaren stänger dialogrutan. Sedan kör VBA alla återstående satser i proceduren. För det mesta kommer du inte ha någon mer kod i proceduren. Som du senare ser lägger du dina händelsehanterare-procedurer i kodfönstret för användarformuläret. Dessa procedurer börjar när användaren arbetar med kontrollerna på UserForm.
Använda information från ett användarformulär
VBE ger ett namn för varje kontroll du lägger till i ett användarformulär. Kontrollens namn motsvarar dess Name-egenskap. Använd detta namn för att referera till en viss kontroll i din kod. Om du till exempel lägger till en CheckBox-kontroll i ett UserForm som heter UserForm1, heter CheckBox-kontrollen CheckBox1 som standard. Du kan använda rutan Egenskaper för att få denna kontroll att visas med en bock. Eller så kan du skriva kod för att göra det:
UserForm1.CheckBox1.Value = Sant
För det mesta skriver du koden för ett UserForm i UserForms kodmodul. Om så är fallet kan du utelämna UserForm-objektkvalificeraren och skriva uttalandet så här:
CheckBox1.Value = Sant
Din VBA-kod kan också kontrollera olika egenskaper hos kontrollerna och vidta lämpliga åtgärder. Följande sats kör ett makro med namnet PrintReport om kryssrutan (med namnet CheckBox1) är markerad:
Om CheckBox1.Value = True Ring då PrintReport
Det är vanligtvis en bra idé att ändra standardnamnet som VBE har gett dina kontroller till något mer meningsfullt.