Den här artikeln kommer att visa hur du använder kontroller i UserForms i Excel VBA.
VBA har förmågan att skapa formulär som användaren kan interagera med, till exempel fakturablanketter eller kontaktuppgifter. Ett formulär kan innehålla en mängd olika formulärkontroller, t.ex. textrutor, kombinationsrutor, listboxar och kommandoknappar. Denna artikel kommer att täcka de mest populära kontrollerna som används på användarformulär, nämligen textrutor, etiketter, kombinationsrutor, listrutor, kryssrutor och tillvalsgrupper.
Om du vill veta mer om inbyggda användarformulär och hur du skapar anpassade användarformulär i Excel, klicka här.
Skapa en UserForm
För att skapa en UserForm i Excel VBA måste vi först öppna VBE Editor.
Om du vill infoga ett nytt användarformulär i din kod väljer du UserForm från menyn Infoga.
Ett nytt användarformulär visas i Project Explorer och visas i kodfönstret till höger.
Du kan byta namn på formuläret med Egenskaper låda. Detta bör visas under din Project Explorer.
Om det är så synligt, tryck på F4 eller klicka Se, Egenskapsfönster.
Klicka i namn egendom och byt namn på formuläret.
Vi kan nu börja fylla i vårt formulär med kontroller - textrutans kontroll är den mest populära kontrollen tillsammans med etikettkontrollen och kommandoknappen.
För att fylla i formuläret med kontroller måste vi slå på verktygslådan.
I Meny, Välj Visa> Verktygslåda.
Skapa en textruta
Om du vill skapa en textruta i formuläret väljer du textrutekontrollen i verktygslådan.
Dra en rutform på formuläret med musen, håll ned vänster knapp och släpp sedan musknappen.
Eftersom det här är den första textrutan vi skapar kommer den att heta TextBox1. Som med formuläret kan du använda fönstret Egenskaper för att byta namn på textrutan.
Vi kan fortsätta att skapa så många textrutor i vår form som vi behöver och namnge dem efter behov med hjälp av egenskapen Namn i fönstret Egenskaper.
Skapa en etikettkontroll
En etikettkontroll berättar vad textrutan ska användas för att hålla. Du drar på formuläret på samma sätt som du gör för en textruta, och sedan kan du skriva in önskad text inom etikettkontrollen, t.ex.: Förnamn enligt nedan.
Som med textrutorna, fortsätt skapa så många som krävs i formuläret.
Skapa en kombinationsboxkontroll
En kombinationsruta (eller en listruta) gör att användaren kan välja från en lista med värden. För att skapa en kombinationsruta, klicka i verktygslådan på kombinationsrutan och klicka och dra kombinationsrutan i ditt formulär.
Namnge kombinationsrutan på lämpligt sätt.
Lägga till värden i kombinationsrutan
För att fylla det med värden måste vi koda in i Initiera metod för användarformulärobjektet.
För att komma till koden bakom formuläret (CBF), dubbelklicka antingen på formuläret eller klicka på kodknappen i Project Explorer för att växla till kodvy.
I den vänstra listrutan väljer du Användarformulär och väljer sedan Initiera i den högra listrutan.
Skriv följande kod i Sub och End Sub för att fylla i rullgardinsmenyn:
1234 | Me.cboState.AddItem "Alabama"Me.cboState.AddItem "Alaska"Me.cboState.AddItem "Arizona"Me.cboState.AddItem "Arkansas" |
Vi kan naturligtvis fortsätta att fylla i listan med resten av staterna i USA!
För att köra användarformuläret för att se listan i aktion, 1) växla tillbaka till formulärvy och sedan, 2) i verktygsfältet, klicka på Springa knapp.
Klicka på rullgardinspilen för att se listan.
Vi kan också använda ett intervall i Excel för att fylla i kombinationsrutan.
123456 | Private Sub UserForm_Initialize ()Dim rng As RangeFör varje rng In Range ("A1: A50")Me.cboState.AddItem rng.ValueNästa rngAvsluta Sub |
Detta hämtar alla värden som lagras i intervallet A1 till A50 och fyller i rullgardinsmenyn i enlighet därmed.
Skapa en listboxkontroll
En List Box -kontroll fungerar på samma sätt som en Combo Box -kontroll, men låter oss se alla alternativ på formuläret i ett listformat.
Välj Listbox -kontrollen i verktygslådan och dra sedan för att skapa en listruta i formuläret.
Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!
Lägga till värden i listrutan
I händelsen Initiera i formuläret skriver du följande kod:
123456 | Private Sub UserForm_Initialize ()Dim rng As RangeFör varje rng In Range ("A1: A50")Me.lstState.AddItem rng.ValueNästa rngAvsluta Sub |
När vi kör formuläret visas listrutan som visas på bilden nedan:
Skapa en kontrollruta
Kryssrutor gör det möjligt för användaren att markera eller avmarkera ett alternativ.
Markera kryssrutan och klicka sedan på i formuläret där du vill att den ska gå.
Ändra rubriken och namnet på kryssrutan i fönstret Egenskaper.
Skapa en alternativgruppskontroll med alternativknappar
En alternativgrupp tillåter användaren att välja bland ett antal tillgängliga alternativ. Det första steget i att skapa en alternativgrupp är att lägga till en ramkontroll i formuläret och sedan lägga till alternativknapparna inom ramen som har lagts till. Genom att göra detta säkerställer vi att när vi kör formuläret kan endast en av alternativknapparna inom ramen väljas åt gången.
Välj ramkontrollen i verktygslådan och dra sedan för att skapa en ram på ditt formulär.
Välj alternativknappskontrollen i verktygslådan och klicka sedan på INOM ramen som skapades ovan för att lägga till alternativknappen i ramen. Upprepa vid behov.
Klicka på ramen och 1) ändra namnet på ramen och bildtexten. 2) Klicka sedan på var och en av alternativknapparna och ändra bildtexten.
Skapa en kommandoknapp för att lämna formuläret
I detta skede är det enda sättet att stänga formuläret att använda stängningsknappen i det högra hörnet av formulärkontrollfältet. Ett mer effektivt sätt att avsluta ett formulär, och ett som vi har mer kontroll över, är genom att skapa en Exit -knapp på formuläret. Detta görs med hjälp av kommandoknappskontrollen i verktygslådan.
Välj kommandoknappskontrollen och klicka och dra sedan i formuläret för att skapa knappen.
Ändra bildtexten för kommandoknappen till OK och Accelerator till "O" med hjälp av Caption -egenskapen
Syftet med acceleratorn är att användaren använder tangentbordet för att aktivera knappen, i det här fallet Alt+O skulle aktivera knappen.
Bra produkt. AutoMacro skriver inte bara din kod, den lär ut när du går! " - Tony, Storbritannien
Läs merLäs våra 900+ recensioner
Lägga till kod till kommandoknappen
För att kommandoknappen ska fungera måste vi lägga till koden bakom den så att koden körs när du klickar på den. Detta kallas för klickhändelsen på knappen.
För att komma till klickhändelsen dubbelklickar du på knappen i formulärets designvy.
1) Klickahändelsen skapas automatiskt eftersom detta är den händelse som oftast används för kommandoknappar.
2) Om vi skulle klicka i rullgardinsmenyn Procedur till höger skulle vi se en lista över alla händelsemetoder som är tillgängliga för kommandoknappen. Denna lista ändras beroende på vilken typ av kontroll vi har skapat eftersom det finns olika händelser tillgängliga för olika typer av kontroller.
Skriv följande kod i klickhändelsen på kommandoknappen.
123456789101112131415 | Privat under cmdOK_Click ()Område ("E1") = Me.txtFirstnameRange ("E2") = Me.txtSurnameRange ("E3") = Me.txtCellPhoneOmråde ("E4") = Me.cboStateOm Me.ckContactInfo = True dåRange ("E5") = "SMS tillåtet"AnnanRange ("E5") = "SMS är inte tillåtet"Avsluta omIf Me.opt1.Value = True Then Range ("E6") = Me.opt1.CaptionIf Me.opt2.Value = True Then Range ("E6") = Me.opt2.CaptionIf Me.opt3.Value = True Then Range ("E6") = Me.opt3.CaptionLadda ur migAvsluta Sub |
Vi kan sedan köra formuläret, fylla i textrutorna och välja från rullgardinsmenyn. Vi klickar sedan på OK för att ange informationen i Excel.