Slik bruker du Visual Basic for Applications (VBA) til å endre modale brukerskjemaer i Excel

Kundestøtte for Office 2003 er avsluttet

Microsoft avsluttet kundestøtte for Office 2003 den 8. april 2014. Denne endringen har påvirket programvareoppdateringene og sikkerhetsalternativene dine. Finn ut hvordan dette påvirker deg og hvordan du forblir beskyttet.

VIKTIG: Denne artikkelen ble oversatt med maskinoversettelsesprogramvare fra Microsoft og muligens redigert av Microsoft Community via CTF-teknologi i stedet for av en oversetter. Microsoft tilbyr både menneskelig oversatte og maskinoversatte/Community-redigerte artikler, slik at du får tilgang til alle artiklene i vår Knowledge Base på ditt eget språk. En maskinoversatt eller Community-redigert artikkel er imidlertid ikke alltid perfekt. Den kan inneholde feil i vokabular, syntaks eller grammatikk, mye likt en fremmedspråklig som forsøker å snakke språket ditt. Microsoft har ikke ansvar for unøyaktige opplysninger, feil eller skade forårsaket av feilaktig oversettelse av innholdet eller kundenes bruk av informasjonen. Microsoft oppdaterer jevnlig maskinoversettelsesprogramvaren og -verktøyene for å forbedre redigering av maskinoversatte tekster.

Den engelske versjonen av denne artikkelen er den følgende: 829070
Sammendrag
Denne artikkelen beskriver hvordan du endrer modale brukerskjemaer programmatisk i Microsoft Excel. Den inneholder eksempler og Microsoft Visual Basic for Applications (VBA)-makroene som viser deg hvordan du kan dra nytte av funksjonene i modale brukerskjemaer og hvordan du bruker ActiveX ™-kontroller som er tilgjengelige for modale brukerskjemaer.

En introduksjon til de grunnleggende prinsippene for modale brukerskjemaer beskriver hvordan du viser modale brukerskjemaer, hvordan du skjuler midlertidig modale brukerskjemaer og hvordan å fjerne modale brukerskjemaer. Du blir også vist hvordan du bruker de vanligste hendelsene som er knyttet til modale brukerskjemaer, den Initialiser hendelsen, den Klikk hendelsen, og Avslutte hendelsen. En eller flere av følgende eksempler viser hvordan du bruker hver av følgende ActiveX ™-kontroller i et brukerskjema:
  • Etikett kontroll
  • Tekstboks kontroll
  • CommandButton kontroll
  • ListBox kontroll
  • Kombinasjonsboks kontroll
  • Ramme kontroll
  • OptionButton kontroll
  • Avmerkingsboks kontroll
  • ToggleButton kontroll
  • TabStrip kontroll
  • Flere møter kontroll
  • Rullefelt kontroll
  • SpinButton kontroll
  • RefEdit kontroll
  • Bilde kontroll
INTRODUKSJON
Denne artikkelen beskriver hvordan du bruker VBA til å gjøre endringer i modale brukerskjemaer i Excel.
Mer informasjon
Microsoft bruker ment som eksempler, uten garanti, verken direkte eller indirekte. Dette inkluderer, men er ikke begrenset til, eventuelle stilltiende garantier om salgbarhet eller anvendelighet for særskilte formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som anvendes, og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan hjelpe deg med å forklare funksjonaliteten til en bestemt prosedyre, men de endrer ikke disse eksemplene for å lage forbedret funksjonalitet eller lage prosedyrer som dekker dine spesifikke behov.

Grunnleggende om UserForm

Slik viser du en UserForm

Syntaksen som brukes til å vise en UserForm programmatisk er følgende:
UserFormName. Vis
Hvis du vil vise en UserForm som heter UserForm1, kan du bruke følgende kode:
UserForm1.Show
Du kan laste et brukerskjema i minnet uten å faktisk vise den. Det kan ta en omfattende UserForm flere sekunder skal vises. Fordi du kan forhåndslastes en UserForm i minnet, kan du bestemme når du skal få dette overhead. Hvis du vil laste inn UserForm1 i minnet uten å vise den, kan du bruke følgende kode:
Load UserForm1
Hvis du vil vise UserForm, må du brukeVis metoden som ble vist tidligere.

Hvordan du skjuler midlertidig en UserForm

Hvis du vil skjule en UserForm midlertidig, bruker du metodenskjule . Du vil kanskje skjule en UserForm Hvis programmet innebærer å flytte mellom modale brukerskjemaer. Hvis du vil skjule en UserForm, kan du bruke følgende kode:
UserForm1.Hide
Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213747 XL2000: Hvordan du flytter mellom egendefinerte modale brukerskjemaer med kommandoknapper

Slik fjerner du en UserForm fra minnet

Hvis du vil fjerne en UserForm fra minnet, bruker duUnload -setningen. Hvis du vil fjerne en UserForm som heter UserForm1, kan du bruke følgende kode:
Unload UserForm1
Hvis du fjerner en UserForm i en hendelsesprosedyre som er knyttet til et brukerskjema eller som er knyttet til en kontroll i et brukerskjema (du klikker for eksempel enCommandButton -kontroll), kan du bruke "Meg" nøkkelord i stedet for navnet på brukerskjema. Hvis du vil bruke "Meg" nøkkelord for å fjerne en UserForm, kan du bruke følgende kode:
Unload Me

Slik bruker du UserForm hendelser

Modale brukerskjemaer støtter mange forhåndsdefinerte hendelser som du kan knytte til VBA-prosedyrer. Når hendelsen forekommer, kjøres fremgangsmåten som du har knyttet til hendelsen. En enkelt handling som utføres av en bruker kan starte flere hendelser. Blant mest er ofte brukte hendelser for en UserForm initialisere hendelsen, velger du hendelsen og hendelsen Terminate .

Obs! En Visual Basic-modul som inneholder en hendelsesprosedyre kan refereres til som en modul "bak" brukerskjema. En modul som inneholder hendelsesprosedyrer er ikke synlige i samlingen moduler i Microsoft Project Explorer-vinduet i Visual Basic-redigering. Du må dobbeltklikke brødteksten i et brukerskjema vise kodemodulen brukerskjema.

Hvordan skal overlappes UserForm hendelser

Hvis du vil overlappe UserForm hendelser, følger du denne fremgangsmåten:
  1. Opprette en ny arbeidsbok i Excel.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Dobbeltklikk UserForm for å vise vinduet for theCode av brukerskjema.
  5. Skriv inn følgende kode i modulen:
    Private Sub UserForm_Click()    Me.Height = Int(Rnd * 500)    Me.Width = Int(Rnd * 750)End SubPrivate Sub UserForm_Initialize()    Me.Caption = "Events Events Events!"    Me.BackColor = RGB(10, 25, 100)End SubPrivate Sub UserForm_Resize()    msg = "Width: " & Me.Width & Chr(10) & "Height: " & Me.Height    MsgBox prompt:=msg, Title:="Resize Event"End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="QueryClose Event"End SubPrivate Sub UserForm_Terminate()    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="Terminate Event"End Sub
  6. Klikk RunSub/UserFormRun -menyen.
Når UserForm lastes først, bruker makroen initialisere hendelsen til å endre egenskapen Caption for UserForm til "Hendelser hendelser hendelser!" og egenskapen BackColor til Mørk blå .

Når du klikker UserForm, kan du starte Klikk -hendelsen. Klikk -hendelsen, endres størrelsen på brukerskjema. Fordi du har opprettet en fremgangsmåte for å Endre størrelse på hendelsen, får du to meldingsbokser når du klikker brukerskjema. Endre størrelse på hendelsen oppstår to ganger fordi kode bak Klikk -hendelsen endres både egenskapen Bredde og Høyde for UserForm.

Lukke UserForm starter QueryClose -hendelse. Hendelsen QueryClose viser en meldingsboks som inneholder teksten du gav UserForm i koden for starte hendelsen. Du kan bruke QueryClose -hendelsen når du vil utføre et bestemt sett med handlinger hvis brukeren lukker brukerskjema.

Hendelsen Terminate genererer deretter en meldingsboks som angir at teksten for UserForm er UserForm1. Terminate -hendelsen oppstår etter at UserForm er fjernet fra minnet og tittelen på UserForm returnerer til sin opprinnelige tilstand.

Hvordan du forhindrer at en UserForm lukkes ved hjelp av Lukk-knappen

Når du kjører en UserForm, legges en Lukk -knappen øverst til høyre i vinduet brukerskjema. Hvis du vil hindre at UserForm lukkes ved hjelp av Lukk -knappen, må du overtrykke hendelsen QueryClose .

QueryClose -hendelsen oppstår rett før UserForm er lastet ned fra minnet. Bruke argumentet CloseMode av QueryClose -hendelsen til å bestemme hvordan UserForm er lukket. VbFormControlMenu -verdien for argumentet CloseMode angir at det ble klikket Lukk -knappen. Hvis du vil beholde UserForm aktive satt argumentet avbryte hendelsen QueryClose til Sann. Hvis du vil bruke QueryClose -hendelsen til å hindre at en UserForm lukkes ved hjelp av Lukk -knappen, gjør du følgende:
  1. Opprette en ny arbeidsbok i Excel.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legg til en CommandButton -kontroll i brukerskjema.
  5. Dobbeltklikk UserForm for å vise vinduet for theCode av brukerskjema.
  6. Skriv inn følgende kode i Kode-vinduet:
    Private Sub CommandButton1_Click()    Unload MeEnd SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    IF CloseMode = vbFormControlMenu Then        Cancel = True        Me.Caption = "Click the CommandButton to close Me!"    End IfEnd Sub
  7. Klikk RunSub/UserFormRun -menyen.
UserForm lukkes ikke når du klikker Lukk -knappen. Du må klikke CommandButton -kontroll for å lukke brukerskjema.

Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
207714 XL2000: Kjøretidsfeil ved hjelp av modale brukerskjemaer samling
211527 XL2000: Kan ikke dra UserForm kontrollen til et regneark
211868 XL2000: Feil ved kjøring av makro som setter inn kontrollen i UserForm
213582 XL2000: Problemer når du bruker en makro til å legge til kontrollen i UserForm
213583 XL2000: Kan ikke vise modale brukerskjemaer i andre prosjekter
213736 XL2000: Hvordan å finne nøkkelen trykket sammen med museknappen
213744 XL2000: Hvordan du skjuler midlertidig en UserForm
213747 XL2000: Hvordan du flytter mellom egendefinerte modale brukerskjemaer med kommandoknapper
213749 XL2000: Hvordan du bruker en UserForm for dataregistrering
213768 XL2000: Hvordan å dynamisk endre størrelsen på et skjema
213774 XL2000: Hvordan du oppretter et oppstartsskjermbilde med en UserForm

VBA-kode

Excel inneholder femten forskjellige kontroller som du kan bruke på modale brukerskjemaer. Denne delen inneholder flere eksempler som bruker disse kontrollene programmatisk.

Obs! VBA-koden som er inkludert i denne artikkelen inneholder eksempler som påvirker alle egenskaper og hendelser for kontrollene. Hvis du må, kan du bruke Egenskaper-vinduet for å se en liste over egenskaper som er tilgjengelige for en kontroll. Hvis du vil se en liste over egenskaper på Vis -menyen, klikk Egenskaper-vinduet.

Bruke utformingsmodus til å redigere kontroller

Når du bruker Visual Basic-redigering til å utforme en dialogboks, bruker du utformingsmodus. Du kan redigere kontroller i utformingsmodus, og du kan endre egenskapene for en kontroll i et brukerskjema i Egenskaper-vinduet. Hvis du vil vise egenskaper-vinduet påVis -menyen, klikk Egenskaper-vinduet.

Obs! Kontroller svarer ikke til hendelser når du er i utformingsmodus. Når du kjører en dialogboks for å vise den måten brukere ser den, er programmet i kjøremodus. Endringer du gjør i egenskapene for en kontroll i kjøremodus beholdes ikke når UserForm er fjernet fra minnet.

Obs! Kontroller svar på hendelser i kjøremodus.

Hvordan du refererer til kontroller på en UserForm

Hvordan du referere til kontroller programmatisk, avhenger av typen Visual Basic-modularket der du kjører koden. Hvis koden kjøres fra en generell modul, er syntaksen følgende:
UserFormName.Controlname.Property = Verdi
Hvis du vil angi egenskapenText for en TextBox -kontroll som heter Tekstboks1 på et brukerskjema som heter UserForm1 til verdien for Bob, bør du for eksempel bruke følgende kode:
UserForm1.TextBox1.Text = "Bob"
Hvis koden er i en prosedyre som startes av en hendelse for en kontroll eller UserForm, har du ikke referere til navnet på UserForm. I stedet kan du bruke følgende kode:
TextBox1.Text = "Bob"
Når du knytter en kode til et objekt, er koden knyttet til en av hendelsene på dette objektet. I mange av eksemplene i denne artikkelen, kan du knytte kode til hendelsenKlikkCommandButton -objektet.

Etikettkontroller

Etikettkontroller brukes hovedsaklig til å beskrive andre kontroller i et brukerskjema. En etikett kan ikke redigeres av brukeren mens du kjører brukerskjema. Bruk Caption -egenskapen til å angi eller returnere teksten i en etikettkontroll . Andre vanlige egenskaper til å formatere en etikettkontroll inkluderer Font -egenskapen og ForeColor -egenskapen.

Slik bruker du et WITH-uttrykk til å formatere en etikettkontroll

Hvis du vil bruke WITH -uttrykk til å endre egenskaper for en etikett , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en etikett for brukerskjema.
  5. Legg til en CommandButton -kontroll i brukerskjema.
  6. Dobbeltklikk CommandButton -kontroll toopen kode-vinduet for brukerskjema.
  7. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    With Label1        ' Set the text of the label.        .Caption = "This is Label Example 1"        ' Automatically size the label control.        .AutoSize = True        .WordWrap = False        ' Set the font used by the Label control.        .Font.Name = "Times New Roman"        .Font.Size = 14        .Font.Bold = True        ' Set the font color to blue.        .ForeColor = RGB(0, 0, 255)    End WithEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.
  9. Klikk CommandButton.
Teksten "Dette er etiketten eksempel 1" vises på etiketten i fet skrift Times New Roman med 14 skriftstørrelsen .

Tekstbokskontroller

Tekstbokskontroller brukes ofte til å samle inndata fra brukeren. Text -egenskapen inneholder posten som er gjort i en TextBox -kontroll.

Slik bruker du en TextBox-kontroll til å validere et passord

Hvis du setter egenskapen PasswordChar for en TextBox -kontroll, blir det en "maskert-" redigeringskontroll. Hvert tegn som skrives inn i tekstboksen er visuelt erstattet med tegnet du angir. Slik bruker du en TextBox -kontroll til å validere et passord, følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en TextBox -kontroll av brukerskjema.
  5. Vis -menyen, klikkEgenskaper for å gjøre vinduet Egenskaper vises.
  6. Skriv inn i egenskapen PasswordChar for TextBox -kontroll *.

    Obs! Du endrer verdien til en stjerne.
  7. Legg til en CommandButton -kontroll i brukerskjema.
  8. Dobbeltklikk CommandButton -kontroll toopen kode-vinduet for brukerskjema.
  9. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    If TextBox1.Text <> "userform" Then        MsgBox "Password is Incorrect. Please reenter."        TextBox1.Text = ""        TextBox1.SetFocus    Else        MsgBox "Welcome!"        Unload Me    End IfEnd Sub
  10. Klikk RunSub/UserFormRun -menyen.
  11. Skriv inn passordet UserForm i tekstboksen.
  12. Klikk CommandButton-kontroll.
I dette eksemplet er passordet "userform". Hvis du skriver inn feil passord, får du en meldingsboks som angir at passordet er feil, for TextBox -kontrollen er fjernet, og deretter kan du skrive inn passordet. Når du skriver inn riktig passord, får du en velkomstmelding, og UserForm er lukket.

Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213555 XL2000: Ingen datavalidering egenskap for UserForm TextBoxes

CommandButton-kontroller

Du kan bruke en CommandButton -kontroll til å starte en VBA-prosedyre. VBA-prosedyre er vanligvis knyttet til hendelsen KlikkCommandButton -kontroll. Hvis du vil bruke en CommandButton -kontroll som kjører en prosedyre når Klikk -hendelsen oppstår, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legg til en CommandButton -kontroll i brukerskjema.
  5. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for brukerskjema.
  6. Skriv inn følgende kode i Kode-vinduet:
    Private Sub CommandButton1_Click()    red = Int(Rnd * 255)    green = Int(Rnd * 255)    blue = Int(Rnd * 255)    CommandButton1.BackColor = RGB(red, green, blue)End Sub 
  7. Klikk RunSub/UserFormRun -menyen.
Bakgrunnsfargen for kontrollen CommandButton1 endres hver gang du klikker den.

Hvis du vil ha mer informasjon om CommandButton-kontroll, klikker du artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:
213572 XL2000: Hvis du klikker Avbryt-knappen kan ikke lukke UserForm
213743 XL2000: Hvordan du angir standard kommandoknapp i et brukerskjema

ListBox kontroller

Formålet med listen er å presentere brukeren med en liste over elementer for å velge fra. Du kan lagre elementlisten for en liste i et Excel-regneark . Hvis du vil fylle ut en liste med et celleområde i et regneark , kan du bruke egenskapen Radkilde . Når du bruker egenskapen MultiSelect , kan du definere en liste for å godta flere valg.

Hvordan du får tak i det merkede elementet fra listen

Bruke egenskapen Value for en liste til å returnere det merkede elementet. Hvis du vil returnere det merkede elementet i en enkelt velger liste , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle listen .
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en liste på brukerskjema.
  6. Dobbeltklikk ListBox kontroll påvise kodevinduet for listen .
  7. Skriv inn følgende kode for hendelsen Klikk Liste1 i Kode-vinduet:
    Private Sub ListBox1_Click()    MsgBox ListBox1.ValueEnd Sub 
  8. Klikk RunSub/UserFormRun -menyen.
Når du klikker et element i listen, vises en melding med den valgte varen.

Hvordan du får tak i de merkede elementene i en flere velger liste

For å fastslå hvilke elementer som er valgt i en flere velger liste , må du gjennomløpe alle elementene i listen, og deretter spørre egenskap Selected . Hvis du vil returnere de merkede elementene i en flere velger liste , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle listen .
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en liste på brukerskjema.
  6. KlikkEgenskaper for å se vinduet Egenskaper på Vis -menyen.
  7. Skriv inn verdiene som er angitt for egenskapene for kontrollen følgende liste :
       Property	   Value   -----------     -----------------------   MultiSelect	   1 - frmMultiSelectMulti   RowSource	   Sheet1!A1:A8
  8. Legg til en CommandButton -kontroll i brukerskjema.
  9. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for brukerskjema.
  10. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Sub CommandButton1_Click ()       ' Loop through the items in the ListBox.       For x = 0 to ListBox1.ListCount - 1          ' If the item is selected...          If ListBox1.Selected(x) = True Then             ' display the Selected item.             MsgBox ListBox1.List(x)          End If       Next x    End Sub 
  11. Klikk RunSub/UserFormRun -menyen.
  12. Velg ett eller flere elementer i listen.
  13. Velg CommandButton1.
Når du klikker CommandButton1, vises alle elementene du valgte i listen i en egen meldingsboks. Når alle de merkede elementene vises i en meldingsboks, lukkes automatisk brukerskjema.

Hvordan du bruker egenskapen RowSource (Radkilde) til å fylle ut en liste med celler i et regneark

Hvis du vil bruke egenskapen RowSource (Radkilde) til å fylle en liste fra et celleområde i et regneark , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle listen .
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en liste på brukerskjema.
  6. Legg til en CommandButton -kontroll i brukerskjema.
  7. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for brukerskjema.
  8. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    ListBox1.RowSource = "=Sheet1!A1:A5"End Sub 
  9. Klikk RunSub/UserFormRun -menyen.

    Obs! Liste1 inneholder ikke noen verdier.
  10. Velg CommandButton1.
Liste1 fylles ut med verdier i cellene a1: a5 i Ark1.

Hvordan du fyller ut en liste med verdier i en matrise

Dette eksemplet viser hvordan du fyller ut en liste med en matrisevariabel . Du må tilordne verdiene fra matrisen til ListBox kontrollen ett element om gangen. Vanligvis krever denne prosessen at du bruker en looping struktur, for eksempel en For... Neste løkke. Hvis du vil fylle ut en liste med en matrisevariabel , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en liste på brukerskjema.
  5. Klikkmodulen for å sette inn et modulark på Sett inn -menyen.
  6. Skriv inn følgende kode i Kode-vinduet:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. KlikkmakroerVerktøy -menyen, klikk PopulateListBox, og klikk deretterKjør.
Prosedyren PopulateListBox bygger en enkel matrise, og deretter legger til elementene i matrisen i listen ved hjelp av metoden AddItem . Deretter vises brukerskjema.

Slik bruker du et vannrett celleområde i et regneark til å fylle en liste

Hvis du setter egenskapen Radkilde for en liste til et vannrett celleområde, vises bare den første verdien i listen .

Hvis du vil fylle ut en liste fra et vannrett celleområde ved hjelp av metoden AddItem , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: E1 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle listen .
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en liste på brukerskjema.
  6. Klikkmodulen for å sette inn et modulark på Sett inn -menyen.
  7. Skriv inn følgende kode i Kode-vinduet:
    Sub PopulateListWithHorizontalRange()    For Each x In Sheet1.Range("A1:E1")        UserForm1.ListBox1.AddItem x.Value    Next        UserForm1.ShowEnd Sub
  8. KlikkmakroerVerktøy -menyen, klikkPopulateListWithHorizontalRange, og klikk deretterKjør.
I makroprosedyre går gjennom A1:E5 celler i Ark1, legger du til verdiene i Liste1 én om gangen.

Obs! Liste1 er ikke bundet til A1:E5 celler i Ark1.

Hvordan du returnerer flere verdier fra en liste som er bundet til flere kolonner med data

Du kan formatere ListBox kontroller for å vise mer enn én kolonne med data. Dette betyr at liste viser flere elementer på hver linje i listen. Hvis du vil gå tilbake flere verdier fra det valgte elementet i listen, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. Skriv inn følgende data i cellene som er angitt onSheet1:

    A1: årB1: områdeC1: salg
    A2: 1996 B2: NordC2: 140
    A3: 1996B3: SørC3: 210
    A4: 1997B4: NordC4: 190
    A5: 1997B5: SørC5: 195
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en etikett for brukerskjema.
  6. Legge til en liste på brukerskjema.
  7. Høyreklikk liste, og klikk deretterEgenskaper.
  8. Skriv inn eller velg verdier som er angitt for thefollowing egenskaper for listen som er oppført i følgende tabell:
       Property       Value   ----------------------------   BoundColumn     1   ColumnCount     3   ColumnHeads     True   RowSource       Sheet1!A2:A5
  9. Dobbeltklikk ListBox kontroll påvise kodevinduet for listen .
  10. Skriv inn følgende kode i Kode-vinduet:
    Private Sub ListBox1_Change()    Dim SourceData As Range    Dim Val1 As String, Val2 As String, Val3 As String        Set SourceRange = Range(ListBox1.RowSource)        Val1 = ListBox1.Value    Val2 = SourceRange.Offset(ListBox1.ListIndex, 1).Resize(1, 1).Value    Val3 = SourceRange.Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value        Label1.Caption = Val1 & " " & Val2 & " " & Val3End Sub
  11. Klikk RunSub/UserFormRun -menyen.
Når du klikker en oppføring i listen , endrer etiketten for å vise alle tre elementene i denne oppføringen.

Fjerne alle elementer fra en liste som er bundet til et regneark

Hvis du vil fjerne alle elementer fra en liste som er bundet til et regneark , fjerner du verdien som er lagret i egenskapen Radkilde . Hvis du vil fjerne elementer fra en liste som er bundet til et regneark , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle listen .
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en liste på brukerskjema.
  6. Høyreklikk liste og thenclick Egenskaper.
  7. Skriv inn i egenskapen RowSourceArk1! A1: A5.
  8. Legg til en CommandButton -kontroll i brukerskjema.
  9. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for CommandButton -kontroll.
  10. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    ListBox1.RowSource = ""End Sub
  11. Klikk RunSub/UserFormRun -menyen.

    Liste som du har lagt til i UserFormer fylt ut med verdiene som du angav på Ark1.
  12. Velg CommandButton1.
Alle elementene er fjernet fra Liste1.

Fjerne alle elementer fra en liste som ikke er bundet til et regneark

Det finnes ingen enkel VBA-kommando som fjerner alle elementer fra en liste Hvis listen ikke er bundet til et regneark. Hvis du vil fjerne alle elementer fra en liste som er fylt ut fra et Visual Basic , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en liste på brukerskjema.
  5. Klikkmodulen for å sette inn et modulark på Sett inn -menyen.
  6. Skriv inn følgende kode i Kode-vinduet:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. Legg til en CommandButton -kontroll i brukerskjema.
  8. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for CommandButton -kontroll.
  9. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    For i = 1 To ListBox1.ListCount        ListBox1.RemoveItem 0    Next IEnd Sub
  10. KlikkmakroerVerktøy -menyen, klikk PopulateListBox, og klikk deretterKjør.

    Listen fylles ut, og deretter UserForm vises.
  11. Velg CommandButton1.
Alle elementene er fjernet fra Liste1.

Hvis du vil ha mer informasjon om listen, klikker du artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:
161598 OFF: Hvordan legge til data i en kombinasjonsboks eller liste i Excel eller Word
211446 XL2000: TextColumn-egenskapen viser bare den første kolonnen
211896 XL2000: Hvordan å simulere kombinasjon liste-og redigeringskontroll for modale brukerskjemaer
211899 XL2000: Problemer med konfigurasjonen kolonneoverskriftene i liste
213721 XL2000: Hvordan du fjerner alle elementer fra en liste eller kombinasjonsboks
213722 XL2000: Hvordan du bruker egenskapen TextColumn
213723 XL2000: Hvordan til å returnere verdier fra en liste som viser flere kolonner
213746 XL2000: Hvordan å fylle listen kontroll med flere områder
213748 XL2000: Hvordan til å fylle en liste basert på en annen liste
213752 XL2000: Ved hjelp av metoden AddItem forårsaker en feil når RowSource er bundet til data
213756 XL2000: Ved hjelp av metoden RemoveItem-metoden med liste eller kombinasjonsboks kontroll
213759 XL2000: Hvordan du finner ut hvilke elementer som velges i en liste

Kombinasjonsboks-kontrollene

Du kan bruke ComboBox -kontroll som en rullegardinliste eller en kombinasjonsboks der du kan velge en verdi i en liste eller skrive inn en ny verdi. Style -egenskapen angir om kombinasjonsboks -kontrollen fungerer som en rullegardinliste eller en kombinasjonsboks.

Obs! Alle eksemplene i den forrige delen for listen kan også brukes på ComboBox -kontroll, med unntak av "Hvordan du får tak i de merkede elementene i en flere velger liste"-eksemplet.

Slik legger du til et nytt element i listen hvis kombinasjonsboks-kontrollen ikke er bundet til et regneark

Når du skriver inn en verdi som ikke allerede er i listen i kombinasjonsboks -kontrollen, vil du kanskje legge til den nye verdien i listen. Hvis du vil legge til den nye verdien du skrev inn i kombinasjonsboks -kontrollen hvis kombinasjonsboks -kontrollen ikke er bundet til regnearket, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en ComboBox -kontroll av brukerskjema.
  5. Klikkmodulen for å sette inn et modulark på Sett inn -menyen.
  6. Skriv inn følgende kode i Kode-vinduet:
    Sub PopulateComboBox()     Dim MyArray As Variant     Dim Ctr As Integer     MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")         For Ctr = LBound(MyArray) To Ubound(MyArray)         UserForm1.ComboBox1.AddItem MyArray(Ctr)     Next         UserForm1.Show End Sub
  7. Legg til en CommandButton -kontroll i brukerskjema.
  8. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for CommandButton -kontroll.
  9. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()     Dim listvar As Variant          listvar = ComboBox1.List         On Error Resume Next     ' If the item is not found in the list...     If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar, 0)) Then         ' add the new value to the list.         ComboBox1.AddItem ComboBox1.Value     End If End Sub
  10. KlikkmakroerVerktøy -menyen, klikk PopulateListBox, og klikk deretterKjør.

    Kombinasjonsboks -kontrollen er fylt ut, og deretter UserForm vises.
  11. Skriv inn i ComboBox -kontroll Mangoes (eller en hvilken som helst verdi thatis ikke allerede finnes i listen).
  12. Velg CommandButton1.
Den nye verdien du skrev inn, er nå vises på slutten av listen.

Slik legger du til et nytt element i listen hvis ComboBox-kontroll er bundet til et regneark

Når en bruker skriver inn en verdi som ikke allerede er i listen i kombinasjonsboks -kontrollen, vil du kanskje legge til den nye verdien i listen. Hvis du vil legge til den nye verdien du skrev inn i kombinasjonsboks -kontrollen i listen, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle ComboBox -kontroll.
  3. Merk cellene a1: a5 i Ark1.
  4. VelgnavnSett inn -menyen, og klikk deretter Definer.

    Skriv inn i boksennavn i arbeidsbokenListRange , og klikk deretter OK. Dermed opprettes det definerte navnet ListRange. Du kan bruke det definerte navnet ListRange for å binde Radkilde -egenskapen for ComboBox -kontrollen til regnearket.
  5. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  6. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  7. Legge til en ComboBox -kontroll av brukerskjema.
  8. Egenskaper for ComboBox1, og Skriv inn Ark1! ListRange somRadkilde -egenskapen.
  9. Legg til en CommandButton -kontroll i brukerskjema.
  10. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for CommandButton -kontroll.
  11. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    Dim SourceData As Range    Dim found As Object        Set SourceData = Range("ListRange")    Set found = Nothing    ' Try to find the value on the worksheet.    Set found = SourceData.Find(ComboBox1.Value)        ' If the item is not found in the list...    If found Is Nothing Then        ' redefine ListRange.        SourceData.Resize(SourceData.Rows.Count + 1, 1).Name = "ListRange"        ' Add the new item to the end of the list on the worksheet.        SourceData.Offset(SourceData.Rows.Count, 0).Resize(1, 1).Value _         = ComboBox1.Value        ' Reset the list displayed in the ComboBox.        ComboBox1.RowSource = Range("listrange").Address(external:=True)    End IfEnd Sub
  12. Klikk RunSub/UserFormRun -menyen.

    UserForm vises på Ark1.
  13. Kombinasjonsboks -kontrollen, skriver du inn en verdi som ikke allerede er i listen.
  14. Velg CommandButton1.
Det nye elementet du skrev inn i kombinasjonsboks -kontrollen legges til i listen, og kombinasjonsboks -kontrollen er bundet til listen utvides for å ta med cellene a1: a6.

Slik viser du listen over en ComboBox-kontroll når UserForm vises

Noen ganger kan det være nyttig å vise listen over en ComboBox -kontroll når en UserForm vises først. Det følgende eksemplet bruker hendelsen ( Activate ) av brukerskjema. Hvis du vil vise listen over en ComboBox -kontroll, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a5 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle ComboBox -kontroll.
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  5. Legge til en ComboBox -kontroll av brukerskjema.
  6. Egenskaper for ComboBox1, og Skriv inn Ark1! A1: A5 somRadkilde -egenskapen.
  7. Dobbeltklikk UserForm for å vise vinduet for theCode av brukerskjema.
  8. Skriv inn følgende kode for hendelsen Klikk CommandButton i Kode-vinduet:
    Private Sub UserForm_Activate()           ComboBox1.DropDown       End Sub
  9. Klikk RunSub/UserFormRun -menyen.
UserForm vises på Ark1, og du kan se listen for ComboBox1.

Slik viser du listen over en ComboBox-kontroll når du foretar et valg i en annen kombinasjonsboks

Hvis du vil vise listen over en ComboBox -kontroll automatisk når et valg er gjort i en annen kombinasjonsboks , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. I cellene a1: a10 i Ark1, skriver du inn verdiene du vil bruke touse til å fylle ComboBox -kontroll.
  3. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  4. KlikkmodulSett inn -menyen.
  5. Skriv inn følgende kode i kodevinduet for modulen:
    Sub DropDown_ComboBox()    UserForm1.ComboBox2.DropDownEnd Sub
  6. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  7. Legge til en ComboBox -kontroll av brukerskjema.
  8. Egenskaper for ComboBox1, og Skriv inn Ark1! A1: A5 somRadkilde -egenskapen.
  9. Dobbeltklikk ComboBox -kontroll til openthe kode-vinduet for ComboBox -kontrollen.
  10. I kodevinduet for ComboBox -kontrollen, skriver du inn følgende kode for ComboBox-Klikk -hendelsen:
    Private Sub ComboBox1_Click()    Application.OnTime Now, "DropDown_ComboBox"End Sub
  11. Legge til en annen kombinasjonsboks kontroll av brukerskjema.
  12. Egenskaper for ComboBox2, og Skriv inn Ark1! A6:A10 somRadkilde -egenskapen.
  13. Klikk RunSub/UserFormRun -menyen.
Når du klikker et element i listen over ComboBox1 , vises automatisk i listen for ComboBox2 .

Hvis du vil ha mer informasjon om ComboBox-kontroll, klikker du artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:
161598 OFF: Hvordan legge til data i en kombinasjonsboks eller liste i Excel eller Word
211446 XL2000: TextColumn-egenskapen viser bare den første kolonnen
211899 XL2000: Problemer med konfigurasjonen kolonneoverskriftene i liste
213717 XL2000: Kjøretidsfeil ved hjelp av rullegardinlisten-metoden med en kombinasjonsboks
213718 XL2000: Hvordan du viser en ComboBox-liste når en UserForm vises
213721 XL2000: Hvordan du fjerner alle elementer fra en liste eller kombinasjonsboks
213722 XL2000: Hvordan du bruker egenskapen TextColumn
213752 XL2000: Ved hjelp av metoden AddItem forårsaker en feil når RowSource er databundne
213756 XL2000: Ved hjelp av metoden RemoveItem-metoden med liste eller kombinasjonsboks kontroll

Ramme

Bruk en ramme -kontroll til å gruppere logisk beslektede elementer i et brukerskjema. Ramme -kontroller brukes ofte til å gruppere OptionButton kontroller.

Gå gjennom alle kontroller i en ramme

Du bruker en For hver... Neste -løkke for å få tilgang til alle kontrollene i en ramme , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en ramme på brukerskjema.
  5. Legge til en alternativknapp kontroll rammen .

    Gjenta dette trinnet for å legge til to flere OptionButton kontroller i rammen .
  6. Dobbeltklikk ramme for å åpne vinduet for theCode for rammen .
  7. I Kode-vinduet skriver du inn følgende kode for Rammen Klikk -hendelsen:
    Private Sub Frame1_Click()    Dim Ctrl As Control        For Each Ctrl In Frame1.Controls        Ctrl.Enabled = Not Ctrl.Enabled    NextEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.
  9. I brukerskjema, klikker du rammen.
Første gang du klikker ramme, er alle kontrollene i rammen ikke tilgjengelige. Hvis du klikker rammen på nytt, er kontrollene tilgjengelige på nytt.

OptionButton kontroll

Du kan bruke grupper med kontroller av alternativknappene til å gjøre et valg mellom en gruppe med alternativer. Du kan bruke en av disse metodene til å gruppere OptionButton kontroller:
  • Ramme
  • GroupName -egenskapen
Obs! Verdien verdien Ja og den virkelige verdien indikerer at det er merket av for en alternativknapp . Verdien avNei -verdi og verdien False angir at det ikke er merket av for en alternativknapp .

Slik fastslår du OptionButton kontrollen som er valgt når OptionButton kontrollene er i en ramme

Når du grupperer alternativknapper kontroller ved hjelp av en ramme , kan du bestemme OptionButton kontrollen som er valgt som går gjennom alle kontroller i rammen og kontrollere Value -egenskapen for hver kontroll. Følg denne fremgangsmåten for å fastslå OptionButton kontrollen som er valgt:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en ramme på brukerskjema.
  5. Legge til en alternativknapp kontroll rammen .

    Gjenta dette trinnet for å legge til to flere OptionButton kontroller i rammen .
  6. Legg til en CommandButton -kontroll i UserForm utenfor rammen .
  7. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for brukerskjema.
  8. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()     For Each x In Frame1.Controls         If x.Value = True Then             MsgBox x.Caption         End If     Next End Sub
  9. Klikk RunSub/UserFormRun -menyen.
  10. Klikk én kontroll av alternativknappene i Brukerskjema, og klikk deretterCommandButton1.
Det vises en meldingsboks som inneholder teksten for den valgte kontrollen alternativknappene .

Slik fastslår du OptionButton kontrollen som er valgt

Formålet med eksemplet nedenfor er å avgjøre OptionButton kontrollen som er valgt i gruppe1. Hvis du vil opprette en UserForm med to grupper med kontroller av alternativknappene , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en ramme på brukerskjema.
  5. Legge til en alternativknapp kontroll i rammen .

    Gjenta dette trinnet for å legge til to flere OptionButton kontroller i rammen .
  6. For hver OptionButton kontroll, skriver du inn Gruppe1GroupName -egenskapen.
  7. Gjenta trinn 4 og 5 for å opprette en annen ramme som inneholder tre alternativknappene Kontroller .
  8. For hver OptionButton kontroll i den andre ramme kontrollen, skriver du inn Gruppe2GroupName -egenskapen.
  9. Legg til en CommandButton -kontroll i UserForm utenfor rammen kontrollene.
  10. Dobbeltklikk CommandButton -kontroll påvise kodevinduet for brukerskjema.
  11. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()     Dim x As Control          ' Loop through ALL the controls on the UserForm.     For Each x In Me.Controls         ' Check to see if "Option" is in the Name of each control.         If InStr(x.Name, "Option") Then             ' Check Group name.             If x.GroupName = "Group1" Then                 ' Check the status of the OptionButton.                 If x.Value = True Then                     MsgBox x.Caption                     Exit For                 End If             End If         End If     Next End Sub
  12. Klikk RunSub/UserFormRun -menyen.
  13. Klikk en alternativknapp kontroll i gruppe1 i brukerskjema, og klikk deretterCommandButton1.
Det vises en meldingsboks som inneholder teksten for OptionButton kontrollen som er valgt.

Hvis du vil ha mer informasjon om OptionButton kontroller, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213724 XL2000: Problemer med å bruke egenskapen TripleState for alternativknapp

Avmerkingsboks

Du kan bruke en avmerkingsboks for å angi en SANN eller USANN verdi. En avmerkingsboks som vises med en hake i den angir verdien True. En avmerkingsboks som vises med noen hake angir verdien False. Hvis verdien for egenskapen TripleState er Sann, vil en avmerkingsboks kan også ha en verdi på Null. Det vises en avmerkingsboks som har en verdi på Null skal være tilgjengelig.

Obs! Verdien verdien Ja og verdien Sann angir at det er merket av for en avmerkingsboks . Verdien avNei -verdi og verdien False angir at en avmerkingsboks er fjernet.

Slik kontrollerer du verdien for en avmerkingsboks

Bruke Value -egenskapen til å returnere den gjeldende verdien for en avmerkingsboks , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en avmerkingsboks i brukerskjema.
  5. Velg i listen egenskaper for CheckBox1SANN som egenskapen TripleState .
  6. Dobbeltklikk avmerkingsboksen kontroll påvise kodevinduet for avmerkingsboksen .
  7. I Kode-vinduet skriver du inn følgende kode for CheckBox1 endring -hendelse:
    Private Sub CheckBox1_Change()    Select Case CheckBox1.Value        Case True            CheckBox1.Caption = "True"        Case False            CheckBox1.Caption = "False"        Case Else            CheckBox1.Caption = "Null"    End SelectEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.
Når du klikker avmerkingsboksen, teksten i kontrollen endres for å gjenspeile den gjeldende verdien .

Veksleknappen

En veksleknappen har samme utseende som en CommandButton -kontroll før du klikker den. Når du klikker en veksleknappen , vises den som skal trykkes eller forskjøvet. Value -egenskapen til en veksleknappen er sant når knappen er avmerket og Usann når knappen ikke er valgt. Hvis verdien for egenskapen TripleState er til stede, kan en veksleknappen også ha en verdi på Null. En veksleknappen som har en verdi på Null ser ut til å være utilgjengelig.

Obs! Verdien verdien Ja og den virkelige verdien kan du angi at en veksleknappen er valgt. Verdien avNei -verdi og verdien False angir at det ikke er merket av for en veksleknappen .

Slik skaffer du deg verdien for en veksleknappen

Hvis du vil hente verdien til en veksleknappen , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en veksleknappen på brukerskjema .
  5. Legge til en etikett for brukerskjema.
  6. Dobbeltklikk ToggleButton kontroll toopen kodevinduet for veksleknappen .
  7. I Kode-vinduet skriver du inn følgende kode for ToggleButton1Click -hendelsen:
    Private Sub ToggleButton1_Click()    If ToggleButton1.Value = True Then        ' Set UserForm background to Red.        Me.BackColor = RGB(255, 0, 0)    Else        ' Set UserForm background to Blue.        Me.BackColor = RGB(0, 0, 255)    End IfEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.
Når du klikker veksleknappen bakgrunnsfargen UserForm endringene .

Slik oppretter du en gruppe utelukker ToggleButton-kontroller

Dette eksemplet bruker MouseUp -hendelsen til å angi en variabel, og kaller opp prosedyren med ExclusiveToggleButtons . Prosedyren ExclusiveToggleButtons angir veksleknappen som er valgt, og deretter avbryter den andre . Hvis du vil opprette en gruppe med gjensidig utelukkende ToggleButton -kontroller, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkmodulSett inn -menyen.
  4. Skriv inn følgende kode i kodevinduet for modulen:
    ' Variable that holds the name of the ToggleButton that was clicked.Public clicked As StringSub ExclusiveToggleButtons()   Dim toggle As Control   ' Loop through all the ToggleButtons on Frame1.   For Each toggle In UserForm1.Frame1.Controls       ' If Name of ToggleButton matches name of ToggleButton       ' that was clicked...       If toggle.Name = clicked Then          '...select the button.          toggle.Value = True       Else          '...otherwise clear the selection of the button.          toggle.Value = False       End If    NextEnd Sub
  5. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  6. Legge til en ramme på brukerskjema.
  7. Legge til en veksleknappen i rammen .

    Gjenta dette trinnet for å legge til to flere ToggleButton kontroller i rammen .
  8. Dobbeltklikk rammen til displaythe kode-vinduet for brukerskjema.
  9. I kodevinduet for modulen, skriver du inn følgende codefor ToggleButton MouseUp -hendelsen:
    Private Sub ToggleButton1_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)       clicked = ToggleButton1.Name       Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton2_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton2.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton3_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton3.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub
  10. Klikk RunSub/UserFormRun -menyen.
Når du klikker en veksleknappen , er tidligere valgte veksleknappen avbrutt.

TabStrip-kontroll

Bruk en TabStrip -kontroll til å vise ulike sett med informasjon for et sett med kontroller.

Slik styrer du en TabStrip kontroll ved hjelp av programmering

Hvis du vil endre BackColor -egenskapen for en bildekontroll som er basert på kategorien som er valgt , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikker deretter Visual Basic Editor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en TabStrip kontroll av brukerskjema.
  5. Legge til en bildekontroll som dekker base for kontrollen TabStrip , men som dekker ikke kategoriene.
  6. Skriv inn i ruten egenskaper for Image1H000000FF & & i egenskapen BackColor .
  7. Dobbeltklikk kontrollen TabStrip til openthe kode-vinduet for kontrollen TabStrip .
  8. I Kode-vinduet skriver du inn følgende kode for TabStrip1 endring -hendelse:
    Private Sub TabStrip1_Change()    Dim i As Integer    i = TabStrip1.SelectedItem.Index    Select Case i        Case 0            ' If Tab1 is selected, change the color of Image control to Red.            Image1.BackColor = RGB(255, 0, 0)        Case 1            ' If Tab2 is selected, change the color of Image control to Green.            Image1.BackColor = RGB(0, 255, 0)    End SelectEnd Sub
  9. Klikk RunSub/UserFormRun -menyen.
Fargen på bildet kontrollen endres avhengig av siden i TabStrip -kontroll som er aktiv.

Hvis du vil ha mer informasjon om TabStrip-kontrollen, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213254 XL2000: Hvordan du bruker TabStrip-kontroll i et brukerskjema.

Kontroll med flere sider

Bruk MultiPage -kontrollen til å arbeide med mye informasjon som kan sorteres i flere kategorier. MultiPage -kontrollen består av ett eller flere siden objekter som hver inneholder et annet sett med kontroller. Du kan angi den aktive siden programmatisk ved å angi egenskapen Value for MultiPage -kontrollen.

Slik styrer du en kontroll med flere sider ved hjelp av programmering

Hvis du vil legge til en MultiPage -kontrollen, og kontrollen ved hjelp av en makro, følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en MultiPage -kontrollen i brukerskjema.
  5. Legge til en etikettkontroll Side1 på MultiPage -kontrollen.
  6. Legge til en TextBox -kontroll Side1 på MultiPage -kontrollen.
  7. Klikk Page2MultiPage -kontrollen, og deretter gjentar du trinn 5and 6 for å legge til en etikett og en TextBox -kontroll.
  8. Dobbeltklikk MultiPage -kontrollen i Kode-vinduet for openthe for MultiPage -kontrollen.
  9. I Kode-vinduet skriver du inn følgende kode for MultiPage1 endring -hendelse:
    Private Sub MultiPage1_Change()    Select Case MultiPage1.Value        ' If activating Page1...        Case 0            Label1.Caption = TextBox2.Text            TextBox1.Text = ""        ' If activating Page2...        Case 1            Label2.Caption = TextBox1.Text            TextBox2.Text = ""    End SelectEnd Sub
  10. I Kode-vinduet skriver du inn følgende kode for UserForm Initialize -hendelsen:
    Private Sub UserForm_Initialize()    ' Force Page1 to be active when UserForm is displayed.    MultiPage1.Value = 0    Label1.Caption = ""End Sub
  11. Klikk RunSub/UserFormRun -menyen.

    Skriv inn i tekstboksen på Side1Test. Når youclick kategorien Page2TextBox2 er fjernet, og teksten for Label2 endres til posten som du har gjort i Tekstboks1 på Side1 ("Test").

Slik oppretter du en veiviser for grensesnitt ved hjelp av en kontroll med flere sider

Når en oppgave krever flere trinn trinnvis, kan et grensesnitt i veiviseren være svært effektive. Du kan bruke MultiPage -kontrollen til å opprette en veiviser for grensesnitt i stedet for å bruke flere modale brukerskjemaer. I dette eksemplet manipulerer MultiPage -kontrollen som er tre sider. En prosedyre som er knyttet til hendelsen initialisere UserForm deaktiverer Page2 og Page3, og tvinger Side1 av MultiPage -kontrollen skal være aktiv.

Obs! Når du indekserer sider med MultiPage -kontrollen ved hjelp av sider -samlingen, er den første siden i samlingen null-side. Denne prosedyren angir tittelen på CommandButton kontrollene og deaktiverer også den <> knappen.

Obs! Fremgangsmåten som er knyttet til hendelsen Klikk for CommandButton1 styrer funksjonene i den <> knappen. Fremgangsmåten som er knyttet til hendelsen Klikk for CommandButton2 styrer funksjonene i den Neste > knappen. Hvis du vil opprette en veiviser grensesnitt ved hjelp av en MultiPage -kontrollen, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en MultiPage -kontrollen i brukerskjema.
  5. Høyreklikk Side1 -kategorien, og klikk deretterNy side for å legge til Page3 i MultiPage -kontrollen.
  6. Legg til en CommandButton -kontroll i UserForm som ikke er i MultiPage -kontrollen.

    Gjenta dette trinnet for å legge til en andre CommandButton -kontroll i brukerskjema.
  7. Dobbeltklikk UserForm for å åpne Codewindow for brukerskjema.
  8. I Kode-vinduet skriver du inn følgende kode for UserForm Initialize -hendelsen:
    Private Sub UserForm_Initialize()    With MultiPage1        ' The next 2 lines disable Page2 & Page3.        .Pages(1).Enabled = False        .Pages(2).Enabled = False        ' Make Page1 the active page.        .Value = 0    End With        ' Set the caption on the CommandButtons.    CommandButton1.Caption = "<Back"    CommandButton1.Enabled = False    CommandButton2.Caption = "Next>"End Sub' Procedure for the "<Back" buttonPrivate Sub CommandButton1_Click()    Select Case MultiPage1.Value        Case 1                                 ' If Page2 is active...            With MultiPage1                .Pages(0).Enabled = True       ' Enable Page1.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(1).Enabled = False      ' Disable Page2.            End With            CommandButton1.Enabled = False     ' Disable Back button.                    Case 2                                 ' If Page3 is active...            With MultiPage1                .Pages(1).Enabled = True       ' Enable Page2.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(2).Enabled = False      ' Disable Page3.   CommandButton2.Caption = "Next>"            End With    End SelectEnd Sub' Procedure for the "Next>" buttonPrivate Sub CommandButton2_Click()    Select Case MultiPage1.Value        Case 0                                  ' If Page1 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(1).Enabled = True        ' Enable Page2.                .Pages(0).Enabled = False       ' Disable Page1.            End With            CommandButton1.Enabled = True       ' Enable Back button.                    Case 1                                  ' If Page2 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(2).Enabled = True        ' Enable Page3.                .Pages(1).Enabled = False       ' Disable Page2.            End With            CommandButton2.Caption = "Finish"   ' Change Next button to Finish.                    Case 2                                  ' If Page3 is active...            MsgBox "Finished!"                  ' User is Finished.            Unload Me                           ' Unload the UserForm.    End SelectEnd Sub
  9. Klikk RunSub/UserFormRun -menyen.
Når du klikker Neste >, aktiveres Page2 og <> -knappen blir tilgjengelig. Når du klikker Neste > en gang Page3 er aktivert, og tittelen på CommandButton2 endres til "Fullfør".

Rullefelt

Du kan bruke et rullefelt når du vil endre verdien som vises som en annen kontroll, for eksempel en etikettkontroll .

Slik endrer du en etikett som er basert på verdien til et rullefelt

Hvis du vil endre egenskapen Tittel for en etikett til den gjeldende innstillingen for egenskapen Value for et rullefelt , gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til et rullefelt i brukerskjema.
  5. Legge til en etikett for brukerskjema.
  6. Dobbeltklikk rullefeltet til openthe kode-vinduet for rullefeltet .
  7. I Kode-vinduet skriver du inn følgende kode for ScrollBar1 endring -hendelse:
    Private Sub ScrollBar1_Change()    Label1.Caption = ScrollBar1.ValueEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.
Når du ruller ved hjelp av rullefeltet , er Label1 oppdatert med den gjeldende verdien av rullefeltet .

SpinButton-kontroll

En SpinButton -kontroll, som rullefelt, brukes ofte til øker eller reduserer verdien for en annen kontroll, for eksempel en etikettkontroll . SmallChange -egenskapen bestemmer hvor mye verdien av en SpinButton -kontroll endres når den klikkes.

Slik legger du til en SpinButton-kontroll som øker eller reduserer en dato som er lagret i en TextBox-kontroll

Hvis du vil legge til en SpinButton -kontroll som øker eller reduserer en dato som er lagret i en TextBox -kontroll, gjør du følgende:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en SpinButton -kontroll av brukerskjema.
  5. Legge til en TextBox -kontroll av brukerskjema.
  6. Dobbeltklikk SpinButton kontroll toopen for SpinButton -kontrollen i Kode-vinduet.
  7. Skriv inn følgende kode for hendelsen SpinButton1 start rotasjon i Kode-vinduet:
    Private Sub SpinButton1_SpinUp()    TextBox1.Text = DateValue(TextBox1.Text) + 1End Sub
  8. I Kode-vinduet skriver du inn følgende kode for hendelsen SpinButton1 SpinDown :
    Private Sub SpinButton1_SpinDown()    TextBox1.Text = DateValue(TextBox1.Text) - 1End Sub
  9. I Kode-vinduet skriver du inn følgende kode for UserForm Initialize -hendelsen:
    Private Sub UserForm_Initialize()    TextBox1.Text = DateEnd Sub
  10. Klikk RunSub/UserFormRun -menyen.
Når UserForm vises, vises gjeldende dato i Tekstboks1. Når du klikker kontrollen SpinButton , er datoen sekvensielt eller hoppgrensen senkes med én dag.

I dette eksemplet, hvis du endrer egenskapen SmallChange for SpinButton1påvirker du ikke hvor mange dager du oppføringen i Tekstboks1 endres av når du klikker SpinButton1. Antall dager bestemmes bare av fremgangsmåten som du har knyttet til hendelsen Start rotasjon og hendelsen SpinDown for SpinButton1.

Hvis du vil ha mer informasjon om SpinButton-kontrollen, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213224 XL2000: Visual Basic-eksempel for å bruke en Roter-knapp med en dato

RefEdit-kontroll

RefEdit -kontrollen imiterer virkemåten til boksene referanse som er innebygd i Excel. Du kan bruke egenskapen Value få tak i gjeldende celleadressen som er lagret i en RefEdit -kontroll.

Hvordan du fyller et område med celler som er basert på området du merker med RefEdit-kontroll

Du bruker RefEdit -kontrollen til å fylle ut celler, følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en RefEdit -kontroll av brukerskjema.
  5. Legg til en CommandButton -kontroll i brukerskjema.
  6. Dobbeltklikk CommandButton -kontroll toopen kodevinduet for CommandButton -kontroll.
  7. I Kode-vinduet skriver du inn følgende kode for CommandButton1 Klikk -hendelsen:
    Private Sub CommandButton1_Click()    Dim MyRange As String    MyRange = RefEdit1.Value    Range(MyRange).Value = "test"    Unload MeEnd Sub
  8. Klikk RunSub/UserFormRun -menyen.

    UserFormappears.
  9. Klikk i RefEdit -kontrollen.

    Legg merke til at UserForm skjuler.
  10. Merk et celleområde for eksempel a1: a5, og klikk deretter thebutton i RefEdit -kontrollen til å utvide brukerskjema.
  11. Velg CommandButton1.
UserForm lukkes, og cellene du merket nå inneholder ordet "test".

Hvis du vil ha mer informasjon om RefEdit-kontrollen, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213776 XL2000: Hvordan du bruker RefEdit-kontroll med en UserForm

Bildekontroll

Formålet med bildekontrollen er å vise et bilde i et brukerskjema. Hvis du vil tilordne et bilde til en bildekontroll ved kjøretid, kan du bruke funksjonen LoadPicture .

Hvordan du legger et bilde i en bildekontroll

Hvis du vil sette inn en bildekontroll som ber deg om å velge et bilde som lastes inn når du klikker bildet , følger du denne fremgangsmåten:
  1. Start Excel, og deretter åpner du en ny, tom arbeidsbok.
  2. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  3. KlikkUserForm for å sette inn en UserForm i arbeidsboken på Sett inn -menyen.
  4. Legge til en bildekontroll på brukerskjema .
  5. Dobbeltklikk kontrollen for bilde for å åpne theCode-vinduet for bildekontrollen .
  6. I Kode-vinduet skriver du inn følgende kode for Image1 Klikk -hendelsen:
    Private Sub Image1_Click()    Dim fname As String        ' Display the Open dialog box.    fname = Application.GetOpenFilename(filefilter:= _            "Bitmap Files(*.bmp),*.bmp", Title:="Select Image To Open")        ' If you did not click Cancel...    If fname <> "False" Then        ' Load the bitmap into the Image control.        Image1.Picture = LoadPicture(fname)        ' Refresh the UserForm.        Me.Repaint    End IfEnd Sub
  7. Klikk RunSub/UserFormRun -menyen.

    UserForm vises.
  8. Klikk bildekontrollen .

    Whenyou Klikk bildekontrollen, Merker du bildet til å åpne dialogboksen boxappears, og velg en punktgrafikkfil for å sette inn i thecontrol.
Hvis du vil ha mer informasjon om kontrollen for bilde, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
213732 XL2000: Ved hjelp av funksjonen LoadPicture med en bildekontroll

Tilleggsinformasjon

Objektsøking

En fullstendig liste over alle egenskaper og metoder for en bestemt kommando er tilgjengelige i Objektsøking. Hvis du vil søke etter denne informasjonen i Excel, gjør du følgende:
  1. VelgmakroVerktøy -menyen, og klikk deretter Visual BasicEditor.
  2. Klikk ObjectBrowserVis -menyen.
  3. I Søketekst -boksen skriver du inn navnet på kontrollen du vil bruke, og klikk deretter Søk.
Hvis du vil ha mer informasjon om hvordan du bruker du Object Browser i Visual Basic-redigering, kan du klikke Hjelp for Microsoft Visual BasicHjelp -menyen, skriver inn Objektsøking i Office-hjelperen eller svarveiviseren, og klikker deretter Søk for å vise emnet.
Hvis du vil ha mer informasjon om hvordan du installerer hjelp for Microsoft Excel på datamaskinen, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
231946 OFF2000: Hvordan legge til/fjerne en enkelt Office-program eller en komponent

Advarsel: Denne artikkelen er autooversatt

Właściwości

Identyfikator artykułu: 829070 — ostatni przegląd: 09/23/2015 14:17:00 — zmiana: 1.0

Microsoft Office Excel 2003, Microsoft Excel 2010, Microsoft Office Excel 2007, Excel 2016, Microsoft Excel 2013

  • kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtno
Opinia