Hur du använder Visual Basic for Applications (VBA) för att ändra användarformulär i Excel

Supporten för Office 2003 har upphört

Microsoft upphörde med supporten för Office 2003 den 8 april 2014. Denna ändring påverkar dina programuppdateringar och säkerhetsalternativ. Läs om vad detta innebär för dig och hur du behåller skyddet.

VIKTIGT: Denna artikel har översatts av Microsofts programvara för maskin-översättning och möjligen efterredigerats via CTF-teknologi av Microsofts community istället för av en professionell mänsklig översättare. För att du på ditt eget språk skall få tillgång till samtliga Knowledge Base-artiklar erbjuder Microsoft både mänskligt översatta såväl som maskinöversatta artiklar samt artiklar som efterredigerats av en community. En maskinöversatt artikel likväl som en artikel som blivit efterredigerad av en community är dock inte alltid helt perfekt, då de kan innehålla misstag i ordförrådet, syntax- och grammatikfel. Microsoft är inte ansvarigt för några felaktigheter, misstag eller skador orsakade av felöversättningar eller för våra kunders bruk av innehållet. Microsoft uppdaterar ofta sin programvara för maskinöversättning samt de verktyg som förbättrar den maskinöversatta efterredigeringen.

Den engelska versionen av artikeln är följande: 829070
Sammanfattning
Den här artikeln beskrivs hur du ändrar användarformulär programmässigt i Microsoft Excel. Den innehåller exempel och Microsoft Visual Basic for Applications (VBA)-makron som visar hur du drar nytta av funktionerna i användarformulär och hur du använder ActiveX ™-kontroller som är tillgängliga för användarformulär.

En introduktion till de grundläggande principerna för användarformulär beskrivs hur du visar användarformulär, hur du tillfälligt dölja användarformulär och så Stäng användarformulär. Dessutom visas hur du använder de vanligaste händelser som är associerade med användarformulär, den Initiera händelse, den Klicka på händelse, och Avsluta händelse. En eller flera av följande exempel visar hur du använder var och en av följande ActiveX ™-kontroller i en UserForm:
  • Etikett kontroll
  • Textruta kontroll
  • Kommandoknapp kontroll
  • Listruta kontroll
  • ComboBox kontroll
  • RAM kontroll
  • Alternativknapp kontroll
  • Kryssruta kontroll
  • Växlingsknapp kontroll
  • TabStrip kontroll
  • Flera sidor kontroll
  • Rullningslist kontroll
  • Rotationsknapp för kontroll
  • RefEdit kontroll
  • Bild kontroll
INTRODUKTION
Den här artikeln beskrivs hur du använder VBA för att göra ändringar i användarformulär i Excel.
Mer Information
Microsoft tillhandahåller programmeringsexempel endast utan garantier, varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till med att förklara funktionen hos en viss procedur, men kan inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.

Grunderna i UserForm

Så här visar du en UserForm

Syntaxen som används för att visa en UserForm programmässigt är följande:
UserFormName. Visa
Om du vill visa en UserForm som heter UserForm1, använder du följande kod:
UserForm1.Show
Du kan läsa in en UserForm i minnet utan att den faktiskt. Det kan ta en komplex UserForm flera sekunder visas. Eftersom du kan förinstallera en UserForm i minnet, kan du bestämma när att ådra sig denna belastning. Om du vill läsa in UserForm1 i minnet utan att visa det, använder du följande kod:
Load UserForm1
Om du vill visa UserForm, måste du använda metodenVisa som visades tidigare.

Hur du tillfälligt dölja en UserForm

Använd metodenDölj om du vill dölja en UserForm. Du kanske vill dölja en UserForm om programmet innebär att flytta mellan användarformulär. Om du vill dölja en UserForm, använder du följande kod:
UserForm1.Hide
För ytterligare information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213747 XL2000: Hur du flyttar mellan anpassade användarformulär med kommandoknappar

Ta bort en UserForm från minnet

Använd instruktionenTa bort om du vill ta bort en UserForm från minnet. Om du vill ta bort en UserForm som heter UserForm1, använder du följande kod:
Unload UserForm1
Om du tar bort en UserForm i en händelseprocedur som associeras med en UserForm eller som är kopplad till en kontroll i ett användarformulär (exempelvis kan du klicka på enCommandButton -kontroll), kan du använda "Jag" nyckelord i stället för namnet på UserForm. Om du vill använda "Jag" nyckelord du vill inaktivera en UserForm, använder du följande kod:
Unload Me

Hur du använder UserForm händelser

Många fördefinierade händelser som du kan bifoga VBA-procedurer till stöd för användarformulär. Proceduren som du har kopplat till händelsen körs när händelsen inträffar. En åtgärd som utförs av en användare kan starta flera händelser. Bland mest loggas ofta används för en UserForm händelsen initiera , klickar du på händelsen och händelsen Avsluta .

Obs! En Visual Basic-modul som innehåller en händelseprocedur kan betecknas som en modul "i UserForm bakom". En modul som innehåller händelseprocedurer syns inte i samlingen moduler i Microsoft Project Explorer-fönstret i Visual Basic Editor. Du måste dubbelklicka på texten i en UserForm visa UserForm kodmodul.

Hur svällning UserForm händelser

Gör så här om du vill svälla UserForm händelser:
  1. Skapa en ny arbetsbok i Excel.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Dubbelklicka på UserForm om du vill visa fönstret theCode för UserForm.
  5. Skriv följande kod 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. RunSub/UserFormKör -menyn.
När UserForm läses först använder händelsen initiera du ändrar egenskapen Rubrik i UserForm till "Händelser händelser händelser!" och egenskapen BackColor mörkblå makrot.

När du klickar på UserForm initiera klickar du på händelsen. Klicka på händelsen storlek på UserForm. Eftersom du har skapat en procedur för att Ändra storlek på händelsen får två meddelanderutor när du klickar på UserForm. Ändra storlek på händelsen inträffar två gånger eftersom ändringar i koden bakom händelsen klickar du på både egenskapen bredd och höjd tillhör UserForm.

Stänga UserForm startar QueryClose -händelsen. QueryClose visas en meddelanderuta som innehåller rubriken som du gav UserForm i koden för händelsen initiera . Du kan använda händelsen QueryClose när du vill utföra en viss uppsättning åtgärder om användaren stänger UserForm.

Händelsen Avsluta sedan genererar ett meddelande visas som anger att beskrivningen av UserForm är UserForm1. Avsluta -händelsen inträffar när en UserForm tas bort från minnet och beskrivningen av UserForm återgår till ursprungsläget.

Hur du förhindrar att en UserForm stängs med hjälp av knappen Stäng

När du kör en UserForm läggs en Stäng -knapp till övre högra hörnet av fönstret UserForm. Om du vill förhindra att UserForm stängs med hjälp av knappen Stäng måste du svälla händelsen QueryClose .

QueryClose -händelsen inträffar precis innan UserForm tas bort från minnet. Använd argumentet CloseMode av händelsen QueryClose för att avgöra hur UserForm är stängd. VbFormControlMenu -värdet för argumentet CloseMode anger att klickar på knappen Stäng . Värdet Trueargumentet Avbryt i händelsen QueryClose om du vill behålla UserForm aktiva. Om du vill använda QueryClose -händelse för att förhindra att en UserForm stängs med hjälp av knappen Stäng , så här:
  1. Skapa en ny arbetsbok i Excel.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en CommandButton -kontroll i användarformulär.
  5. Dubbelklicka på UserForm om du vill visa fönstret theCode för UserForm.
  6. Skriv följande kod i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
UserForm stängs inte när du klickar på knappen Stäng . Du måste klicka på CommandButton -kontroll om du vill stänga UserForm.

För ytterligare information klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
207714 XL2000: Körningsfel med användarformulär samling
211527 XL2000: Det går inte att dra UserForm kontroll till ett kalkylblad
211868 XL2000: Fel Kör makro som infogar kontrollen i UserForm
213582 XL2000: Problem när du använder makrot för att lägga till kontrollen i UserForm
213583 XL2000: Det går inte att visa användarformulär i andra projekt
213736 XL2000: Ta reda på-tangenten nedtryckt och musknappen
213744 XL2000: Hur du tillfälligt dölja en UserForm
213747 XL2000: Hur du flyttar mellan anpassade användarformulär med kommandoknappar
213749 XL2000: Hur du använder en UserForm för datainmatning
213768 XL2000: Hur du dynamiskt ändra storlek på ett användarformulär
213774 XL2000: Hur du skapar en startskärm med en UserForm

VBA-kod

Microsoft Excel innehåller 15 olika kontroller som du kan använda på användarformulär. Detta avsnitt innehåller olika exempel som använder kontrollerna programmässigt.

Obs! VBA-kod som ingår i den här artikeln innehåller exempel som påverkar alla egenskaper och händelser för kontrollerna. Du kan använda fönstret Egenskaper för att se en lista över de egenskaper som är tillgängliga för en kontroll om du behöver. Klicka på Egenskaperom du vill se en lista över egenskaper på Visa -menyn.

Hur du använder designläge för att redigera kontroller

När du använder Visual Basic Editor för att utforma en dialogruta kan använder du designläge. I designläge kan du redigera kontroller och du kan ändra egenskaperna för en kontroll i ett användarformulär i fönstret Egenskaper. Klicka på Egenskaperom du vill visa fönstret Egenskaper påVisa -menyn.

Obs! Kontroller svarar inte på händelser när du arbetar i designläge. När du kör en dialogruta för att visa den så att användarna ser det är programmet i körningsläge. Ändringar som du gör i egenskaperna för en kontroll i körningsläge bevaras inte när UserForm tas bort från minnet.

Obs! Kontroller svarar på händelser i körningsläge.

Hur du referera till kontroller i ett UserForm

Hur du referera till kontroller programmässigt beror på vilken typ av Visual Basic-modulblad där du kör koden. Om koden körs från en allmän modul är syntaxen följande:
UserFormName.Controlname.Property = Värde
Om du vill ange egenskapenText för en textrutekontroll som heter Textruta1 på ett användarformulär som kallas UserForm1 till värdet av Robert , använder du följande kod:
UserForm1.TextBox1.Text = "Bob"
Du behöver inte referera till namnet på UserForm om koden i en procedur som initieras av en händelse för en kontroll eller en UserForm. I stället använder du följande kod:
TextBox1.Text = "Bob"
Koden är kopplad till en händelser för objektet när du kopplar koden till ett objekt. I flera av exemplen i den här artikeln koppla kod till händelsenKlickaCommandButton -objektet.

Etikettkontroller

Etikettkontroller används huvudsakligen för att beskriva andra kontroller i ett användarformulär. En etikett kan inte redigeras av användaren när UserForm körs. Använd egenskapen Titel du vill ange eller returnera texten i en etikett . Andra vanliga egenskaper för formatering av en etikettkontroll inkluderar egenskaperna för teckensnitt och Textfärg .

Hur du använder en WITH-sats för att formatera en etikett

Om du vill använda WITH -sats för att ändra egenskaper för en etikett , så här:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en etikett i användarformulär.
  5. Lägga till en CommandButton -kontroll i användarformulär.
  6. Dubbelklicka på CommandButton kontroll toopen kodfönstret för UserForm.
  7. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
  9. Klicka på CommandButton.
Texten "Detta är etiketten exempel 1" visas på en etikett i fetstil Times New Roman med en teckenstorlek på 14 .

Textrutor

Textrutor används ofta för att samla in indata från användaren. Text -egenskapen innehåller den transaktion som görs i en textrutekontroll .

Hur du använder en textrutekontroll för att Validera lösenord

Om du ställer in egenskapen PasswordChar för en textrutekontroll blir en "maskerade redigera" kontroll. Varje tecken som skrivs in i kontrollen textruta är visuellt ersätts av det tecken som du anger. Så här använder du en textrutekontroll för att Validera lösenord:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en textrutekontroll i användarformulär.
  5. Klicka påEgenskaper om du vill visa fönstret Egenskaper på Visa -menyn.
  6. Ange i egenskapen PasswordChar för kontrollen textruta*.

    Obs! Du ändrar värdet till en asterisk.
  7. Lägga till en CommandButton -kontroll i användarformulär.
  8. Dubbelklicka på CommandButton kontroll toopen kodfönstret för UserForm.
  9. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
  11. Ange lösenord UserForm i kontrollen textruta .
  12. Klicka på CommandButton-kontroll.
För det här exemplet är lösenordet "userform". Om du anger ett felaktigt lösenord, får du ett meddelande visas om att lösenordet är felaktigt, kontrollen textruta är avmarkerad och bekräfta lösenordet. När du skriver in rätt lösenord, får du ett välkomstmeddelande och UserForm är stängd.

För ytterligare information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213555 XL2000: Ingen dataverifiering egenskap för UserForm TextBoxes

CommandButton-kontroller

Du kan använda en CommandButton -kontroll för att starta en VBA-procedur. VBA-procedur är normalt kopplad till händelsen Klicka påCommandButton -kontroll. Så här använder du en CommandButton -kontroll som en procedur ska köras när händelsen klickar du på :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en CommandButton -kontroll i användarformulär.
  5. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för UserForm.
  6. Skriv följande kod i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
Bakgrundsfärg i kontrollen CommandButton1 ändras varje gång som du klickar på den.

Ytterligare information om CommandButton-kontroll klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
213572 XL2000: Om du klickar på Avbryt kan inte ignorera UserForm
213743 XL2000: Hur du ställer in standardkommandoknappen i en UserForm

ListBox kontroller

Syftet med kontrollen listruta är att presentera en lista med objekt som kan väljas. Du kan lagra objektlista för en listruta i ett Excel-kalkylblad . Använd egenskapen Radkälla för att fylla en listruta med ett cellområde i ett kalkylblad . När du använder egenskapen FleraMarkeringar kan ställa du in en listruta accepterar flera val.

Hämta det markerade objektet från kontrollen listruta

Använd egenskapen värde för en listruta för att returnera det markerade objektet. Gör så här om du vill returnera det markerade objektet i en enda Välj listruta :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden som du vill touse att fylla en listruta .
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en listruta i användarformulär.
  6. Dubbelklicka på listrutan kontroll todisplay kodfönstret för kontrollen listruta .
  7. Skriv följande kod för ListBox1 Klicka på händelsen i kod-fönstret:
    Private Sub ListBox1_Click()    MsgBox ListBox1.ValueEnd Sub 
  8. RunSub/UserFormKör -menyn.
När du klickar på ett objekt i listan visas en meddelanderuta med det markerade objektet.

Hämta de markerade objekten i en flera väljer listruta

Om du vill se vilka poster som har markerats i en listruta med flera val måste gå igenom alla objekt i listan och fråga den markerade egenskapen. Gör så här om du vill returnera de valda objekten i en listruta med flera val:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden som du vill touse att fylla en listruta .
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en listruta i användarformulär.
  6. Klicka påEgenskaper om du vill se fönstret Egenskaper på Visa -menyn.
  7. Skriv värden för ListBox följande kontrollegenskaper anges:
       Property	   Value   -----------     -----------------------   MultiSelect	   1 - frmMultiSelectMulti   RowSource	   Sheet1!A1:A8
  8. Lägga till en CommandButton -kontroll i användarformulär.
  9. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för UserForm.
  10. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
  12. Markera ett eller flera objekt i listan.
  13. Klicka på CommandButton1.
När du klickar på CommandButton1visas alla objekt som du valt i listrutan kontrollen i en särskild meddelanderuta. När de valda posterna visas i en meddelanderuta, stängs UserForm automatiskt.

Hur du använder egenskapen Radkälla för att fylla en listruta med celler i ett kalkylblad

Om du vill använda egenskapen Radkälla för att fylla en listruta i ett cellområde i ett kalkylblad , så här:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden som du vill touse att fylla en listruta .
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en listruta i användarformulär.
  6. Lägga till en CommandButton -kontroll i användarformulär.
  7. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för UserForm.
  8. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    Private Sub CommandButton1_Click()    ListBox1.RowSource = "=Sheet1!A1:A5"End Sub 
  9. RunSub/UserFormKör -menyn.

    Obs! ListBox1 innehåller inte några värden.
  10. Klicka på CommandButton1.
ListBox1 fylls med värdena i cellerna a1: a5 på Blad1.

Hur att fylla en listruta med värdena i en matris

Exemplet visar hur du fyller i en listruta med en array-variabel . Du måste tilldela värdena från matrisen ListBox kontroll ett objekt i taget. Normalt är kräver denna process att du använder en slinga struktur, till exempel en för... Nästa loop. Gör så här om du vill fylla en listruta med en array-variabel :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en listruta i användarformulär.
  5. Modul om du vill infoga ett modulblad på Infoga -menyn.
  6. Skriv följande kod i kod-fönstret:
    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. Klicka påmakronVerktyg -menyn, klicka på PopulateListBoxoch klicka sedan påKör.
PopulateListBox procedur bygger en enkel matris och sedan lägger till objekt i arrayen kontrollen listruta med hjälp av metoden AddItem . Sedan visas UserForm.

Så Använd ett vågrätt cellintervall i ett kalkylblad för att fylla en listruta

Om du anger egenskapen Radkälla för en listruta i ett vågrätt cellintervall, visas bara det första värdet i kontrollen för listrutan .

Gör så här om du vill fylla en listruta från ett vågrätt cellintervall med hjälp av metoden AddItem :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I A1:E1 celler på Blad1, skriver du de värden som du vill touse ska fylla i en listruta .
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en listruta i användarformulär.
  6. Modul om du vill infoga ett modulblad på Infoga -menyn.
  7. Skriv följande kod i kod-fönstret:
    Sub PopulateListWithHorizontalRange()    For Each x In Sheet1.Range("A1:E1")        UserForm1.ListBox1.AddItem x.Value    Next        UserForm1.ShowEnd Sub
  8. Klicka påmakronVerktyg -menyn, klicka påPopulateListWithHorizontalRangeoch klicka sedan påKör.
Makro-proceduren loop genom celler A1:E5 på Blad1, lägga till värdena i ListBox1 en i taget.

Obs! ListBox1 är inte bunden till A1:E5 celler på Blad1.

Returnera flera värden från en listruta som är bunden till flera kolumner med data

Du kan formatera kontroller i listrutan om du vill visa mer än en kolumn med data. Detta innebär att kontrollen listruta visas fler än ett objekt på varje rad i listan. Om du vill returnera flera värden från det markerade objektet i listan, så här:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Skriv följande data i cellerna som är angivna onSheet1:

    A1: årB1: RegionC1: försäljning
    A2: 1996 B2: NordC2: 140
    A3: 1996B3: söderC3: 210
    A4: 1997B4: NordC4: 190
    A5: 1997B5: söderC5: 195
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en etikett i användarformulär.
  6. Lägga till en listruta i användarformulär.
  7. Högerklicka på listrutanoch klicka sedan påEgenskaper.
  8. Skriv eller markera de värden som anges för thefollowing egenskaper för listruta som visas i följande tabell:
       Property       Value   ----------------------------   BoundColumn     1   ColumnCount     3   ColumnHeads     True   RowSource       Sheet1!A2:A5
  9. Dubbelklicka på listrutan kontroll todisplay kodfönstret för kontrollen listruta .
  10. Skriv följande kod i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
När du klickar på en post i listrutan kontrollen ändrar etiketten om du vill visa alla tre objekt i posten.

Ta bort alla objekt från en listruta som är bunden till ett kalkylblad

Om du vill ta bort alla objekt från en listruta som är bunden till ett kalkylblad , avmarkerar du det värde som lagras i egenskapen Radkälla . Om du vill ta bort objekt från en listruta som är bunden till ett kalkylblad så här:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden som du vill touse att fylla en listruta .
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en listruta i användarformulär.
  6. Högerklicka på den listruta och och Egenskaper.
  7. Ange i egenskapen RadkällaBlad1! A1: A5.
  8. Lägga till en CommandButton -kontroll i användarformulär.
  9. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för CommandButton -kontroll.
  10. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    Private Sub CommandButton1_Click()    ListBox1.RowSource = ""End Sub
  11. RunSub/UserFormKör -menyn.

    Den listruta som du lagt till i UserFormfylls med värdena som du angett på Blad1.
  12. Klicka på CommandButton1.
Alla objekt tas bort från ListBox1.

Ta bort alla objekt från en listruta som inte är bunden till ett kalkylblad

Det finns ingen VBA-kommando som tar bort alla objekt från en listruta om listan inte är bunden till ett kalkylblad. Gör följande om du vill ta bort alla objekt från en listruta fylls från ett Visual Basic-matris :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en listruta i användarformulär.
  5. Modul om du vill infoga ett modulblad på Infoga -menyn.
  6. Skriv följande kod i kod-fönstret:
    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. Lägga till en CommandButton -kontroll i användarformulär.
  8. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för CommandButton -kontroll.
  9. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    Private Sub CommandButton1_Click()    For i = 1 To ListBox1.ListCount        ListBox1.RemoveItem 0    Next IEnd Sub
  10. Klicka påmakronVerktyg -menyn, klicka på PopulateListBoxoch klicka sedan påKör.

    Kontrollen listruta fylls i och sedan på UserForm visas.
  11. Klicka på CommandButton1.
Alla objekt tas bort från ListBox1.

Ytterligare information om ListBox kontrollen klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
161598 OFF: Hur du lägger till data till en kombinationsruta eller listruta i Excel eller Word
211446 XL2000: Egenskapen TextColumn visas endast den första kolumnen
211896 XL2000: Så här simulerar du kombination lista redigeringskontrollen för användarformulär
211899 XL2000: Problem med att kolumnrubrikerna i listruta
213721 XL2000: Hur du tar bort alla objekt i en listruta eller kombinationsruta
213722 XL2000: Hur du använder egenskapen TextColumn
213723 XL2000: Hur du returnera värden från en listruta som innehåller flera kolumner
213746 XL2000: Hur att fylla en listruta med flera intervall
213748 XL2000: Hur du fyller i en listruta som baseras på en annan listruta
213752 XL2000: Metoden AddItem orsakar ett fel när Radkälla är bundna till data
213756 XL2000: Med hjälp av metoden RemoveItem med ListBox- och ComboBox-kontroll
213759 XL2000: Ta reda på vilka objekt som har markerats i en listruta

ComboBox-kontrollerna

Du kan använda ComboBox -kontrollen som en nedrullningsbar listruta eller en kombinationsruta där du kan välja ett värde i en lista eller ange ett nytt värde. Egenskapen Format bestämmer om ComboBox -kontrollen fungerar som en nedrullningsbar listruta eller en kombinationsruta.

Obs! I exemplen ovan för kontrollen listruta kan också användas till ComboBox -kontroll, förutom i "How to obtain markerade objekt i en listruta med flera val" exempel.

Hur du lägger till ett nytt objekt i listan om ComboBox-kontrollen inte är bunden till ett kalkylblad

När du skriver ett värde som inte redan finns i listan i ComboBox -kontrollen kan du lägga till det nya värdet i listan. Så här lägger du till det nya värdet som du skrev i ComboBox -kontrollen om ComboBox -kontrollen inte är bunden till kalkylbladet:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en ComboBox -kontroll i användarformulär.
  5. Modul om du vill infoga ett modulblad på Infoga -menyn.
  6. Skriv följande kod i kod-fönstret:
    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. Lägga till en CommandButton -kontroll i användarformulär.
  8. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för CommandButton -kontroll.
  9. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. Klicka påmakronVerktyg -menyn, klicka på PopulateListBoxoch klicka sedan påKör.

    Fylls i ComboBox -kontrollen och sedan UserForm visas.
  11. Skriv i ComboBox -kontrollen Mango (eller något värde som inte redan finns i listan).
  12. Klicka på CommandButton1.
Det nya värdet som du skrev nu visas i slutet av listan.

Hur du lägger till ett nytt objekt i listan om ComboBox-kontrollen är bunden till ett kalkylblad

När en användare skriver ett värde som inte redan finns i listan i ComboBox -kontrollen, kanske du vill lägga till det nya värdet i listan. Så här lägger du till det nya värdet som du skrev i ComboBox -kontrollen till i listan:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden du vill använda touse att fylla i ComboBox -kontrollen.
  3. Markera cellerna a1: a5 på Blad1.
  4. Peka pånamnInfoga -menyn och klicka sedan på definiera.

    Skriv i rutandefinierade namnListRange , och klicka sedan på OK. Detta skapar det definierade namnet ListRange. Du kan använda namnet ListRange för att binda egenskapen Radkälla i ComboBox -kontrollen till kalkylbladet.
  5. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  6. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  7. Lägga till en ComboBox -kontroll i användarformulär.
  8. Skriv i Egenskaper för ComboBox1, Blad1! ListRange somRadkälla.
  9. Lägga till en CommandButton -kontroll i användarformulär.
  10. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för CommandButton -kontroll.
  11. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.

    UserForm visas på Blad1.
  13. Ange ett värde som inte redan finns i listan i ComboBox -kontrollen.
  14. Klicka på CommandButton1.
Den nya artikeln du skrev i ComboBox -kontrollen läggs till i listan och listan ComboBox -kontrollen är bunden till är expanderad så att cellerna a1: a6.

Så här visar du listan över en ComboBox-kontroll när UserForm visas

Ibland kan vara det praktiskt att visa listan över en ComboBox -kontroll när en UserForm visas först. I följande exempel används händelsen aktivering av UserForm. Gör så här om du vill visa listan över en ComboBox -kontroll:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a5 på Blad1, skriver du de värden du vill använda touse att fylla i ComboBox -kontrollen.
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  5. Lägga till en ComboBox -kontroll i användarformulär.
  6. Skriv i Egenskaper för ComboBox1, Blad1! A1: A5 somRadkälla.
  7. Dubbelklicka på UserForm om du vill visa fönstret theCode för UserForm.
  8. Skriv följande kod för händelsen Klickning CommandButton i kod-fönstret:
    Private Sub UserForm_Activate()           ComboBox1.DropDown       End Sub
  9. RunSub/UserFormKör -menyn.
UserForm visas på Blad1 och du kan visa listan för ComboBox1.

Så här visar du listan över en ComboBox-kontroll när du gör en markering i en annan kombinationsrutekontroll

Gör så här om du vill visa listan över en ComboBox -kontroll automatiskt när ett val görs i en annan kombinationsruta kontroll:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. I cellerna a1: a10 på Blad1, skriver du de värden du vill använda touse att fylla i ComboBox -kontrollen.
  3. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  4. Klicka påmodulInfoga -menyn.
  5. Skriv följande kod i kodfönstret för modulen:
    Sub DropDown_ComboBox()    UserForm1.ComboBox2.DropDownEnd Sub
  6. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  7. Lägga till en ComboBox -kontroll i användarformulär.
  8. Skriv i Egenskaper för ComboBox1, Blad1! A1: A5 somRadkälla.
  9. Dubbelklicka på ComboBox -kontrollen för att öppna kodfönstret för ComboBox -kontrollen.
  10. Skriv följande kod för ComboBox Click -händelse i kod-fönstret för ComboBox -kontrollen:
    Private Sub ComboBox1_Click()    Application.OnTime Now, "DropDown_ComboBox"End Sub
  11. Lägga till en andra ComboBox -kontroll i UserForm.
  12. Skriv i Egenskaper för ComboBox2, Blad1! A6:A10 somRadkälla.
  13. RunSub/UserFormKör -menyn.
När du klickar på ett objekt i listan ComboBox1 visas automatiskt i listan för ComboBox2 .

Ytterligare information om ComboBox-kontrollen klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
161598 OFF: Hur du lägger till data till en kombinationsruta eller listruta i Excel eller Word
211446 XL2000: Egenskapen TextColumn visas endast den första kolumnen
211899 XL2000: Problem med att kolumnrubrikerna i listruta
213717 XL2000: Fel under körning med metoden DropDown med en ComboBox
213718 XL2000: Hur du visar en ComboBox-lista när en UserForm visas
213721 XL2000: Hur du tar bort alla objekt i en listruta eller kombinationsruta
213722 XL2000: Hur du använder egenskapen TextColumn
213752 XL2000: Metoden AddItem orsakar ett fel när data Radkälla är bunden
213756 XL2000: Med hjälp av metoden RemoveItem med ListBox- och ComboBox-kontroll

Kontrollen ram

Använda en ram för att gruppera logiskt relaterade objekt i ett användarformulär. Ram -kontroller används ofta för att gruppera alternativknapp för kontroller.

Gå igenom alla kontroller i en ram

Att använda en för varje... Nästa slinga för att få tillgång till alla kontroller i en ram , gör du så här:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en ram i användarformulär.
  5. Lägga till en alternativknapp för kontroll i kontrollen ram .

    Upprepa detta steg om du vill lägga till två mer alternativknapp för kontroller i kontrollen ram .
  6. Dubbelklicka på kontrollen om du vill öppna theCode i fönstret för ramram .
  7. Skriv följande kod för Ram klickar du på händelsen i kod-fönstret:
    Private Sub Frame1_Click()    Dim Ctrl As Control        For Each Ctrl In Frame1.Controls        Ctrl.Enabled = Not Ctrl.Enabled    NextEnd Sub
  8. RunSub/UserFormKör -menyn.
  9. Klicka på kontrollen rami UserForm.
Första gången du klickar på kontrollen ram är alla kontroller i kontrollen ram inte tillgängliga. Om du klickar på kontrollen ram igen är kontrollerna tillgänglig igen.

Alternativknapp för kontroll

Du kan använda grupper av kontroller alternativknapp för att göra ett urval bland en grupp med alternativ. Du kan använda någon av följande metoder för att gruppera alternativknapp för kontroller:
  • Kontrollen ram
  • Egenskapen GroupName
Obs! Värdet värdet Ja och det sanna värdet kan du ange att en alternativknapp är markerad. Värdet av och No -värdet Falskt värde anger att en alternativknapp inte är markerad.

Ta reda på kontrollen alternativknapp som är markerad när alternativknapp för kontrollerna finns i en ram

När du grupperar flera alternativknappar kontroller med hjälp av en ram kan du bestämma kontrollen alternativknapp som är markerad som loopar genom alla kontroller i kontrollen ram och kontrollera egenskapen värde för varje kontroll. Så här avgör kontrollen alternativknapp som är markerad:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en ram i användarformulär.
  5. Lägga till en alternativknapp för kontroll i kontrollen ram .

    Upprepa detta steg om du vill lägga till två mer alternativknapp för kontroller i kontrollen ram .
  6. Lägg till en CommandButton -kontroll i UserForm utanför ramen .
  7. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för UserForm.
  8. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    Private Sub CommandButton1_Click()     For Each x In Frame1.Controls         If x.Value = True Then             MsgBox x.Caption         End If     Next End Sub
  9. RunSub/UserFormKör -menyn.
  10. Klicka på en alternativknapp för kontroll i UserFormoch klicka sedan påCommandButton1.
Ett meddelande visas som innehåller beskrivningen av den markerade kontrollen alternativknapp .

Ta reda på kontrollen alternativknapp som är markerad

I följande exempel syftar till att fastställa kontrollen alternativknapp som är markerad i Grupp1. Så här skapar du en UserForm som har två grupper av alternativknapp för kontroller:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en ram i användarformulär.
  5. Lägga till en alternativknapp för kontroll i kontrollen ram .

    Upprepa detta steg om du vill lägga till två mer alternativknapp för kontroller i kontrollen ram .
  6. För varje alternativknapp för kontroll, skriver du: Grupp1 i egenskapen GroupName .
  7. Upprepa steg 4 och 5 för att skapa en andra kontroll ram som innehåller tre alternativknapp för kontroller.
  8. För varje alternativknapp för kontroll i den andra ramen , skriver du: Grupp2 i egenskapen GroupName .
  9. Lägg till en CommandButton -kontroll i UserForm utanför ramen kontroller.
  10. Dubbelklicka på CommandButton kontroll todisplay kodfönstret för UserForm.
  11. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
  13. Klicka på en alternativknapp för kontroll i Grupp1 i UserForm, och klicka sedan påCommandButton1.
Ett meddelande visas som innehåller rubriken på kontrollen alternativknapp som är markerad.

Ytterligare information om alternativknapp för kontroller klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213724 XL2000: Problem med hjälp av egenskapen TreLägen för alternativknappar

Kryssruta

Du kan använda en kryssruta för att ange värdet true eller false. En kryssruta visas med en bock i anger värdet True. Kryssrutan som visas med en bockmarkering anger värdet False. Om värdet på egenskapen TreLägen föreliggerha en kryssrutekontroll också värdet Null. En CheckBox -kontroll som har värdet Null verkar vara otillgänglig.

Obs! Värdet värdet Ja och värdet True anger att en kryssruta är markerad. Värdet av och No -värdet Falskt värde anger att en kryssruta är avmarkerad.

Kontrollera värdet för en kryssruta

Så här använder du egenskapen värde för att returnera det aktuella värdet för en kryssruta :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en kryssruta i användarformulär.
  5. Välj i listan Egenskaper för CheckBox1SANT med egenskapen TreLägen .
  6. Dubbelklicka på kryssrutan kontroll todisplay kodfönstret för CheckBox -kontrollen.
  7. Skriv följande kod för händelsen CheckBox1 ändring i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
När du klickar på kryssruta beskrivning för CheckBox -kontrollen ändras så att de återspeglar det aktuella värdet .

Kontrollen växla

En växlingsknapp har samma utseende som en CommandButton -kontroll tills du klickar på den. När du klickar på en växlingsknapp kontroll visas det nedtryckta eller flyttas fram. Egenskapen värde för en växlingsknapp kontroll är Sant när knappen är markerad och Falskt när knappen inte är markerad. Om värdet på egenskapen TreLägen föreliggerkan en växlingsknapp kontroll också ha värdet Null. En växlingsknapp kontroll som har värdet Null verkar vara otillgänglig.

Obs! Värdet värdet Ja och det sanna värdet anger att en växlingsknapp kontroll är markerad. Värdet av och No -värdet Falskt värde anger att en växlingsknapp kontroll inte är markerad.

Hur du skaffar en växlingsknapp kontrolls värde

Gör så här om du vill hämta värdet för en växlingsknapp kontroll:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägg till en kontroll på UserForm ToggleButton .
  5. Lägga till en etikett i användarformulär.
  6. Dubbelklicka på ToggleButton kontroll toopen kodfönstret för kontrollen Växla .
  7. Skriv följande kod för händelsen ToggleButton1Click i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
När du klickar på kontrollen Växla bakgrundsfärgen UserForm ändringar.

Så här skapar du en grupp av exklusiva ToggleButton kontroller

I det här exemplet används händelsen musknapp upp för att ange en variabel och anropar proceduren ExclusiveToggleButtons . Förfarande för ExclusiveToggleButtons avgör kontrollen Växla är valda och avbryter andra. Gör följande om du vill skapa en grupp av exklusiva ToggleButton kontroller:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka påmodulInfoga -menyn.
  4. Skriv följande kod i kodfönstret för 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. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  6. Lägga till en ram i användarformulär.
  7. Lägga till en växlingsknapp kontroll i kontrollen ram .

    Upprepa detta steg om du vill lägga till två mer ToggleButton kontroller i kontrollen ram .
  8. Dubbelklicka på kontrollen ram till kodfönstret för displaythe för UserForm.
  9. Skriv följande codefor händelsen Musknapp upp växlingsknapp i kodfönstret för modulen:
    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. RunSub/UserFormKör -menyn.
När du klickar på en växlingsknapp kontroll avbryts tidigare valda kontrollen Växla .

TabStrip kontroll

Använd en TabStrip -kontroll för att visa olika typer av information för en uppsättning kontroller.

Hur du styr en TabStrip control programmässigt

Gör följande om du vill ändra egenskapen bakgrundsfärg för en bildkontroll som baseras på fliken är markerad :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual Basic Editor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en kontroll av TabStrip i användarformulär.
  5. Lägg till en bildkontroll som täcker base TabStrip kontroll , men som täcker inte flikarna.
  6. Skriv i rutan Egenskaper för Image1H000000FF & & i egenskapen BackColor .
  7. Dubbelklicka på kontrollen TabStrip att öppna kodfönstret för kontrollen TabStrip .
  8. Skriv följande kod för händelsen TabStrip1 ändring i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
Färgen på bilden kontrollen ändras beroende på sidan i TabStrip -kontrollen som är aktiv.

Ytterligare information om TabStrip-kontrollen klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213254 XL2000: Hur du använder TabStrip-kontroll i ett användarformulär

Flersidiga kontroll

Använda en motsvarande inbyggda kontroll för att arbeta med en stor mängd information som kan sorteras i flera kategorier. En motsvarande inbyggda kontroll består av en eller flera sidan objekt som var och en innehåller en annan uppsättning kontroller. Du kan ange den aktiva sidan programmässigt genom att ange egenskapen värdet i kontrollen över flera sidor .

Hur du styr en flersidig control programmässigt

Gör så här om du vill lägga till en kontroll av flera sidor och styra med hjälp av ett makro:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en motsvarande inbyggda kontroll i användarformulär.
  5. Lägga till en etikett till Sida1 på motsvarande inbyggda kontroll.
  6. Lägga till en textrutekontroll Sida1 på motsvarande inbyggda kontroll.
  7. Klicka på Page2motsvarande inbyggda kontroll och upprepa sedan steg 5and 6 för att lägga till en etikett och en textrutekontroll .
  8. Dubbelklicka på kontrollen Flersida för att öppna kodfönstret för motsvarande inbyggda kontroll.
  9. Skriv följande kod för händelsen MultiPage1 ändring i kod-fönstret:
    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. Skriv följande kod för händelsen Initiera UserForm i kod-fönstret:
    Private Sub UserForm_Initialize()    ' Force Page1 to be active when UserForm is displayed.    MultiPage1.Value = 0    Label1.Caption = ""End Sub
  11. RunSub/UserFormKör -menyn.

    Skriv i kontrollen textruta på Sida1 Test. När youclick fliken Page2TextBox2 rensas och beskrivningen av Label2 ändras till den post som du har gjort i Textruta1 på Sida1 ("Test").

Så här skapar du en guide med hjälp av en flersidig kontroll

När en aktivitet kräver flera enskilda steg, kan en guide vara mycket effektivt. Du kan använda motsvarande inbyggda kontroll för att skapa ett gränssnitt för guiden istället för att använda flera användarformulär. I det här exemplet ändrar en motsvarande inbyggda kontroll som har tre sidor. En procedur som är kopplad till händelsen initiera UserForm inaktiverar Page2 och Page3 och tvingar Sida1 av motsvarande inbyggda kontroll ska aktiveras.

Obs! När du indexerar sidorna i en kontroll med flera sidor genom att använda sidsamlingen är den första sidan i samlingen sida noll. Den här proceduren anger bildtexten CommandButton -kontroller och inaktiverar även den <> knappen.

Obs! Det förfarande som är kopplad till händelsen klickar du påCommandButton1 styr funktionerna i den <> knappen. Det förfarande som är kopplad till händelsen klickar du påCommandButton2 styr funktionerna i den Nästa > knappen. Gör följande om du vill skapa en guide med en motsvarande inbyggda kontroll:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en motsvarande inbyggda kontroll i användarformulär.
  5. Högerklicka på Sida1 -fliken och klicka sedan påNy sida om du vill lägga till Page3 till motsvarande inbyggda kontroll.
  6. Lägg till en CommandButton -kontroll i UserForm som inte är på motsvarande inbyggda kontroll.

    Upprepa detta steg om du vill lägga till en andra CommandButton -kontroll på UserForm.
  7. Dubbelklicka på UserForm öppna i Codewindow för UserForm.
  8. Skriv följande kod för händelsen Initiera UserForm i kod-fönstret:
    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. RunSub/UserFormKör -menyn.
När du klickar på Nästa >, Page2 är aktiverad och <> knappen blir tillgänglig. När du klickar på Nästa > en andra gång Page3 aktiveras och rubrik för CommandButton2 ändras till "Slut".

Rullningslist

Du kan använda en rullningslist när du vill ändra det värde som visas i en annan kontroll, till exempel en etikett .

Så här ändrar du en etikett som baseras på värdet för en rullningslist

Så här ändrar du egenskapen Rubrik i en etikett till den aktuella inställningen för egenskapen värde för en rullningslist :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en rullningslist i användarformulär.
  5. Lägga till en etikett i användarformulär.
  6. Dubbelklicka på kontrollen rullningslist till öppna kodfönstret för kontrollen rullningslist .
  7. Skriv följande kod för händelsen ScrollBar1 ändring i kod-fönstret:
    Private Sub ScrollBar1_Change()    Label1.Caption = ScrollBar1.ValueEnd Sub
  8. RunSub/UserFormKör -menyn.
När du rullar genom att använda kontrollen rullningslist uppdateras Label1 med det aktuella värdet för kontrollen rullningslist .

Rotationsknapp för kontroll

En Rotationsknapp för kontroll, som en rullningslist används ofta för att öka eller minska värdet för en annan kontroll, till exempel en etikett . SmallChange -egenskapen avgör hur mycket värdet på en Rotationsknapp för kontroll ändras när den trycks.

Hur du lägger till en rotationsknapp för kontroll som ökar eller minskar ett datum som är lagrad i en textrutekontroll

Så här lägger du till en Rotationsknapp för kontroll som ökar eller minskar ett datum som är lagrad i en textrutekontroll :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en Rotationsknapp för kontroll av UserForm.
  5. Lägga till en textrutekontroll i användarformulär.
  6. Dubbelklicka på Rotationsknapp för kontrollen toopen kodfönstret för Rotationsknapp för kontrollen.
  7. Skriv följande kod för händelsen SpinButton1 SpinUp i kod-fönstret:
    Private Sub SpinButton1_SpinUp()    TextBox1.Text = DateValue(TextBox1.Text) + 1End Sub
  8. Skriv följande kod för händelsen SpinButton1 SpinDown i kod-fönstret:
    Private Sub SpinButton1_SpinDown()    TextBox1.Text = DateValue(TextBox1.Text) - 1End Sub
  9. Skriv följande kod för händelsen Initiera UserForm i kod-fönstret:
    Private Sub UserForm_Initialize()    TextBox1.Text = DateEnd Sub
  10. RunSub/UserFormKör -menyn.
När UserForm visas visas det aktuella datumet i Textruta1. När du klickar på kontrollen Rotationsknapp för är datumet uppräknade och minskas med en dag.

I det här exemplet om du ändrar egenskapen SmallChange för SpinButton1påverkar du inte antalet dagar som transaktionen i Textruta1 ändras när du klickar på SpinButton1. Antalet dagar avgörs endast genom det förfarande som bifogas SpinUp händelsen och händelsen SpinDown av SpinButton1.

Ytterligare information om Rotationsknapp för kontrollen klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213224 XL2000: Visual Basic-exempel för att använda en rotationsknapp med ett datum

RefEdit-kontrollen

RefEdit -kontrollen imiterar beteendet rutorna referens som är inbyggda i Excel. Du kan använda egenskapen värde för att få aktuella celladressen som lagras i RefEdit -kontrollen.

Hur du fyller i ett cellområde baserat på det intervall som du väljer med hjälp av RefEdit-kontrollen

Så här använder du RefEdit -kontrollen för att fylla celler:
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägga till en RefEdit -kontrollen i användarformulär.
  5. Lägga till en CommandButton -kontroll i användarformulär.
  6. Dubbelklicka på CommandButton kontroll toopen kodfönstret för CommandButton -kontroll.
  7. Skriv följande kod för CommandButton1 Klicka på händelsen i kod-fönstret:
    Private Sub CommandButton1_Click()    Dim MyRange As String    MyRange = RefEdit1.Value    Range(MyRange).Value = "test"    Unload MeEnd Sub
  8. RunSub/UserFormKör -menyn.

    UserFormappears.
  9. Klicka på knappen i RefEdit -kontrollen.

    Observera att UserForm döljs.
  10. Markera ett cellområde som a1: a5 och klicka på thebutton i RefEdit -kontrollen för att expandera UserForm.
  11. Klicka på CommandButton1.
UserForm stängs och de celler som du har valt innehåller nu ordet "test".

Ytterligare information om RefEdit-kontrollen klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213776 XL2000: Hur du använder RefEdit-kontrollen med en UserForm

Bildkontroll

Bildkontrollen syftar till att visa en bild på ett användarformulär. Om du vill tilldela en bild i en bildkontroll vid körning, använder du funktionen LoadPicture .

Hur du läser in en bild i en bildkontroll

Gör så här om du vill infoga en bildkontroll som du uppmanas att välja en bild att ladda när du klickar på bild -kontroll :
  1. Starta Excel och öppna en ny tom arbetsbok.
  2. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  3. Klicka på Infoga -menynUserForm om du vill infoga en UserForm i arbetsboken.
  4. Lägg till en bildkontroll på en UserForm .
  5. Dubbelklicka på bildkontrollen så att theCode öppnas för bildkontrollen .
  6. Skriv följande kod för Image1 Klicka på händelsen i kod-fönstret:
    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. RunSub/UserFormKör -menyn.

    UserForm visas.
  8. Klicka på bildkontrollen .

    Whenyou Klicka på bildkontrollen, Markera bilden att öppna dialog-boxappears, och du kan välja en bitmappsfil för att infoga i thecontrol.
Ytterligare information om bild-kontroll klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
213732 XL2000: Med hjälp av funktionen LoadPicture med bild-kontroll

Ytterligare information

Objektgranskning

Det finns en fullständig lista över alla egenskaper och metoder för ett specifikt kommando i Objektgranskning. Gör följande om du vill söka efter denna information i Excel:
  1. Peka påmakroVerktyg -menyn och klicka sedan på Visual BasicEditor.
  2. Klicka på ObjectBrowserVisa -menyn.
  3. Skriv namnet på kontrollen som du vill använda i rutan Söktext och klicka på Sök.
Mer information om hur du använder Objektgranskning i Visual Basic Editor klickar du på Hjälp om Microsoft Visual BasicHjälp -menyn, Skriv Objektgranskning i Office-assistenten eller Svarsguiden och sedan klicka på Sök om du vill visa avsnittet.
Mer information om hur du installerar hjälp om Microsoft Excel på datorn klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
231946 OFF2000: Så här lägger du till eller ta bort ett enskilt Office-program eller en komponent

Varning: Den här artikeln har automatöversatts

Egenskaper

Artikel-id: 829070 – senaste granskning 09/23/2015 05:01:00 – revision: 1.0

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

  • kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtsv
Feedback