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

Forumthread: Userform leeren

Userform leeren
10.12.2002 17:14:32
Fred
Hi,
hab da ne Frage zur Userform.
Also ich gebe meine Daten über ne Userform ein und drück dann auf meinen Button Daten erfassen so das die Daten in meine Tabelle geschrieben werden, danach stehen die Daten aber immernoch in den TextBoxen, so das wenn ich einen neuen Datensatz eingeben will die alten erst löschen muss.
Gibt es keine möglichkeit das nach eingabe der daten und drücken des buttons Daten erfassen sich die userform automatisch leert?
Für n Tipp wäre ich sehr dankbar.
Gruß
Fred
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Userform leeren
10.12.2002 17:20:47
Hajo_Zi
Hallo Fred

Userformnamen anpassen


	
Private Sub CommandButton1_Click()
Dim ObCb As Object
For Each ObCb In Auftrag.Controls
If TypeName(ObCb) = "TextBox" Then ObCb.Value = ""
Next ObCb
End Sub

Code eingefügt mit: Excel Code Jeanie

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend <pre> Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein


Gruß Hajo

Anzeige
Re: Userform leeren
10.12.2002 20:21:22
Fred
hallo hajo_zi,
danke für deine schnelle antwort.Hab da aber noch ne frage:
hab ja dem command button schon den code für das reinschreiben in die tabelle zugeteilt.
Private Sub CommandButton1_Click()
Set Frm = Dateneingabe
Sheets("Tabelle1").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
With Frm
ActiveCell.Value = .TextBox1.Value
ActiveCell.Offset(0, 1).Value = .TextBox2.Value
ActiveCell.Offset(0, 2).Value = .TextBox3.Value
End With

End Sub
wo schreibe ich dann deinen code hin?
Für deine hilfe bin ich dir sehr dankbar.
Gruß
Fred
Anzeige
Re: Userform leeren
10.12.2002 20:25:41
Hajo_Zi
Hallo Fred

jetzt sage nicht das es nur um drei Rextboxen geht??

Ich würde schreiben nach End With

Gruß Hajo

Re: Userform leeren
10.12.2002 20:47:30
Fred
hallo Hajo,
habs jetzt wie folgt eingegeben:
Private Sub CommandButton1_Click()
Set Frm = Dateneingabe
Sheets("Tabelle1").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
With Frm
ActiveCell.Value = .TextBox1.Value
ActiveCell.Offset(0, 1).Value = .TextBox2.Value
ActiveCell.Offset(0, 2).Value = .TextBox3.Value
End With
DimObCbAsObject
ForEachObCbInAuftrag.Controls
IfTypeName(ObCb) = "TextBox"Then Ob Cb.Value=""
NextObCb
End Sub

Meldet jetz aber: Sub oder Function nicht definiert
Was tun?
Gruß
Fred

Anzeige
Re: Userform leeren
10.12.2002 20:51:14
Hajo_Zi
hallo Fred

hast Du meine gesamten Leerstellen gelöscht???

Gruß Hajo

Re: Userform leeren
10.12.2002 21:02:49
Fred
Hallo Hajo,
ja sorry , hab dann aber den code kopiert und eingefügt.
jetzt meldet excel aber: laufzeitfehler 424 Objekt erforderlich.
Gruß
Fred
Re: Userform leeren
10.12.2002 21:05:34
Hajo_Zi
Hallo Fred

hast Du Dich an die Anleitung gehalten zum kopieren.

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend <pre > Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein

Gruß Hajo

Anzeige
Klappt immer noch nicht :((
10.12.2002 21:46:38
Fred
Hallo Hajo,
hab über word kopiert.
Meldet aber immernoch laufzeitfehler 424 objekt erforderlich
ich könnt verzweifeln.
gruß
fred
Re: Klappt immer noch nicht :((
10.12.2002 21:49:13
Hajo_Zi
Hallo Fred

falls es nicht geheim ist schicke es mir und shreibe dazu wie es benutzt wird, falls es nicht geheim ist. Ich schaue es mir dann morgen früh an.

Gruß Hajo

Anzeige
Ok
10.12.2002 22:13:57
Fred
hallo Hajo,
dank für dein Angebot das ich gern nütze.
Bei der datei test2 handelt es sich nur um ein übungsfeld für mich da ich erst vor kurzem angefangen habe mich mit vba zu beschäftigen.
Nochmals herzlichen dank
gruß
fred
Re: Useerform leeren
11.12.2002 07:15:04
Hajo_Zi
Hallo Fred

hatte ich nicht geschrieben das der Userformname angepasst werden soll

For Each ObCb In Me.Controls


Diese Verfahrensweise lohnt sich erst bei mehreren TextBoxen, bei 3 würde ich es noch nicht anwenden. Der Code ist nicht kürzer.

Klicke mal in VBA unter Optionen Variablen Definition erforderlich an.
Auf Select kann in VBA verzichtet werden.


Gruß Hajo

Anzeige
danke hat geklappt!!!!!
11.12.2002 20:51:29
Fred
Hi Hajo,
hat geklappt!!!!!
herzlichen dank.
gruß
Fred
;
Anzeige

Infobox / Tutorial

Userform in Excel VBA leeren


Schritt-für-Schritt-Anleitung

Um eine Userform in Excel VBA zu leeren, nachdem Daten erfasst wurden, kannst du den folgenden Code in das Click-Ereignis deines CommandButtons einfügen. Dieser Code sorgt dafür, dass alle TextBoxen in der Userform nach dem Speichern der Daten automatisch geleert werden:

Private Sub CommandButton1_Click()
    Dim Frm As UserForm
    Set Frm = Dateneingabe
    Sheets("Tabelle1").Activate
    Range("A65536").End(xlUp).Offset(1, 0).Select

    With Frm
        ActiveCell.Value = .TextBox1.Value
        ActiveCell.Offset(0, 1).Value = .TextBox2.Value
        ActiveCell.Offset(0, 2).Value = .TextBox3.Value
    End With

    Dim ObCb As Object
    For Each ObCb In Frm.Controls
        If TypeName(ObCb) = "TextBox" Then
            ObCb.Value = ""
        End If
    Next ObCb
End Sub

Stelle sicher, dass du den Namen deiner Userform (z. B. Dateneingabe) im Code anpasst.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 424: Objekt erforderlich

    • Überprüfe, ob du den Userformnamen korrekt eingetragen hast. Der Name sollte in der Zeile Set Frm = Dateneingabe übereinstimmen.
  2. Sub oder Function nicht definiert

    • Achte darauf, dass du keine Leerstellen im Code hast. Excel VBA erkennt den Code nicht, wenn er nicht korrekt formatiert ist.
  3. TextBoxen werden nicht geleert

    • Stelle sicher, dass der Code zum Leeren der TextBoxen nach dem End With-Block eingefügt ist.

Alternative Methoden

Eine weitere Möglichkeit, die TextBoxen zu leeren, wäre die Erstellung einer separaten Sub-Prozedur. Diese kannst du dann nach dem Speichern der Daten aufrufen:

Sub ClearTextBoxes()
    Dim ObCb As Object
    For Each ObCb In Me.Controls
        If TypeName(ObCb) = "TextBox" Then
            ObCb.Value = ""
        End If
    Next ObCb
End Sub

Rufe diese Sub dann in deinem CommandButton-Click-Event auf:

Call ClearTextBoxes

Praktische Beispiele

Wenn du beispielsweise eine Userform mit mehreren TextBoxen hast, kannst du den oben genannten Code nutzen, um alle TextBoxen zu leeren, nachdem die Daten in die Excel-Tabelle übertragen wurden. Dies ist besonders nützlich, wenn du häufig Daten eingeben musst und sicherstellen willst, dass alte Daten nicht versehentlich erneut eingegeben werden.


Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Überlege, ob du eine Funktion zur Validierung der Daten vor dem Speichern hinzufügen möchtest. So kannst du sicherstellen, dass nur gültige Daten in die Tabelle gelangen.
  • Denke daran, dass die Verwendung von Select in VBA vermieden werden sollte, um den Code effizienter zu gestalten. Du kannst direkt mit Objekten arbeiten.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Userforms gleichzeitig leeren? Du kannst eine ähnliche Logik wie oben beschrieben verwenden, indem du die ClearTextBoxes-Sub für jede Userform aufrufst.

2. Funktioniert dieser Code in älteren Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird.

3. Wie kann ich sicherstellen, dass meine Userform nach dem Leeren nicht mehr sichtbar ist? Du kannst Me.Hide am Ende deiner CommandButton_Click-Prozedur hinzufügen, um die Userform nach dem Speichern und Leeren der TextBoxen zu schließen.

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