Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform nach Datenübermittlung leeren

Userform nach Datenübermittlung leeren
10.04.2013 13:11:46
Sascha
Hallo,
bei einem Button im Userform habe ich den folgenden Code hinterlegt.
Ich möchte allerdings, dass nach der Datenübergabe die Eingabefelder
geleert werden.
Kann mir jemand sagen wie ich das realisiert bekomme?
Vorab vielen lieben Dank.
LG
Sascha
Option Explicit
Private Sub CommandButton_Insert_Click()
On Error GoTo hell
Dim lRow As Long
With Sheet2
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Date
If IsNumeric(Me.ComboBox_Artikelnummer) Then .Cells(lRow, 2).Value = --Me. _
ComboBox_Artikelnummer Else .Cells(lRow, 2).Value = Me.ComboBox_Artikelnummer
.Cells(lRow, 3).FormulaR1C1 = "=VLOOKUP(RC[-1],Datenbank!C1:C2,2,)"
.Cells(lRow, 3).Value = .Cells(lRow, 3).Value
If Not Me.TextBox_Zugang = "" Then .Cells(lRow, 4).Value = --Me.TextBox_Zugang
If Not Me.TextBox_Abgang = "" Then .Cells(lRow, 5).Value = --Me.TextBox_Abgang
.Cells(lRow, 6).Value = Application.WorksheetFunction.Substitute(Me.TextBox_LagerID, "ß", "- _
")
.Cells(lRow, 7).Value = Me.ComboBox_NamenKurz
.Cells(lRow, 8).Value = Application.WorksheetFunction.VLookup(Me.ComboBox_NamenKurz, Sheet1. _
Range("G1:H1").EntireColumn, 2, False)
Me.TextBox_Abgang.Text = ""
Me.TextBox_Zugang.Text = ""
Me.ComboBox_Artikelnummer.SetFocus
End With
GoTo heaven:
hell:
MsgBox ("Eintrag gescheitert, bitte prüfen und korrigieren")
Sheet2.Cells(lRow, 1).EntireRow.ClearContents
heaven:
End Sub

Private Sub Label_LagerID_Click()
End Sub

Private Sub TextBox_Abgang_Change()
End Sub

Private Sub UserForm_Initialize()
Dim lRow As Long
Dim r As Range
With Sheet1
lRow = .Cells(Rows.Count, 7).End(xlUp).Row
For Each r In .Range(.Cells(3, 7), .Cells(lRow, 7)) 'Namensbox füllen
Me.ComboBox_NamenKurz.AddItem r.Value
Next r
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
For Each r In .Range(.Cells(3, 1), .Cells(lRow, 1)) 'Artikelnummern füllen
Me.ComboBox_Artikelnummer.AddItem r.Value
Next r
End With
End Sub

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform nach Datenübermittlung leeren
10.04.2013 13:16:04
Rudi
Hallo,
setze Textboxen auf "" und bei den Comboboxen den Listindex auf -1.
Gruß
Rudi

AW: Userform nach Datenübermittlung leeren
10.04.2013 13:27:49
Sascha
Hallo Rudi,
das ist nicht mein Code, ich weis gar nicht was ich da machen soll.
Kannst Du mir vielleicht noch etwas weiterhelfen?
LG
Sascha

AW: Userform nach Datenübermittlung leeren
10.04.2013 13:39:45
Klaus
Hallo Sascha,
wer hat den diesen Stümpercode verbrochen? Der sieht ja schrecklich aus! :-)
Kannst du die Datei eben hochladen?
das hier
Me.TextBox_Abgang.Text = ""
Me.TextBox_Zugang.Text = ""
sollte eigentlich den Zweck schon erfüllen, wie Rudi vorschlug.
Wir müssten mal alle Namen von allen Textboxen und Comboboxen wissen - das geht am besten, wenn wir die in der Datei sehen. Kannst auch alle Daten aus den Tabellen löschen, es geht ja nur um das VBA und die UserForm.
Dass die TextBoxen NICHT geleert werden, wenn der Code abbricht, soll aber so bleiben?
Grüße,
Klaus M.vdT.

Anzeige
AW: Userform nach Datenübermittlung leeren
10.04.2013 14:02:15
Sascha
Hallo Klaus,
anbei wie gewünscht die Datei.
Nein, die TextBoxen sollen dann geleert werden.
https://www.herber.de/bbs/user/84816.xlsm
LG
Sascha

AW: Userform nach Datenübermittlung leeren
10.04.2013 14:36:31
Klaus
Hallo Sascha,
anbei der aktualisierte Code des Insert-Button.
Private Sub CommandButton_Insert_Click()
On Error GoTo hell
Dim lRow As Long
With Sheet2
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Date
If IsNumeric(Me.ComboBox_Artikelnummer) Then .Cells(lRow, 2).Value = --Me. _
ComboBox_Artikelnummer Else .Cells(lRow, 2).Value = Me.ComboBox_Artikelnummer
.Cells(lRow, 3).FormulaR1C1 = "=VLOOKUP(RC[-1],Datenbank!C1:C2,2,)"
.Cells(lRow, 3).Value = .Cells(lRow, 3).Value
If Not Me.TextBox_Zugang = "" Then .Cells(lRow, 4).Value = --Me.TextBox_Zugang
If Not Me.TextBox_Abgang = "" Then .Cells(lRow, 5).Value = --Me.TextBox_Abgang
.Cells(lRow, 6).Value = Application.WorksheetFunction.Substitute(Me.TextBox_LagerID, "ß", "- _
")
.Cells(lRow, 7).Value = Me.ComboBox_NamenKurz
.Cells(lRow, 8).Value = Application.WorksheetFunction.VLookup(Me.ComboBox_NamenKurz, Sheet1. _
Range("G1:H1").EntireColumn, 2, False)
Me.ComboBox_Artikelnummer.SetFocus
End With
'alles zurück setzen
Me.TextBox_Abgang.Text = ""
Me.TextBox_Zugang.Text = ""
Me.TextBox_LagerID.Text = ""
Me.ComboBox_Artikelnummer.ListIndex = -1
Me.ComboBox_NamenKurz.ListIndex = -1
GoTo heaven:
hell:
'alles zurück setzen
Me.TextBox_Abgang.Text = ""
Me.TextBox_Zugang.Text = ""
Me.TextBox_LagerID.Text = ""
Me.ComboBox_Artikelnummer.ListIndex = -1
Me.ComboBox_NamenKurz.ListIndex = -1
MsgBox ("Eintrag gescheitert, bitte prüfen und korrigieren")
Sheet2.Cells(lRow, 1).EntireRow.ClearContents
heaven:
End Sub
Grüße,
Klaus M.vdT.

Anzeige
Platzverschwender! ;-)
10.04.2013 14:47:17
Rudi
Hallo,
da man auf jeden Fall mal in den Himmel kommt, kann man doch da leeren.
Gruß
Rudi

*kopf -> Tisch*
10.04.2013 14:57:17
Klaus
Hallo Rudi,
unglaublich. Ich saß da grad ungelogen zwei Minuten vor und hab überlegt, wie ich die Codeverdoppelung vermeiden kann. Wollte das schon in eine eigene Sub auslagern.
Wald und Bäume, oder so ähnlich ging das Sprichwort. Danke für die Korrektur!
Grüße,
Klaus M.vdT.

Anzeige
AW: Platzverschwender! ;-)
10.04.2013 15:41:06
Sascha
Hallo,
funktioniert jetzt einwandfrei.
Vielen Dank.
LG
Sascha

AW: Userform nach Datenübermittlung leeren
10.04.2013 14:44:05
Rudi
Hallo,
Private Sub CommandButton_Insert_Click()
On Error GoTo hell
Dim lRow As Long
With Sheet2
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Date
If IsNumeric(ComboBox_Artikelnummer) Then
.Cells(lRow, 2).Value = --ComboBox_Artikelnummer
Else
.Cells(lRow, 2).Value = ComboBox_Artikelnummer
End If
.Cells(lRow, 3).FormulaR1C1 = "=VLOOKUP(RC[-1],Datenbank!C1:C2,2,)"
.Cells(lRow, 3).Value = .Cells(lRow, 3).Value
If Not TextBox_Zugang = "" Then .Cells(lRow, 4).Value = --TextBox_Zugang
If Not TextBox_Abgang = "" Then .Cells(lRow, 5).Value = --TextBox_Abgang
.Cells(lRow, 6).Value = Application.WorksheetFunction.Substitute(TextBox_LagerID, "ß", "-")
.Cells(lRow, 7).Value = ComboBox_NamenKurz
.Cells(lRow, 8).Value = _
Application.WorksheetFunction.VLookup(ComboBox_NamenKurz, Sheet1.Range("G1:H1"). _
EntireColumn, 2, False)
End With
GoTo heaven
hell:
MsgBox ("Eintrag gescheitert, bitte prüfen und korrigieren")
Sheet2.Cells(lRow, 1).EntireRow.ClearContents
heaven:
TextBox_Abgang.Text = ""
TextBox_Zugang.Text = ""
TextBox_LagerID = ""
ComboBox_Artikelnummer.ListIndex = -1
ComboBox_NamenKurz.ListIndex = -1
ComboBox_Artikelnummer.SetFocus
End Sub

Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform nach Datenübermittlung leeren


Schritt-für-Schritt-Anleitung

Um eine Userform nach der Datenübermittlung zu leeren, kannst du den folgenden VBA-Code verwenden. Dieser Code setzt alle TextBoxen und ComboBoxen zurück:

Private Sub CommandButton_Insert_Click()
On Error GoTo hell
Dim lRow As Long
With Sheet2
    lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(lRow, 1).Value = Date
    If IsNumeric(Me.ComboBox_Artikelnummer) Then
        .Cells(lRow, 2).Value = --Me.ComboBox_Artikelnummer
    Else
        .Cells(lRow, 2).Value = Me.ComboBox_Artikelnummer
    End If
    ' Weitere Datenverarbeitung hier
End With

' Alle Eingabefelder leeren
Me.TextBox_Abgang.Text = ""
Me.TextBox_Zugang.Text = ""
Me.TextBox_LagerID.Text = ""
Me.ComboBox_Artikelnummer.ListIndex = -1
Me.ComboBox_NamenKurz.ListIndex = -1
Me.ComboBox_Artikelnummer.SetFocus
GoTo heaven:
hell:
MsgBox ("Eintrag gescheitert, bitte prüfen und korrigieren")
Sheet2.Cells(lRow, 1).EntireRow.ClearContents
heaven:
End Sub

In diesem Beispiel wird nach der Datenübermittlung die Funktion Me.TextBox_Zugang.Text = "" verwendet, um die TextBox zu leeren. Dadurch wird sichergestellt, dass die Eingabefelder für die nächste Benutzung bereit sind.


Häufige Fehler und Lösungen

  • Fehler: Die TextBoxen werden nicht geleert.

    • Lösung: Stelle sicher, dass der Code zur Leere der TextBoxen nach der Datenübermittlung korrekt platziert ist. Siehe das Beispiel im vorherigen Abschnitt.
  • Fehler: ListIndex wird nicht auf -1 gesetzt.

    • Lösung: Überprüfe, ob du ListIndex für die ComboBoxen korrekt auf -1 setzt. Dies sorgt dafür, dass die Auswahl zurückgesetzt wird.

Alternative Methoden

Eine alternative Methode zur Leere von TextBoxen und ComboBoxen besteht darin, eine separate Subroutine zu erstellen, die alle Eingabefelder zurücksetzt. So kannst du den Code besser organisieren:

Private Sub ClearUserForm()
    Me.TextBox_Abgang.Text = ""
    Me.TextBox_Zugang.Text = ""
    Me.TextBox_LagerID.Text = ""
    Me.ComboBox_Artikelnummer.ListIndex = -1
    Me.ComboBox_NamenKurz.ListIndex = -1
End Sub

Private Sub CommandButton_Insert_Click()
    ' ... Dein bestehender Code ...
    ClearUserForm
End Sub

Praktische Beispiele

Angenommen, du hast folgende TextBoxen: TextBox_Zugang, TextBox_Abgang, und eine ComboBox ComboBox_Artikelnummer. Um diese zu leeren, kannst du den Code wie folgt anpassen:

Private Sub CommandButton_Insert_Click()
    ' ... Datenverarbeitung ...
    Me.TextBox_Zugang.Text = ""
    Me.TextBox_Abgang.Text = ""
    Me.ComboBox_Artikelnummer.ListIndex = -1
End Sub

In diesem Beispiel wird die Funktion vba textbox leeren verwendet, um sicherzustellen, dass nach der Datenübertragung alle Felder bereit für neue Eingaben sind.


Tipps für Profis

  • Verwende On Error Resume Next, um Fehler zu ignorieren, wenn du sicher bist, dass sie die Logik nicht stören.
  • Halte deinen Code sauber und gut strukturiert, um die Wartung zu erleichtern.
  • Benutze With-Anweisungen, um den Code lesbarer zu machen und die Ausführungsgeschwindigkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle TextBoxen nach der Eingabe geleert werden?
Nutze die Methode Me.TextBox_Name.Text = "" für jede TextBox, um sie zu leeren.

2. Was ist der Unterschied zwischen TextBox und ComboBox?
Eine TextBox ist ein Eingabefeld für Texte, während eine ComboBox eine Dropdown-Liste bietet, aus der Benutzer auswählen können.

3. Wie kann ich Fehler beim Leeren der Userform vermeiden?
Verwende Fehlerbehandlungsroutinen wie On Error GoTo und stelle sicher, dass du die Felder an der richtigen Stelle im Code zurücksetzt.

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