Im Folgenden werden wir ein Programm in Excel VBA suchen, die ein interaktives Userform erstellt. Die Userform werden wir aussehen wie folgt erstellen:

Excel VBA Interactive Userform

Erläuterung: wenn Sie einen Wert in dem ID-Textfeld eingeben, lädt Excel VBA den entsprechenden Datensatz. Wenn Sie das Bearbeiten / Schaltfläche Hinzufügen klicken, redigiert Excel VBA den Datensatz auf dem Blatt oder den Datensatz hinzufügt, wenn die ID existiert noch nicht. Die Clear-Taste löscht alle Textfelder ein. Die Schaltfläche Schließen schließt das Benutzerformular.

Um diese Userform zu erstellen, führen Sie die folgenden Schritte.

  1. Öffnen Sie den Visual Basic-Editor. Wenn das 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 unten aufgebaut werden.

Userform Screen Setup in Excel VBA

  1. die Etiketten hinzufügen, Textfelder (zuerst die zweiten unter dem ersten, an der Spitze, und so weiter) und Befehlsschaltflächen. Sobald dies abgeschlossen ist, sollte das Ergebnis mit dem Bild von der Userform gezeigt früher konsistent sein. Erstellen Sie zum Beispiel ein Textfeld-Steuerelement von der Toolbox auf TextBox klicken. Als nächstes können Sie ein Textfeld auf der Userform ziehen.

  2. Sie können die Namen ändern und die Beschriftungen der Kontrollen. Die Namen werden in dem Excel-VBA-Code verwendet. Bildunterschriften sind diejenigen, die auf dem Bildschirm angezeigt. Es empfiehlt sich, die Namen der Kontrollen zu ändern, aber es ist hier nicht notwendig, da wir nur wenige Kontrollen in diesem Beispiel haben. Um die Beschriftung der Etiketten zu ändern, Textfelder und Befehlsschaltflächen, klicken Sie auf Ansicht, Eigenschaften-Fenster und klicken Sie auf jede Kontrolle.

  3. die Userform zu zeigen, eine Befehlsschaltfläche auf dem Arbeitsblatt platzieren und die folgende Codezeile hinzu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Wir werden jetzt die Sub UserForm_Initialize zu erstellen. Wenn Sie die Show-Methode für die Userform verwenden, wird diese Unter automatisch ausgeführt werden.

  1. Öffnen Sie den Visual Basic-Editor.

  2. Geben Sie in dem Projekt-Explorer direkt auf UserForm1 und klicken Sie dann auf Code anzeigen klicken.

Wählen Sie Userform aus der linken Dropdown-Liste 8.. Wählen Sie Initialisieren von der rechten Dropdown-Liste.

  1. Die folgende Codezeile hinzu:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Erläuterung: Diese Codezeile setzt den Fokus auf dem ersten Textfeld, wie das ist, wo wir beginnen sollen, wenn die Userform geladen wird.

Wir haben nun den ersten Teil der Userform erstellt. Obwohl es schon ordentlich aussieht, wird noch nichts passiert, wenn wir einen Wert in dem ID-Textfeld eingeben oder wenn wir eine der Befehlsschaltflächen klicken.

  1. In dem Projekt-Explorer direkt auf UserForm1 und klicken Sie dann auf Code anzeigen klicken.

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

  3. Fügen Sie den folgenden Code-Zeile:

Private Sub TextBox1_Change()

GetData

End Sub
  1. In dem Projekt-Explorer, klicken Sie doppelt auf UserForm1.

  2. Klicken Sie doppelt auf den Edit / Add Befehlsschaltflächen.

  3. Fügen Sie den folgenden Code-Zeile:

Private Sub CommandButton1_Click()

EditAdd

End Sub
  1. Klicken Sie doppelt auf die Schaltfläche Löschen.

  2. Fügen Sie den folgenden Code-Zeile:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Erläuterung: Diese U-Boote rufen andere U-Boote wir in einem zweiten erstellen werden.

  1. Klicken Sie doppelt auf den Befehl Schließen-Taste.

  2. Fügen Sie den folgenden Code-Zeile:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Erläuterung: Diese Codezeile schließt die Userform.

Zeit, um die U-Boote zu erstellen. Sie können unsere Funktion und Sub Kapitel gehen durch mehr über U-Boote zu lernen. Wenn Sie in Eile sind, legen Sie einfach die folgenden U-Boote in ein Modul (in dem Visual Basic-Editor auf Einfügen, Module).

  1. Zunächst deklarieren drei Variablen vom Typ Integer und eine Variable vom Typ Boolean. Deklarieren Sie die Variablen im Abschnitt Allgemeine Deklarationen (an der Oberseite des Moduls). Auf diese Weise müssen Sie nur die Variablen einmal erklären und Sie können sie in mehrere U-Boote verwenden.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean
  1. Fügen Sie die GetData Unter.

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 der ID-Textfeld einen numerischen Wert enthält, Excel VBA sucht die ID und lädt den entsprechenden Datensatz. Wir verwenden den Controls-Auflistung zu leicht Schleife durch Textfelder ein. Wenn Excel VBA nicht die ID finden (Flag ist immer noch falsch), leert er das zweite und drittes Textfeld ein. Wenn das ID-Textfeld enthält keinen numerischen Wert, ruft Excel VBA den ClearForm Unter.

  1. Fügen Sie den ClearForm Unter.

Sub ClearForm()

For j = 1 To 3

UserForm1.Controls("TextBox" & j).Value = ""

Next j

End Sub

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

  1. Fügen Sie den EditAdd Unter.

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, Excel VBA bearbeitet die Aufzeichnung auf dem Blatt (das Gegenteil von dem Laden einen Datensatz, wie wir oben gesehen haben).

Wenn Excel VBA nicht die ID finden (Flag ist noch False), fügt es den Datensatz in der nächsten leeren Zeile. Die Variable emptyRow ist die erste leere Zeile und steigt jedes Mal, wenn ein Datensatz hinzugefügt wird.

  1. Beenden Sie den Visual Basic-Editor, geben Sie die unten in Zeile angezeigt Etiketten 1 und die Userform testen.

Excel VBA Interactive Userform