/ / Excel VBA Userform

Excel VBA Userform

Přidejte ovládací prvky | Zobrazit formulář uživatele | Přiřaďte makra | Otestujte formulář User

Tato kapitola vás naučí, jak vytvořit Excel VBA Userform. Uživatelský formulář, který vytvoříme, vypadá takto:

Excel VBA Userform

Přidejte ovládací prvky

Chcete-li přidat ovládací prvky do Userform, proveďte následující kroky.

1. Otevřete editor jazyka. Pokud aplikace Project Explorer není viditelná, klepněte na tlačítko Zobrazit, Project Explorer.

2. Klepněte na tlačítko Vložit, Formát uživatele. Pokud se panel nástrojů nezobrazí automaticky, klikněte na tlačítko Zobrazit, panel nástrojů. Vaše obrazovka by měla být nastavena níže.

Uživatelské nastavení obrazovky v aplikaci Excel VBA

3. Přidejte ovládací prvky uvedené v následující tabulce. Jakmile je tento postup dokončen, výsledek by měl být v souladu s obrázkem výše uvedeného formuláře User. Například vytvořte ovládací prvek textového pole klepnutím na TextBox z panelu nástrojů. Dále můžete přetáhnout textové pole v formuláři Userform. Když dorazíte do rámu vozu, nezapomeňte nakreslit tento snímek před tím, než umístíte dvě tlačítka.

4. Změňte názvy a popisy ovládacích prvků podle následující tabulky. Jména jsou používána v kódu VBA aplikace Excel. Titulky jsou ty, které se zobrazují na obrazovce. Dobrou praxí je změnit názvy ovládacích prvků. To vám usnadní čtení vašeho kódu. Chcete-li změnit názvy a popisy ovládacích prvků, klepněte na tlačítko Zobrazit, okno Vlastnosti a klepněte na každý ovládací prvek.

Řízení název Titulek
Formát uživatele DinnerPlannerUserForm Plánovač večeře
Textové pole NameTextBox
Textové pole TelefonTextBox
List Box CityListBox
Kombinovaný rámeček DinnerComboBox
Zaškrtávací rámeček DateCheckBox1 13. června
Zaškrtávací rámeček DateCheckBox2 20. června
Zaškrtávací rámeček DateCheckBox3 27. června
Rám CarFrame Auto
Tlačítko možností CarOptionButton1 Ano
Tlačítko možností CarOptionButton2 Ne
Textové pole MoneyTextBox
Tlačítko Spin MoneySpinButton
Tlačítko příkazu OKButton OK
Tlačítko příkazu ClearButton Průhledná
Tlačítko příkazu CancelButton zrušení
7 Štítky Není třeba měnit Jméno :, Telefonní číslo :, atd.

Poznámka: seznam se seznamem je rozbalovací seznam, odkud může uživatel vybrat položku nebo vyplnit svou vlastní volbu. Lze vybrat pouze jedno z volitelných tlačítek.

Zobrazit formulář uživatele

Chcete-li zobrazit formulář Userform, umístěte příkazové tlačítko na pracovní list a přidejte následující řádek:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

Nyní vytvoříme Sub UserForm_Initialize. Pokud použijete metodu Show for Userform, bude automaticky provedena tato položka.

1. Otevřete editor jazyka.

2. V Průzkumníku projektu klepněte pravým tlačítkem na DinnerPlannerUserForm a potom klepněte na tlačítko Zobrazit kód.

3. Z rozevíracího seznamu vlevo vyberte položku Formát uživatele. V pravém rozevíracím seznamu vyberte příkaz Inicializovat.

4. Přidejte následující řádky kódů:

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

Vysvětlení: textové políčka jsou vyprázdněny, pole se seznamem a pole se seznamem jsou vyplněny, zaškrtávací políčka jsou nezaškrtnutá atd.

Přiřaďte makra

Nyní jsme vytvořili první část Userform. Ačkoli to vypadá úhledně, nic se nic nestane, když klikneme na příkazové tlačítko Userform.

1. Otevřete editor jazyka.

2. V aplikaci Průzkumník projektu poklepejte na položku DinnerPlannerUserForm.

3. Poklepejte na tlačítko Spinování peněz.

4. Přidejte následující kódový řádek:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Vysvětlení: tento řádek kódu aktualizuje textové pole, když používáte tlačítko rotace.

5. Poklepejte na tlačítko OK.

6. Přidejte následující řádky kódu:

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

Vysvětlení: nejprve aktivujeme list1. Dále určujeme emptyRow. Proměnná emptyRow je první prázdný řádek a zvyšuje se při každém přidání záznamu. Nakonec přeneseme informace z Userformu do konkrétních sloupců emptyRow.

7. Poklepejte na tlačítko Vymazat.

8. Přidejte následující řádek:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Vysvětlení: tento kódový řádek volá Sub UserForm_Initialize po kliknutí na tlačítko Vymazat.

9. Dvakrát klikněte na tlačítko Zrušit.

10. Přidejte následující kódový řádek:

Private Sub CancelButton_Click()

Unload Me

End Sub

Vysvětlení: tento kódový řádek zavře Userform po kliknutí na tlačítko Storno.

Otestujte formulář User

Ukončete editor jazyka Visual Basic, zadejte níže uvedené popisky do řádku 1 a otestujte Userform.

Výsledek:

Otestujte formulář User

Také si přečtěte: