/ / Excel VBA Interaktive Benutzerform

Excel VBA Interaktive Benutzerform

Unten sehen wir uns ein Programm in Excel VBA das schafft ein interaktive Benutzerform. Die Benutzerform, die wir erstellen werden, sieht folgendermaßen aus:

Excel VBA Interaktive Benutzerform

Erläuterung: Wenn Sie einen Wert in das Textfeld ID eingeben, lädt Excel VBA den entsprechenden Datensatz. Wenn Sie auf die Schaltfläche Bearbeiten / Hinzufügen klicken, bearbeitet Excel VBA den Datensatz auf dem Blatt oder fügt den Datensatz hinzu, wenn die ID noch nicht vorhanden ist. Die Schaltfläche Löschen löscht alle Textfelder. Die Schaltfläche Schließen schließt die Benutzerform.

Führen Sie die folgenden Schritte aus, um dieses Benutzerformular zu erstellen.

1. Öffnen Sie den Visual Basic-Editor. Wenn der Projekt-Explorer nicht sichtbar ist, klicken Sie auf Ansicht, Projekt-Explorer.

2. Klicken Sie auf Einfügen, Benutzerformular. Wenn die Toolbox nicht automatisch angezeigt wird, klicken Sie auf Ansicht, Toolbox. Ihr Bildschirm sollte wie folgt eingerichtet sein.

Benutzerbildschirm Setup in Excel VBA

3. Fügen Sie die Beschriftungen, die Textfelder (zuerst oben, die zweite unter dem ersten usw.) und die Befehlsschaltflächen hinzu. Sobald dies abgeschlossen ist, sollte das Ergebnis mit dem zuvor gezeigten Bild des Benutzerformulars übereinstimmen. Erstellen Sie beispielsweise ein Textfeldsteuerelement, indem Sie in der Toolbox auf TextBox klicken. Als Nächstes können Sie ein Textfeld auf dem Benutzerformular ziehen.

4. Sie können die Namen und die Beschriftungen der Steuerelemente ändern. Namen werden im Excel-VBA-Code verwendet. Untertitel sind diejenigen, die auf Ihrem Bildschirm erscheinen. Es empfiehlt sich, die Namen der Steuerelemente zu ändern. Dies ist jedoch nicht erforderlich, da in diesem Beispiel nur wenige Steuerelemente vorhanden sind. Um die Beschriftung der Beschriftungen, Textfelder und Befehlsschaltflächen zu ändern, klicken Sie auf Ansicht, Eigenschaftenfenster, und klicken Sie auf jedes Steuerelement.

5. Um das Benutzerformular anzuzeigen, platzieren Sie eine Befehlsschaltfläche in Ihrem Arbeitsblatt und fügen Sie die folgende Codezeile hinzu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Wir werden jetzt die Sub UserForm_Initialize erstellen. Wenn Sie die Show-Methode für das Benutzerformular verwenden, wird dieses Sub-Objekt automatisch ausgeführt.

6. Öffnen Sie den Visual Basic-Editor.

7. Klicken Sie im Projektexplorer mit der rechten Maustaste auf UserForm1, und klicken Sie dann auf Code anzeigen.

8. Wählen Sie Benutzerform in der linken Dropdown-Liste. Wählen Sie Initialisieren aus der rechten Dropdown-Liste.

9. Fügen Sie die folgende Codezeile hinzu:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Erläuterung: In dieser Codezeile wird der Fokus auf das erste Textfeld gesetzt, da dies beim Starten des Benutzerformulars gestartet werden soll.

Wir haben jetzt den ersten Teil des Benutzerformulars erstellt. Obwohl es bereits ordentlich aussieht, wird nichts passieren, wenn wir einen Wert in das Textfeld ID eingeben oder auf eine der Befehlsschaltflächen klicken.

10. Klicken Sie im Projektexplorer mit der rechten Maustaste auf UserForm1, und klicken Sie dann auf Code anzeigen.

11. Wählen Sie TextBox1 aus der linken Dropdown-Liste. Wählen Sie Ändern aus der rechten Dropdown-Liste.

12. Fügen Sie die folgende Codezeile hinzu:

Private Sub TextBox1_Change()

GetData

End Sub

13. Doppelklicken Sie im Projektexplorer auf UserForm1.

14. Doppelklicken Sie auf die Schaltfläche Bearbeiten / Hinzufügen.

15. Fügen Sie die folgende Codezeile hinzu:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Doppelklicken Sie auf die Befehlsschaltfläche Löschen.

17. Fügen Sie die folgende Codezeile hinzu:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Erklärung: Diese Subs rufen andere Subs auf, die wir in einer Sekunde erstellen werden.

18. Doppelklicken Sie auf die Schaltfläche Schließen.

19. Fügen Sie die folgende Codezeile hinzu:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Erläuterung: Diese Codezeile schließt das Benutzerformular.

Zeit, um die Subs zu erstellen. Sie können unser Kapitel Funktion und Unter durchgehen, um mehr über Subs zu erfahren. Wenn Sie es eilig haben, legen Sie einfach die folgenden Subs in ein Modul (Klicken Sie im Visual Basic-Editor auf Einfügen, Modul).

20. Deklarieren Sie zuerst drei Variablen vom Typ Integer und eine Variable vom Typ Boolean. Deklarieren Sie die Variablen im Abschnitt Allgemeine Deklarationen (oben im Modul). Auf diese Weise müssen Sie die Variablen nur einmal deklarieren und sie in mehreren Subs verwenden.

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

21. Fügen Sie den GetData-Sub hinzu.

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

Erläuterung: Wenn das ID-Textfeld einen numerischen Wert enthält, sucht Excel VBA nach der ID und lädt den entsprechenden Datensatz. Wir verwenden die Controls Collection, um Textboxen einfach zu durchlaufen. Wenn Excel VBA die ID nicht finden kann (Flag ist immer noch False), leert es das zweite und dritte Textfeld. Wenn das ID-Textfeld keinen numerischen Wert enthält, ruft Excel VBA den ClearForm-Sub auf.

22. Fügen Sie den ClearForm-Sub hinzu.

Sub ClearForm()

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

End Sub

Erläuterung: Excel VBA löscht alle Textfelder.

23. Fügen Sie die EditAdd-Untergruppe hinzu.

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

Erläuterung: Wenn das ID-Textfeld nicht leer ist, bearbeitet Excel VBA den Datensatz auf dem Blatt (das Gegenteil von dem Laden eines Datensatzes, wie wir zuvor gesehen haben). Wenn Excel VBA die ID nicht finden kann (Flag ist immer noch False), wird der Datensatz zur nächsten leeren Zeile hinzugefügt. Die Variable emptyRow ist die erste leere Zeile und erhöht sich jedes Mal, wenn ein Datensatz hinzugefügt wird.

24. Beenden Sie den Visual Basic-Editor, geben Sie die folgenden Beschriftungen in Zeile 1 ein, und testen Sie das Benutzerformular.

Excel VBA Interaktive Benutzerform

Lesen Sie auch: