Denne artikkelen vil demonstrere hvordan du bruker kontroller i UserForms i Excel VBA.
VBA har muligheten til å lage skjemaer som brukeren kan samhandle med, for eksempel fakturaskjemaer eller kontaktinformasjon. Et skjema kan inneholde en rekke skjemakontroller, for eksempel tekstbokser, kombinasjonsbokser, listebokser og kommandoknapper. Denne artikkelen vil dekke de mest populære kontrollene som brukes på brukerskjemaer, nemlig tekstbokser, etiketter, kombinasjonsbokser, listebokser, avmerkingsbokser og valggrupper.
For å finne ut mer om innebygde brukerskjemaer og opprette egendefinerte brukerskjemaer i Excel, klikk her.
Opprette en UserForm
For å opprette en UserForm i Excel VBA må vi først åpne VBE Editor.
For å sette inn et nytt brukerskjema i koden, velg UserForm alternativet fra Sett inn -menyen.
Et nytt brukerskjema vil vises i Project Explorer og vises i kodevinduet til høyre.
Du kan gi nytt navn til skjemaet ved hjelp av Egenskaper eske. Dette skal vises under din Project Explorer.
Hvis det er så synlig, trykker du på F4 eller klikk Utsikt, Egenskaper -vinduet.
Klikk i Navn eiendom og gi nytt navn til skjemaet.
Vi kan nå begynne å fylle ut skjemaet vårt med kontroller - tekstbokskontrollen er den mest populære kontrollen sammen med etikettkontrollen og kommandoknappen.
For å fylle ut skjemaet med kontroller, må vi slå på verktøykassen.
I Meny, plukke ut Vis> Verktøykasse.
Opprette en tekstboks
Hvis du vil opprette en tekstboks på skjemaet, velger du tekstbokskontrollen i verktøykassen.
Dra en boksform på skjemaet med musen, hold venstre knapp nede, og slipp deretter museknappen.
Siden dette er den første tekstboksen vi lager, vil den få navnet TextBox1. Som med skjemaet, kan du bruke vinduet Egenskaper til å gi nytt navn til tekstboksen.
Vi kan fortsette å lage så mange tekstbokser som vi trenger, og navngi dem etter behov ved å bruke egenskapen Navn i vinduet Egenskaper.
Opprette en etikettkontroll
En etikettkontroll forteller oss hva tekstboksen skal brukes til å inneholde. Du drar på skjemaet på samme måte som du gjør for en tekstboks, og deretter kan du skrive inn nødvendig tekst i etikettkontrollen, for eksempel: Fornavn som vist nedenfor.
Som med tekstboksene, fortsett å lage så mange som kreves i skjemaet.
Opprette en kombinasjonskontroll
En kombinasjonsboks (eller en nedtrekksboks) lar brukeren velge fra en liste med verdier. Hvis du vil opprette en kombinasjonsboks, klikker du i verktøykassen på kombinasjonsboksen, og klikker og drar kombinasjonsboksen i skjemaet.
Gi kombinasjonsboksen et passende navn.
Legge til verdier i kombinasjonsboksen
For å fylle det med verdier, må vi kode inn i Initialiser metoden for brukerskjemaobjektet.
For å komme til koden bak skjemaet (CBF), dobbeltklikker du enten på skjemaet, eller klikker på kodeknappen i Project Explorer for å bytte til kodevisning.
Velg Brukerskjema i venstre nedtrekksliste, og velg deretter Initialiser i rullegardinlisten til høyre.
Skriv inn følgende kode i Sub og End Sub for å fylle ned rullegardinboksen:
1234 | Me.cboState.AddItem "Alabama"Me.cboState.AddItem "Alaska"Me.cboState.AddItem "Arizona"Me.cboState.AddItem "Arkansas" |
Vi kan selvfølgelig fortsette med å fylle ut listen med resten av delstatene i USA!
For å kjøre brukerskjemaet for å se listen i aksjon, 1) bytt tilbake til skjemavisning og deretter, 2) i verktøylinjen, klikk på Løpe knapp.
Klikk på rullegardinpilen for å se listen.
Vi kan også bruke et område i Excel for å fylle ut kombinasjonsboksen.
123456 | Private Sub UserForm_Initialize ()Dim rng As RangeFor hver rng In Range ("A1: A50")Me.cboState.AddItem rng.ValueNeste rngSlutt Sub |
Dette vil plukke opp alle verdier som er lagret i område A1 til A50 og fylle ned rullegardinlisten tilsvarende.
Opprette en listebokskontroll
En List Box -kontroll fungerer på samme måte som en Combo Box -kontroll, men lar oss se alle alternativene på skjemaet i et listeformat.
Velg Listeboks -kontrollen i verktøykassen og dra for å lage en listeboks på skjemaet.
Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!
Legge til verdier i listeboksen
I initialiseringshendelsen for skjemaet skriver du inn følgende kode:
123456 | Private Sub UserForm_Initialize ()Dim rng As RangeFor hver rng In Range ("A1: A50")Me.lstState.AddItem rng.ValueNeste rngSlutt Sub |
Når vi kjører skjemaet, vises listeboksen som vist på bildet nedenfor:
Opprette en kontrollboks
Avmerkingsbokser lar brukeren merke av eller fjerne merket for et alternativ.
Velg kontrollboksen, og klikk deretter på skjemaet du vil at den skal gå til.
Endre bildeteksten og navnet på avmerkingsboksen i vinduet Egenskaper.
Opprette en alternativgruppekontroll med alternativknapper
En alternativgruppe lar brukeren velge fra en rekke tilgjengelige alternativer. Det første trinnet i å opprette en valggruppe er å legge til en rammekontroll i skjemaet, og deretter legge til alternativknappene i rammen som er lagt til. Ved å gjøre dette sikrer vi at når vi kjører skjemaet, kan bare én av alternativknappene i rammen velges om gangen.
Velg rammekontrollen i verktøykassen og dra for å lage en ramme på skjemaet.
Velg alternativknappkontrollen i verktøykassen og klikk deretter INNEN i rammen som er opprettet ovenfor for å legge til alternativknappen i rammen. Gjenta etter behov.
Klikk på rammen og 1) endre navnet på rammen og bildeteksten. 2) Klikk deretter på hver av alternativknappene og endre bildeteksten.
Opprette en kommandoknapp for å gå ut av skjemaet
På dette stadiet er den eneste måten å lukke skjemaet på, ved å bruke lukkeknappen i høyre hjørne av skjemastyringslinjen. En mer effektiv måte å gå ut av et skjema, og et vi har mer kontroll over, er ved å opprette en Avslutt -knapp på skjemaet. Dette gjøres ved hjelp av kommandoknappkontrollen i verktøykassen.
Velg kommandoknappkontrollen, og klikk deretter og dra i skjemaet for å opprette knappen.
Ved hjelp av bildetekstegenskapen endrer du bildeteksten på kommandoknappen til OK, og akseleratoren til "O"
Formålet med akseleratoren er at brukeren skal bruke tastaturet for å aktivere knappen, i dette tilfellet Alt+O. ville aktivere knappen.
Flott produkt. AutoMacro skriver ikke bare koden din, den lærer når du går! " - Tony, Storbritannia
Lære merLes våre 900+ anmeldelser
Legger til kode til kommandoknappen
For at kommandoknappen skal fungere, må vi legge til kode bak den, slik at når knappen klikkes, kjøres koden. Dette kalles klikkhendelsen på knappen.
For å komme til klikkhendelsen, dobbeltklikker du på knappen i skjermens designvisning.
1) Klikkhendelsen opprettes automatisk ettersom dette er hendelsen som oftest brukes for kommandoknapper.
2) Hvis vi skulle klikke i rullegardinboksen Prosedyre på høyre side, ville vi se en liste over alle hendelsesmetodene som er tilgjengelige for kommandoknappen. Denne listen endres i henhold til hvilken type kontroll vi har opprettet ettersom det er forskjellige hendelser tilgjengelig for forskjellige typer kontroller.
Skriv inn følgende kode i klikkhendelsen på kommandoknappen.
123456789101112131415 | Privat sub cmdOK_Click ()Område ("E1") = Me.txtFirstnameOmråde ("E2") = Me.txtSurnameOmråde ("E3") = Me.txtCellPhoneOmråde ("E4") = Me.cboStateIf Me.ckContactInfo = True ThenRange ("E5") = "SMS tillatt"EllersRange ("E5") = "SMS ikke tillatt"Slutt omHvis Me.opt1.Value = True Then Range ("E6") = Me.opt1.CaptionHvis Me.opt2.Value = True Then Range ("E6") = Me.opt2.CaptionHvis Me.opt3.Value = True Then Range ("E6") = Me.opt3.CaptionLast ut megSlutt Sub |
Vi kan deretter kjøre skjemaet, fylle ut tekstboksene og velge fra rullegardinlisten. Vi klikker deretter OK for å legge inn informasjonen i Excel.