/ / Integrovaný uživatelský formát aplikace Excel VBA

Integrovaný uživatelský formát Excel VBA

Níže se podíváme na program v Excel VBA který vytvoří interaktivní uživatelský formulář. Uživatelský formulář, který vytvoříme, vypadá takto:

Integrovaný uživatelský formát Excel VBA

Vysvětlení: při každém zadání hodnoty do textového pole ID Excel VBA načte odpovídající záznam. Po klepnutí na tlačítko Upravit / přidat aplikace Excel VBA upraví záznam na listu nebo přidá záznam, pokud ID ještě neexistuje. Tlačítko Clear vymaže všechna textová pole. Tlačítko Zavřít zavře Userform.

Chcete-li vytvořit tento 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 štítky, textové schránky (nejprve v horní části, druhá pod první a podobně) a příkazová tlačítka. 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.

4. Můžete změnit názvy a popisy ovládacích prvků. Jména jsou používána v kódu VBA aplikace Excel. Titulky jsou ty, které se zobrazují na obrazovce. Je dobré změnit názvy ovládacích prvků, ale není to nutné, protože v tomto příkladu máme jen několik ovládacích prvků. Chcete-li změnit popis štítků, textových políček a příkazových tlačítek, klepněte na tlačítko Zobrazit, okno Vlastnosti a klepněte na jednotlivé ovládací prvky.

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

6. Otevřete editor jazyka.

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

8. Z rozevíracího seznamu vlevo zvolte položku Forma uživatele. V pravém rozevíracím seznamu vyberte příkaz Inicializovat.

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

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Vysvětlení: tento kódový řádek nastavuje zaostření na první textové pole, protože to je místo, kde chceme začít, když je načten formát Userform.

Nyní jsme vytvořili první část Userform. Ačkoli to vypadá dobře, nic se nestane, když zadáme hodnotu do textového pole ID nebo když klikneme na jedno z příkazových tlačítek.

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

11. V levé rozevírací nabídce zvolte TextBox1. V pravém rozevíracím seznamu vyberte možnost Změnit.

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

Private Sub TextBox1_Change()

GetData

End Sub

13. V aplikaci Project Explorer poklepejte na UserForm1.

14. Dvakrát klikněte na tlačítko Upravit / Přidat příkaz.

15. Přidejte následující řádek kódu:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Dvakrát klikněte na tlačítko Vymazat příkaz.

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

Private Sub CommandButton2_Click()

ClearForm

End Sub

Vysvětlení: tyto subsystémy volají další subs, které budeme vytvářet za sekundu.

18. Dvakrát klikněte na tlačítko Zavřít příkaz.

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

Private Sub CommandButton3_Click()

Unload Me

End Sub

Vysvětlení: tento kódový řádek zavře Userform.

Čas na vytvoření podkladů. Můžete se podívat na naši kapitolu Funkce a kapitola a dozvědět se více o subs. Pokud se ponáhlíte, jednoduše vložte do modulu následující subsystémy (V Editoru jazyka klepněte na Vložit, Modul).

20. Nejprve deklarujte tři proměnné typu Integer a jednu proměnnou typu Boolean. Deklarujte proměnné v sekci Obecné deklarace (v horní části modulu). Tímto způsobem stačí jen jednou deklarovat proměnné a můžete je použít ve více subs.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. Přidejte díl GetData.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

Vysvětlení: Pokud textové pole ID obsahuje číselnou hodnotu, Excel VBA vyhledá ID a načte odpovídající záznam. Kolekci ovládacích prvků používáme ke snadné smyčce textových polí. Pokud aplikace Excel VBA nemůže najít ID (příznak je stále nepravdivý), vyprázdní druhé a třetí textové pole. Pokud textové pole ID neobsahuje číselnou hodnotu, program Excel VBA vyvolá podklíč ClearForm.

22. Přidejte substrátu ClearForm.

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

Vysvětlení: Aplikace Excel VBA vymaže všechna textová pole.

23. Přidejte díl EditAdd.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

Vysvětlení: Pokud textové pole ID není prázdné, aplikace Excel VBA upravuje záznam na listu (opak načtení záznamu, jak jsme viděli dříve). Pokud aplikace Excel VBA nemůže najít ID (příznak je stále nepravdivý), přidá záznam do dalšího prázdného řádku. Proměnná emptyRow je první prázdný řádek a zvyšuje se při každém přidání záznamu.

24. Ukončete Editor jazyka, zadejte níže uvedené popisky do řádek 1 a zkontrolujte Formu uživatele.

Integrovaný uživatelský formát Excel VBA

Také si přečtěte: