Excel VBA Userform
Voeg de besturingselementen toe | Toon het gebruikersformulier | Wijs de macro's toe | Test het gebruikersformulier
Dit hoofdstuk leert je hoe je een Excel VBA Userform. Het Userform dat we gaan maken ziet er als volgt uit:
Voeg de besturingselementen toe
Voer de volgende stappen uit om de bedieningselementen aan het gebruikersformulier toe te voegen.
1. Open de Visual Basic-editor. Als de Projectverkenner niet zichtbaar is, klikt u op Beeld, Projectverkenner.
2. Klik op Invoegen, Gebruikersformulier. Als de Toolbox niet automatisch verschijnt, klikt u op Beeld, Werkset. Uw scherm moet worden ingesteld zoals hieronder.
3. Voeg de besturingselementen toe die worden vermeld in de onderstaande tabel. Zodra dit is voltooid, moet het resultaat consistent zijn met de afbeelding van het eerder weergegeven gebruikersformulier. U kunt bijvoorbeeld een tekstvakbesturingselement maken door in de werkset op Tekstvak te klikken. Vervolgens kunt u een tekstvak op het gebruikersformulier slepen. Wanneer u bij het Car-frame arriveert, moet u dit frame eerst tekenen voordat u de twee optieknoppen erin plaatst.
4. Wijzig de namen en bijschriften van de bedieningselementen volgens de onderstaande tabel. Namen worden gebruikt in de Excel VBA-code. Onderschriften zijn diegene die op je scherm verschijnen. Het is een goede gewoonte om de namen van de bedieningselementen te wijzigen. Hierdoor wordt uw code beter leesbaar. Als u de namen en bijschriften van de bedieningselementen wilt wijzigen, klikt u op Beeld, Venster Eigenschappen en klikt u op elk besturingselement.
Controle | Naam | Onderschrift |
---|---|---|
Userform | DinnerPlannerUserForm | Dinner Planner |
Tekstvak | NameTextBox | |
Tekstvak | PhoneTextBox | |
Keuzelijst | CityListBox | |
Keuzelijst met invoervak | DinnerComboBox | |
Selectievakje | DateCheckBox1 | 13 juni |
Selectievakje | DateCheckBox2 | 20 juni |
Selectievakje | DateCheckBox3 | 27 juni |
omlijsting | CarFrame | Auto |
Optieknop | CarOptionButton1 | Ja |
Optieknop | CarOptionButton2 | Nee |
Tekstvak | MoneyTextBox | |
Draai Knop | MoneySpinButton | |
Command knop | okButton | OK |
Command knop | ClearButton | Duidelijk |
Command knop | CancelButton | annuleren |
7 etiketten | Het is niet nodig om te veranderen | Naam :, Telefoonnummer :, etc. |
Opmerking: een keuzelijst met invoervak is een vervolgkeuzelijst van waaruit een gebruiker een item kan selecteren of zijn / haar eigen keuze kan invullen. Er kan slechts een van de optieknoppen worden geselecteerd.
Toon het gebruikersformulier
Om het gebruikersformulier weer te geven, plaatst u een opdrachtknop op uw werkblad en voegt u de volgende coderegel toe:
DinnerPlannerUserForm.Show
End Sub
We gaan nu de Sub UserForm_Initialize maken. Wanneer u de methode Show voor het Userform gebruikt, wordt deze sub automatisch uitgevoerd.
1. Open de Visual Basic-editor.
2. Klik in de Projectverkenner rechts op DinnerPlannerUserForm en klik vervolgens op Code bekijken.
3. Kies Userform in de vervolgkeuzelijst links. Kies Initialiseren in de vervolgkeuzelijst.
4. Voeg de volgende coderegels toe:
"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
Uitleg: tekstvakken worden leeggemaakt, keuzelijsten en keuzelijsten worden gevuld, selectievakjes zijn uitgeschakeld, enzovoort
Wijs de macro's toe
We hebben nu het eerste deel van het gebruikersformulier gemaakt. Hoewel het er al goed uitziet, zal er nog niets gebeuren als we op de opdrachtknoppen op het gebruikersformulier klikken.
1. Open de Visual Basic-editor.
2. Dubbelklik in de Projectverkenner op DinnerPlannerUserForm.
3. Dubbelklik op de knop Money spin.
4. Voeg de volgende coderegel toe:
MoneyTextBox.Text = MoneySpinButton.Value
End Sub
Uitleg: deze coderegel werkt het tekstvak bij wanneer u de draaiknop gebruikt.
5. Dubbelklik op de knop OK.
6. Voeg de volgende coderegels toe:
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
Uitleg: eerst activeren we Blad1. Vervolgens bepalen we emptyRow. De variabele emptyRow is de eerste lege rij en neemt toe telkens wanneer een record wordt toegevoegd. Ten slotte zetten we de informatie over van het gebruikersformulier naar de specifieke kolommen van emptyRow.
7. Dubbelklik op de knop Wissen.
8. Voeg de volgende coderegel toe:
Call UserForm_Initialize
End Sub
Uitleg: deze coderegel roept Sub UserForm_Initialize aan wanneer u op de knop Wissen klikt.
9. Dubbelklik op de knop Annuleren.
10. Voeg de volgende coderegel toe:
Unload Me
End Sub
Uitleg: deze coderegel sluit het gebruikersformulier af wanneer u op de knop Annuleren klikt.
Test het gebruikersformulier
Sluit de Visual Basic-editor, voer de onderstaande labels in rij 1 in en test het gebruikersformulier.
Resultaat: