/ / Excel VBA Userform

Excel VBA Userform

Legg til kontrollene | Vis brukerformularen | Tilordne makroene | Test brukerformatet

Dette kapitlet lærer deg hvordan du lager en Excel VBA Userform. Brukerformen vi skal lage, ser ut som følger:

Excel VBA Userform

Legg til kontrollene

For å legge til kontrollene i brukerformatet, utfør følgende trinn.

1. Åpne Visual Basic Editor. Hvis Project Explorer ikke er synlig, klikker du på Vis, Project Explorer.

2. Klikk på Sett inn, Brukerform. Hvis Verktøykassen ikke vises automatisk, klikker du på Vis, Verktøykasse. Skjermen din bør settes opp som nedenfor.

Userform Screen Setup i Excel VBA

3. Legg til kontrollene som er oppført i tabellen nedenfor. Når dette er fullført, bør resultatet være i tråd med bildet av brukerformen som ble vist tidligere. For eksempel, opprett en tekstbokskontroll ved å klikke på Tekstboks fra Verktøykassen. Deretter kan du dra en tekstboks på brukerformularen. Når du kommer til bilrammen, husk å tegne denne rammen først før du plasserer de to valgknappene i den.

4. Endre navnene og bildeteksten til kontrollene i henhold til tabellen under. Navnene brukes i Excel VBA-koden. Undertekster er de som vises på skjermen. Det er god praksis å endre navnene på kontrollene. Dette vil gjøre koden enklere å lese. Hvis du vil endre navnene og bildeteksten til kontrollene, klikker du Vis, Egenskaper Vindu og klikker på hver kontroll.

Styre Navn bildetekst
Userform DinnerPlannerUserForm Middag Planner
Tekstboks NameTextBox
Tekstboks PhoneTextBox
Listeboks CityListBox
Combo Box DinnerComboBox
Merk av i boksen DateCheckBox1 13. juni
Merk av i boksen DateCheckBox2 20. juni
Merk av i boksen DateCheckBox3 27. juni
Ramme CarFrame Bil
Alternativknapp CarOptionButton1 Ja
Alternativknapp CarOptionButton2 Nei
Tekstboks MoneyTextBox
Spinnknapp MoneySpinButton
Kommandoknapp OK-knappen OK
Kommandoknapp ClearButton Klar
Kommandoknapp Avbryt- Avbryt
7 etiketter Du trenger ikke å endre Navn :, Telefonnummer :, etc.

Merk: En kombinationsboks er en rullegardinliste hvor en bruker kan velge et element eller fylle ut eget valg. Bare en av alternativknappene kan velges.

Vis brukerformularen

For å vise brukerformatet, legg en kommandoknapp på regnearket og legg til følgende kodelinje:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

Vi skal nå lage Sub UserForm_Initialize. Når du bruker Show-metoden for brukerformularen, blir denne delen automatisk utført.

1. Åpne Visual Basic Editor.

2. I Project Explorer, høyreklikk på DinnerPlannerUserForm og klikk deretter Vis kode.

3. Velg Brukerform fra rullegardinlisten til venstre. Velg Initialize fra den høyre rullegardinlisten.

4. Legg til følgende kodelinjer:

Private Sub UserForm_Initialize()

"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: tekstbokser tømmes, listebokser og kombinationsbokser er fylt, boksene er ikke merket, etc.

Tilordne makroene

Vi har nå opprettet den første delen av brukerformen. Selv om det ser pent ut, vil ingenting skje ennå når vi klikker på kommandoknappene i brukerformen.

1. Åpne Visual Basic Editor.

2. I Project Explorer dobbeltklikk på DinnerPlannerUserForm.

3. Dobbeltklikk på Money spin-knappen.

4. Legg til følgende kodelinje:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Forklaring: Denne kodelinjen oppdaterer tekstboksen når du bruker spinnknappen.

5. Dobbeltklikk på OK-knappen.

6. Legg til følgende kodelinjer:

Private Sub OKButton_Click()

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. Deretter bestemmer vi emptyRow. Varianten emptyRow er den første tomme raden og øker hver gang en plate legges til. Til slutt overfører vi informasjonen fra brukerformularen til de spesifikke kolonnene i emptyRow.

7. Dobbeltklikk på Tøm-knappen.

8. Legg til følgende kodelinje:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Forklaring: denne koden linje samtaler under UserForm_Initialize når du klikker på Fjern-knappen.

9. Dobbeltklikk på Avbryt-knappen.

10. Legg til følgende kodelinje:

Private Sub CancelButton_Click()

Unload Me

End Sub

Forklaring: Denne kodelinjen lukker Userform når du klikker på Avbryt-knappen.

Test brukerformatet

Gå ut av Visual Basic Editor, skriv inn etikettene som vises nedenfor i rad 1, og test brukerformatet.

Resultat:

Test brukerformatet

Les også: