Excel VBA Brugerformular
Tilføj kontrollerne | Vis brugerformularen | Tildel makroerne | Test brugerformularen
Dette kapitel lærer dig, hvordan du opretter en Excel VBA Brugerformular. Brugerformularen, vi skal oprette, ser ud som følger:
Tilføj kontrollerne
For at tilføje kontrollerne til brugerformularen, udfør følgende trin.
1. Åbn Visual Basic Editor. Hvis Project Explorer ikke er synlig, skal du klikke på Vis, Project Explorer.
2. Klik på Indsæt, Brugerformular. Hvis værktøjskassen ikke vises automatisk, skal du klikke på Vis, Værktøjskasse. Din skærm skal opsættes som nedenfor.
3. Tilføj de kontroller, der er angivet i nedenstående tabel. Når dette er gennemført, skal resultatet være i overensstemmelse med billedet af den tidligere viste brugerformular. For eksempel opret en tekstboks kontrol ved at klikke på TextBox fra Toolbox. Derefter kan du trække en tekstboks på Brugerformularen. Når du kommer til bilrammen, skal du huske at tegne denne ramme først, inden du placerer de to valgknapper i den.
4. Skift navnene og billedteksten af kontrollerne i henhold til nedenstående tabel. Navne bruges i Excel VBA-koden. Undertekster er dem, der vises på din skærm. Det er god praksis at ændre navnene på kontrollerne. Dette vil gøre din kode lettere at læse. Hvis du vil ændre navne og billedtekster for kontrollerne, skal du klikke på Vis, Egenskaber Vindue og klikke på hver kontrol.
Kontrollere | Navn | Billedtekst |
---|---|---|
UserForm | DinnerPlannerUserForm | Middag Planner |
Tekstboks | NameTextBox | |
Tekstboks | PhoneTextBox | |
Listeboks | CityListBox | |
Kombinationsfelt | DinnerComboBox | |
Afkrydsningsfelt | DateCheckBox1 | 13. juni |
Afkrydsningsfelt | DateCheckBox2 | 20. juni |
Afkrydsningsfelt | DateCheckBox3 | 27. juni |
Ramme | CarFrame | Bil |
Optionsknap | CarOptionButton1 | Ja |
Optionsknap | CarOptionButton2 | Ingen |
Tekstboks | MoneyTextBox | |
Spin Button | MoneySpinButton | |
Kommandoknap | knappen OK | Okay |
Kommandoknap | ClearButton | Klar |
Kommandoknap | CancelButton | Afbestille |
7 etiketter | Ingen grund til at ændre | Navn :, Telefonnummer :, osv. |
Bemærk: En kombinationsboks er en rullemenu fra, hvor en bruger kan vælge et emne eller udfylde sit eget valg. Kun en af valgknapperne kan vælges.
Vis brugerformularen
For at vise brugerformularen skal du placere en kommandoknap på dit regneark og tilføje følgende kodelinje:
DinnerPlannerUserForm.Show
End Sub
Vi skal nu oprette Sub UserForm_Initialize. Når du bruger visningsmetoden til brugerformularen, udføres denne under automatisk.
1. Åbn Visual Basic Editor.
2. I Project Explorer skal du højreklikke på DinnerPlannerUserForm og derefter klikke på Vis kode.
3. Vælg Brugerform fra den venstre rullemenu. Vælg Initialize fra den højre rulleliste.
4. Tilføj følgende kode linjer:
"Empty NameTextBox
NameTextBox.Value = ""
"Empty PhoneTextBox
PhoneTextBox.Value = ""
"Empty CityListBox
CityListBox.Clear
"Fill CityListBox
With CityListBox
.AddItem "San Francisco"
.AddItem "Oakland"
.AddItem "Richmond"
End With
"Empty DinnerComboBox
DinnerComboBox.Clear
"Fill DinnerComboBox
With DinnerComboBox
.AddItem "Italian"
.AddItem "Chinese"
.AddItem "Frites and Meat"
End With
"Uncheck DataCheckBoxes
DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False
"Set no car as default
CarOptionButton2.Value = True
"Empty MoneyTextBox
MoneyTextBox.Value = ""
"Set Focus on NameTextBox
NameTextBox.SetFocus
End Sub
Forklaring: tekstbokse tømmes, listebokser og kombinationsbokse er fyldt, afkrydsningsfelter er ikke markeret osv.
Tildel makroerne
Vi har nu oprettet den første del af brugerformularen. Selvom det ser pænt ud, sker der intet endnu, når vi klikker på kommandoknapperne på Brugerformularen.
1. Åbn Visual Basic Editor.
2. Dobbeltklik på DinnerPlannerUserForm i Project Explorer.
3. Dobbeltklik på Money spin-knappen.
4. Tilføj følgende kode linje:
MoneyTextBox.Text = MoneySpinButton.Value
End Sub
Forklaring: Denne kode linje opdaterer tekstfeltet, når du bruger spin-knappen.
5. Dobbeltklik på OK-knappen.
6. Tilføj følgende kode linjer:
Dim emptyRow As Long
"Make Sheet1 active
Sheet1.Activate
"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value
If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption
If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption
If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption
If CarOptionButton1.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
Cells(emptyRow, 7).Value = MoneyTextBox.Value
End Sub
Forklaring: Først aktiverer vi Sheet1. Dernæst bestemmer vi emptyRow. Variabel emptyRow er den første tomme række og øges hver gang en post tilføjes. Endelig overfører vi informationen fra brugerformularen til de specifikke kolonner af emptyRow.
7. Dobbeltklik på ryd knappen.
8. Tilføj følgende kode linje:
Call UserForm_Initialize
End Sub
Forklaring: Denne kode linje kalder Sub UserForm_Initialize, når du klikker på knappen Clear.
9. Dobbeltklik på knappen Annuller.
10. Tilføj følgende kode linje:
Unload Me
End Sub
Forklaring: Denne kode linje lukker brugerformularen, når du klikker på knappen Annuller.
Test brugerformularen
Afslut Visual Basic Editor, indtast etiketterne vist nedenfor i række 1 og test brugerformularen.
Resultat: