Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit Userform Tabelle füllen

Mit Userform Tabelle füllen
25.02.2017 15:30:04
Simon
Hallo.
Ich stehe vor einem Problem (fast keine VBA-Kenntnisse).
Ich möchte gerne mit einer Userform eine Tabelle füllen. Es soll immer die letzte freie Zeile angesprochen werden.
TextBox1 soll Spalte A füllen, ComboBox1 soll Spalte B füllen, TextBox2 soll Spalte C füllen und ComboBox2 soll Spalte D füllen. Also je als eine Zeile.
Könnte mir eventuell jemand den Code dafür zeigen?
Viele Grüße, Simon
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Userform Tabelle füllen
25.02.2017 15:46:24
Werner
Hallo Simon,
Schaltfläche auf deine Userform und dieser folgenden Code zuweisen:
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.TextBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 2).Value = Me.ComboBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 3).Value = Me.TextBox2.Value
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.ComboBox2.Value
End Sub
Das Tabellenblatt musst du an deine Bedürfnisse anpassen.
Gruß Werner
Anzeige
AW: Mit Userform Tabelle füllen
25.02.2017 15:52:55
Peter
Hallo Simon,
diese kleine Korrektur (+ 1) bitte einfügen.
Gruß Peter
lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

AW: Mit Userform Tabelle füllen
25.02.2017 15:50:45
Peter
Hallo Simon,
das sollte so funktionieren
Option Explicit
Private Sub CommandButton1_Click()
Dim lFreie  As Long
If TextBox1.Value = "" Then
MsgBox "Sie müssen bitte die Textbox1 füllen - danke.", _
48, "Hinweis für " & Application.UserName
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox "Sie müssen bitte die Combobox1 füllen - danke.", _
48, "Hinweis für " & Application.UserName
ComboBox1.SetFocus
Exit Sub
End If
If TextBox2.Value = "" Then
MsgBox "Sie müssen bitte die Textbox2 füllen - danke.", _
48, "Hinweis für " & Application.UserName
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
If ComboBox2.Value = "" Then
MsgBox "Sie müssen bitte die Combobox2 füllen - danke.", _
48, "Hinweis für " & Application.UserName
ComboBox2.SetFocus
Exit Sub
End If
'    die Boxes sind gefüllt, es kann übertragen werden
With ThisWorkbook.Worksheet("Tabelle1") ' den Tabellenblattnamen ggf anpassen!!!
lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A" & lFreie).Value = TextBox1.Value
.Range("B" & lFreie).Value = ComboBox1.Value
.Range("C" & lFreie).Value = TextBox2.Value
.Range("D" & lFreie).Value = ComboBox2.Value
End With
End Sub
Es wird davon ausgegangen, dass die Ausgabe in Tabelle1 erfolgt - sonst musst du es anpassen
Dass alle Boxes gefüllt sein müssen - sonst musst du die Verprobung rauslöschen.
Gruß Peter
Anzeige
AW: Mit Userform Tabelle füllen
25.02.2017 15:59:35
Peter
Hallo Simon,
das kommt davon, wenn man schnell sein will - es gibt ein fehlendes s
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf anpassen!!!
lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Gruß Peter
AW: Mit Userform Tabelle füllen
25.02.2017 16:22:15
Simon
Hallo.
Erstmal danke für die schnellen Antworten!
Also die erste Lösung
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.TextBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 2).Value = Me.ComboBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 3).Value = Me.TextBox2.Value
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.ComboBox2.Value
End Sub
gefällt mir als Laie natürlich etwas besser, da es sehr übersichtlich ist.
Ich habe lediglich noch nicht verstanden, wo genau ich diese Korrektur
lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
hinschreiben soll. Und was diese bringt...
Was wäre denn der Unterschied, wenn ich die Variante von Peter nehmen würde?
Anzeige
AW: Mit Userform Tabelle füllen
25.02.2017 17:47:21
Simon
Hallo.
Erstmal danke für die schnellen Antworten!
Also die erste Lösung
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.TextBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 2).Value = Me.ComboBox1.Value
Sheets("Tabelle1").Cells(loLetzte, 3).Value = Me.TextBox2.Value
Sheets("Tabelle1").Cells(loLetzte, 1).Value = Me.ComboBox2.Value
End Sub
gefällt mir als Laie natürlich etwas besser, da es sehr übersichtlich ist.
Ich habe lediglich noch nicht verstanden, wo genau ich diese Korrektur
lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
hinschreiben soll. Und was diese bringt...
Was wäre denn der Unterschied, wenn ich die Variante von Peter nehmen würde?
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mit Userform eine Tabelle füllen


Schritt-für-Schritt-Anleitung

Um mit einer Userform eine Tabelle in Excel zu füllen, folge diesen Schritten:

  1. Erstelle eine Userform in deinem VBA-Editor.
  2. Füge die erforderlichen Steuerelemente hinzu:
    • 2 TextBoxen (TextBox1 und TextBox2)
    • 2 ComboBoxen (ComboBox1 und ComboBox2)
    • 1 CommandButton (CommandButton1)
  3. Füge den folgenden VBA-Code in das Code-Fenster für die Userform ein:
Option Explicit
Private Sub CommandButton1_Click()
    Dim lFreie As Long
    ' Überprüfen, ob alle Felder ausgefüllt sind
    If TextBox1.Value = "" Then
        MsgBox "Sie müssen bitte die Textbox1 füllen - danke.", _
        48, "Hinweis für " & Application.UserName
        TextBox1.SetFocus
        Exit Sub
    End If
    If ComboBox1.Value = "" Then
        MsgBox "Sie müssen bitte die Combobox1 füllen - danke.", _
        48, "Hinweis für " & Application.UserName
        ComboBox1.SetFocus
        Exit Sub
    End If
    If TextBox2.Value = "" Then
        MsgBox "Sie müssen bitte die Textbox2 füllen - danke.", _
        48, "Hinweis für " & Application.UserName
        TextBox2.SetFocus
        Exit Sub
    End If
    If ComboBox2.Value = "" Then
        MsgBox "Sie müssen bitte die Combobox2 füllen - danke.", _
        48, "Hinweis für " & Application.UserName
        ComboBox2.SetFocus
        Exit Sub
    End If
    ' Daten in die Tabelle übertragen
    With ThisWorkbook.Worksheets("Tabelle1") ' Tabellenblattname anpassen
        lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Range("A" & lFreie).Value = TextBox1.Value
        .Range("B" & lFreie).Value = ComboBox1.Value
        .Range("C" & lFreie).Value = TextBox2.Value
        .Range("D" & lFreie).Value = ComboBox2.Value
    End With
End Sub
  1. Starte die Userform und fülle die Felder aus, um die Tabelle zu füllen.

Häufige Fehler und Lösungen

  • Fehlermeldung bei leeren Feldern: Stelle sicher, dass alle TextBoxen und ComboBoxen gefüllt sind, bevor du den Button drückst.
  • Daten werden nicht in die richtige Zeile geschrieben: Überprüfe, dass der Code zur Bestimmung der letzten freien Zeile korrekt ist (lFreie = .Cells(.Rows.Count, 1).End(xlUp).Row + 1).
  • Falscher Tabellenblattname: Achte darauf, dass der Name im Code (Tabelle1) mit dem tatsächlichen Namen in Excel übereinstimmt.

Alternative Methoden

Falls die Userform nicht die richtige Lösung für dich ist, kannst du auch direkt in der Excel-Oberfläche arbeiten, um Daten zu füllen. Eine andere Möglichkeit ist das Verwenden von VBA-Formularen, um eine Tabelle zum Ausfüllen zu gestalten. Hierbei kannst du auch die Data Validation-Funktion in Excel nutzen, um Auswahllisten für bestimmte Zellen zu erstellen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine Tabelle mit einer Userform zu füllen:

  • Userform-Felder:
    • TextBox1: Name
    • ComboBox1: Auswahl aus einer Liste (z.B. "Ja", "Nein")
    • TextBox2: Kommentar
    • ComboBox2: Weitere Auswahl (z.B. "Option1", "Option2")

Wenn du die Userform ausfüllst und auf den Button klickst, wird jede Eingabe in die nächste freie Zeile der Tabelle geschrieben.


Tipps für Profis

  • Nutze ComboBoxen, um die Benutzerfreundlichkeit zu erhöhen und Eingabefehler zu minimieren. Achte darauf, die ComboBox mit Werten aus einer Tabelle zu füllen, um die Auswahl zu erleichtern.
  • Implementiere zusätzliche Validierungen für die Eingabefelder, um sicherzustellen, dass die Daten korrekt formatiert sind.
  • Du kannst die Userform dynamisch gestalten, indem du z.B. die sichtbaren Steuerelemente basierend auf vorherigen Eingaben anpasst.

FAQ: Häufige Fragen

1. Wie kann ich eine ComboBox automatisch mit Werten aus einer Tabelle füllen?
Du kannst die ComboBox beim Initialisieren der Userform mit Werten aus einer Excel-Tabelle füllen. Beispiel:

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Tabelle1")

    With ComboBox1
        .AddItem ws.Range("A1").Value
        .AddItem ws.Range("A2").Value
        ' weitere Items hinzufügen
    End With
End Sub

2. Was passiert, wenn ich den falschen Tabellenblattnamen im Code verwende?
Wenn der Tabellenblattname nicht korrekt ist, wird der Code nicht funktionieren, und du erhältst einen Laufzeitfehler. Stelle sicher, dass der Name im Code mit deinem Excel-Dokument übereinstimmt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige