/ / "Excel VBA Userform"

Excel VBA Userform

Pridėti valdiklius | Rodyti vartotojo formą | Priskirkite makrokomandas | Išbandykite "Userform"

Šiame skyriuje mokoma, kaip kurti Excel VBA Userform. "Userform", kurį ketiname kurti, atrodo taip:

Excel VBA Userform

Pridėti valdiklius

Norėdami pridėti valdiklius į Userform, atlikite šiuos veiksmus.

1. Atidarykite "Visual Basic" redaktorių. Jei "Project Explorer" nematoma, spustelėkite "View", "Project Explorer".

2. Spustelėkite Insert, Userform. Jei įrankių dėžė automatiškai pasirodys, spustelėkite Rodyti, įrankių dėžutę. Jūsų ekranas turėtų būti nustatytas žemiau.

"Userform" ekrano sąranka "Excel VBA"

3. Pridėkite valdiklius, išvardytus toliau pateiktoje lentelėje. Kai tai bus baigta, rezultatas turėtų atitikti anksčiau pateiktą "Userform" paveikslėlį. Pavyzdžiui, sukurkite teksto laukelio valdiklį, spragtelėję "TextBox" iš įrankių juostos. Tada galite vilkti "Userform" teksto laukelį. Kai atvykstate prie automobilio rėmo, nepamirškite pirmiausia atkreipti šio rėmelio, prieš tai įdėkite du pasirinkimo mygtukus į jį.

4. Pakeiskite valdiklių pavadinimus ir antraštes pagal toliau pateiktą lentelę. Vardai naudojami "Excel VBA" kodu. Subtitrai yra tie, kurie rodomi ekrane. Gera praktika pakeisti kontrolės pavadinimus. Tai padės lengviau skaityti jūsų kodą. Jei norite keisti valdiklių pavadinimus ir antraštes, spustelėkite Peržiūrėti, ypatybių langą ir spustelėkite kiekvieną valdiklį.

Kontrolė vardas Parašas
Userform "DinnerPlannerUserForm" Vakarienių planavimo programa
Teksto laukelis NameTextBox
Teksto laukelis PhoneTextBox
Sąrašo langelis CityListBox
Combo Box DinnerComboBox
Žymimasis langelis DateCheckBox1 Birželio 13 d
Žymimasis langelis DateCheckBox2 Birželio 20 d
Žymimasis langelis DateCheckBox3 Birželio 27 d
Rėmas CarFrame Automobilis
Pasirinkimo mygtukas CarOptionButton1 Taip
Pasirinkimo mygtukas CarOptionButton2 Ne
Teksto laukelis MoneyTextBox
Nugaros mygtukas MoneySpinButton
Valdymo mygtukas OKButton Gerai
Valdymo mygtukas ClearButton Aiškus
Valdymo mygtukas "CancelButton" Atšaukti
7 etiketės Nereikia keisti Vardas :, telefono numeris :, ir tt

Pastaba: išskleidžiamasis sąrašas yra iš sąrašo, kuriame vartotojas gali pasirinkti elementą arba užpildyti savo pasirinkimą. Galima pasirinkti tik vieną iš pasirinkimo mygtukų.

Rodyti vartotojo formą

Norėdami parodyti "Userform", į savo darbalapį pridėkite komandų mygtuką ir pridėkite šią kodo eilutę:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

Dabar ketiname sukurti Sub UserForm_Initialize. Kai naudojate "Show" metodą "Userform", šis pogrupis automatiškai bus įvykdytas.

1. Atidarykite "Visual Basic" redaktorių.

2. "Project Explorer" dešiniuoju pelės klavišu spustelėkite "DinnerPlannerUserForm", tada spustelėkite "View Code".

3. Iš kairės išskleidžiamojo sąrašo pasirinkite Userform. Iš dešiniojo išskleidžiamojo sąrašo pasirinkite Inicijuoti.

4. Įtraukite šias kodo eilutes:

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

Paaiškinimas: teksto laukeliai ištuštinami, užpildytos sąrašo dėžutės ir sudėtinės laukeliai, pažymėti žymės langeliai ir tt

Priskirkite makrokomandas

Dabar sukūrėme pirmąją "Userform" dalį. Nors tai atrodo gerai tvarkoma, dar niekas nebus įvykdytas, kai spustelėsime Userform komandų mygtukus.

1. Atidarykite "Visual Basic" redaktorių.

2. "Project Explorer" dukart spustelėkite "DinnerPlannerUserForm".

3. Dukart spustelėkite pinigų sukimo mygtuką.

4. Įtraukite šią kodo eilutę:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Paaiškinimas: ši kodo eilutė atnaujina teksto lauką, kai naudojate nugaros mygtuką.

5. Dukart spustelėkite OK mygtuką.

6. Įtraukite šias kodo eilutes:

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

Paaiškinimas: pirmiausia aktyvuojame "Sheet1". Toliau mes nustatome emptyRow. Kintamasis emptyRow yra pirmasis tuščias eilutė ir padidėja kiekvieną kartą, kai įrašas pridedamas. Galiausiai mes perduoda informaciją iš Userform į konkrečius emptyRow stulpelius.

7. Dukart spustelėkite mygtuką Išvalyti.

8. Įrašykite šią kodo eilutę:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Paaiškinimas: kai paspausite mygtuką Išvalyti, ši kodinė eilutė vadina Sub UserForm_Initialize.

9. Dukart spustelėkite Cancel mygtuką.

10. Įrašykite šią kodo eilutę:

Private Sub CancelButton_Click()

Unload Me

End Sub

Paaiškinimas: naudojant šią kodo eilutę, paspaudus mygtuką Atšaukti, uždaro Userform.

Išbandykite "Userform"

Išeikite iš "Visual Basic" redaktoriaus, įveskite žemiau pateiktas etiketes į 1 eilutę ir išbandykite "Userform".

Rezultatas:

Išbandykite "Userform"

Taip pat perskaitykite: