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

VBA Eingabemaske - Daten speichern

Forumthread: VBA Eingabemaske - Daten speichern

VBA Eingabemaske - Daten speichern
07.04.2015 16:19:26
Kathi
Es ist sicherlich so banal, doch ich komm seit Stunden nicht auf die Lösung. Es ist das erste Mal, seit 3 Jahren, dass ich wieder mit VBA arbeite.
Ich habe eine VBA Eingabemaske in die diverse Sparformen eingetragen werden. Wenn ich auf den Button "Speichern" klicke, möchte ich, dass die Daten in das Tabellenblatt gespeichert werden und zwar in die nächste freie Zeile. Und das ist mein Problem.
Mein Code:
Public Sub Speichern()
Dim xZeile As Long
xZeile = 2
Do While Trim(CStr(Tabelle1.Cells(xZeile, 1).Value))  ""
xZeile = xZeile + 1
Loop
Cells(xZeile, 1) = TextBox4
Cells(xZeile, 3) = TextBox1
Cells(xZeile, 4) = TextBox2
Cells(xZeile, 5) = TextBox3
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
Columns("C:E").Select
Dim Spalte As Range
On Error Resume Next
For Each Spalte In Selection.Columns
Columns(Spalte.Column).TextToColumns
Next
End Sub

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Eingabemaske - Daten speichern
07.04.2015 16:34:15
UweD
Hallo
anstelle von
xZeile = 2
Do While Trim(CStr(Tabelle1.Cells(xZeile, 1).Value))  ""
xZeile = xZeile + 1
Loop
das hier.
    xZeile = Application.Max(Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row, 2)
Gruß UweD

Anzeige
AW: VBA Eingabemaske - Daten speichern
07.04.2015 16:41:51
Kathi
Da passiert leider gar nix ... also es speichert keine Werte im Tabellenblatt.

bei mir klappt Dein Code ...
07.04.2015 16:44:16
Matthias
Hallo
Bei mir klappt Dein Code
Warum lädst Du denn nicht eine Bsp.Mappe hoch
Dann kann man Dir schneller helfen.
Gruß Matthias

AW: bei mir klappt Dein Code ...
07.04.2015 16:53:16
UweD
Ich dachte es geht dir um die Erste freie Zeile....
Private Sub CommandButton1_Click()
Dim xZeile As Long
Dim Spalte As Range
On Error Resume Next
xZeile = Application.Max(Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row, 2)
With Sheets("Tabelle1")
.Cells(xZeile, 1) = UserForm1.TextBox4
.Cells(xZeile, 3) = UserForm1.TextBox1
.Cells(xZeile, 4) = UserForm1.TextBox2
.Cells(xZeile, 5) = UserForm1.TextBox3
UserForm1.TextBox1 = ""
UserForm1.TextBox2 = ""
UserForm1.TextBox3 = ""
UserForm1.TextBox4 = ""
For Each Spalte In .Columns("C:E").Columns
.Columns(Spalte.Column).TextToColumns
Next
End With
End Sub

Mir ist aber nicht klar, was du mit dem unteren Teil (For Each...) bezweckst
Gruß UweD

Anzeige
AW: bei mir klappt Dein Code ...
07.04.2015 16:59:42
Kathi
Hallo Matthias, kann es leider nicht hochladen, ist zu groß :( aber ich versuch es weiter.
Hallo Uwe, ich möchte, dass man Daten in eine Eingabemaske eingibt, die dann durch "Speichern" in dem Tabellenblatt gespeichert werden. Dazu muss ich ja die erste = nächste leere Zeile finden und in diese soll es dann eingetragen werden. Aktuell trägt es immer in die gleiche Zeile ein, also überschreibt die letzte Eingabe.
Berechtigter Einwand (For each..) da hab ich scheinbar nur herumprobiert und vergessen zu löschen. *oops*

Anzeige
AW: VBA Eingabemaske - Daten speichern
07.04.2015 17:02:17
fcs
Hallo Kathi,
im Prinzip sollte die Suche nach der 1. freien Zeile funktionieren.
Nummerische Eingaben in Textboxen sollte man vor dem Eintragen in eine Zelle aufbereiten und nichtt durch den Trick? (Text in Spalten).
Du muss natürlich auf deiner Userform eine Schaltfläche haben, die das Makro "Speichern" startet wenn man darauf klickt.
Gruß
Franz
Private Sub CommandButton1_Click()
Call Speichern
End Sub
Public Sub Speichern()
Dim xZeile As Long
xZeile = 2
With Tabelle1 'Codename des Tabellenblatts in das Werte eingetragen werden.
Do While Trim(CStr(.Cells(xZeile, 1).Value))  ""
xZeile = xZeile + 1
Loop
.Cells(xZeile, 1) = TextBox4
If TextBox1.Value = "" Then
.Cells(xZeile, 3).ClearContents
ElseIf IsNumeric(TextBox1.Value) Then
.Cells(xZeile, 3) = CDbl(TextBox1.Value)
Else
.Cells(xZeile, 3) = TextBox1.Value
End If
If TextBox2.Value = "" Then
.Cells(xZeile, 4).ClearContents
ElseIf IsNumeric(TextBox2.Value) Then
.Cells(xZeile, 4) = CDbl(TextBox2.Value)
Else
.Cells(xZeile, 4) = TextBox2.Value
End If
If TextBox3.Value = "" Then
.Cells(xZeile, 5).ClearContents
ElseIf IsNumeric(TextBox3.Value) Then
.Cells(xZeile, 5) = CDbl(TextBox3.Value)
Else
.Cells(xZeile, 5) = TextBox3.Value
End If
End With
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
End Sub

Anzeige
AW: VBA Eingabemaske - Daten speichern
07.04.2015 17:05:36
Kathi
Danke Franz, werde es gleich testen.

AW: VBA Eingabemaske - Daten speichern
07.04.2015 17:07:13
Kathi
Userbild
Option Explicit
Public Sub Workbook_Open()
UserForm1.Show
End Sub

Private Sub ComboBox1_Change()
TextBox2.Text = Worksheets("Daten").Cells(ComboBox1.ListIndex + 1, 2)
End Sub

Public Sub Speichern()
Dim xZeile As Long
xZeile = Application.Max(Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row, 2)
Cells(xZeile, 1) = TextBox4
Cells(xZeile, 3) = TextBox1
Cells(xZeile, 4) = TextBox2
Cells(xZeile, 5) = TextBox3
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
Columns("C:E").Select
Dim Spalte As Range
On Error Resume Next
For Each Spalte In Selection.Columns
Columns(Spalte.Column).TextToColumns
Next
End Sub
Private Sub CommandButton3_Click()
ActiveWorkbook.Close
End Sub
Private Sub TextBox1_Change()
If TextBox1  "" And IsNumeric(TextBox1) Then
If TextBox2  "" Then
TextBox3 = CDbl(TextBox1) * CDbl(TextBox2)
Else
TextBox3 = ""
End If
Else
If TextBox2  "" Then
TextBox3 = CDbl(TextBox2)
Else
TextBox3 = ""
End If
End If
End Sub

Private Sub TextBox3_Change()
End Sub

Private Sub UserForm_Initialize()
Dim r As Integer
Dim i As Integer
With Sheets("Daten")
r = .Cells(Rows.Count, 1).End(xlUp).Row
ComboBox1.RowSource = .Range("A1:A" & r).Address(External:=True)
End With
TextBox4 = Date
End Sub
Private Sub ComboBox1_Click()
Sheets(ComboBox1.ListIndex + 1).Activate
End Sub

Anzeige
AW: VBA Eingabemaske - Daten speichern
07.04.2015 17:09:13
Kathi
Lieber Franz, da passiert leider auch nichts bei mir. Bekomm zwar auch eine Fehlermeldung, aber es trägt nichts in das Tabellenblatt ein.

hier Dein funktionierendes Bsp.
07.04.2015 17:36:55
Matthias
Hallo
https://www.herber.de/bbs/user/96910.xlsm
Du musst am Ende nur noch die Datei speichern, sonst machts ja keinen Sinn ;-)
Gruß Matthias

Anzeige
AW: hier Dein funktionierendes Bsp.
07.04.2015 17:38:17
Kathi
Oh mein Gott!! :))
Danke!!! Vielen lieben Dank!! *luftsprung*

AW: hier Dein funktionierendes Bsp.
07.04.2015 17:45:12
Kathi
Jetzt hab ich mich zu früh gefreut :-/
Die ersten beiden Eingaben funktionieren und dann bleibt es in der zweiten Zeile hängen.

AW: hier Dein funktionierendes Bsp.
07.04.2015 17:49:09
Kathi
Ahh war mein Fehler. Wenn die Spalte A leer ist, dann ist die Zeile leer. Da muss ich noch was einbauen. Aber vielen lieben Dank nocheinmal :)

Anzeige
ja logo,Textbox4 leer ->"A" auch leer ;-) owT
07.04.2015 17:57:11
Matthias

So logo ist das nicht ;-p
07.04.2015 18:43:30
Kathi
Danke nochmal!
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Eingabemaske - Daten speichern in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Öffne den VBA-Editor (Alt + F11).

  3. Füge ein UserForm hinzu:

    • Rechtsklick auf "VBAProject (DeinWorkbookName)" > "Einfügen" > "UserForm".
  4. Gestalte die Eingabemaske:

    • Füge TextBoxen für die Eingaben hinzu.
    • Füge einen CommandButton hinzu, der das Speichern der Daten auslöst.
  5. Füge den folgenden Code in das UserForm ein:

    Private Sub CommandButton1_Click()
       Call Speichern
    End Sub
    
    Public Sub Speichern()
       Dim xZeile As Long
       xZeile = Application.Max(Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row, 2)
    
       With Sheets("Tabelle1")
           .Cells(xZeile, 1) = TextBox4
           .Cells(xZeile, 3) = TextBox1
           .Cells(xZeile, 4) = TextBox2
           .Cells(xZeile, 5) = TextBox3
       End With
    
       TextBox1 = ""
       TextBox2 = ""
       TextBox3 = ""
       TextBox4 = ""
    End Sub
  6. Schließe den VBA-Editor und teste die Eingabemaske, indem Du Daten eingibst und auf "Speichern" klickst.


Häufige Fehler und Lösungen

  • Problem: Die Werte werden nicht gespeichert.

    • Lösung: Überprüfe, ob der Code das richtige Tabellenblatt anspricht. Stelle sicher, dass der Codename des Tabellenblatts korrekt ist.
  • Problem: Daten werden immer in die gleiche Zeile geschrieben.

    • Lösung: Stelle sicher, dass die Variable xZeile korrekt initialisiert wird. Verwende Application.Max(...), um die erste leere Zeile zu finden.
  • Problem: Fehlermeldungen beim Speichern.

    • Lösung: Achte darauf, dass die TextBoxen korrekt benannt sind und alle notwendigen Werte eingegeben wurden.

Alternative Methoden

  • Datenübertragung mit Excel Makros: Anstatt eine Eingabemaske zu nutzen, kannst Du auch direkt in eine Tabelle eintragen, indem Du ein Makro erstellst, das die Daten von einer Input-Range in die Ziel-Range kopiert.

  • Verwendung von Excel Formeln: Manchmal kann es sinnvoll sein, Formeln zu verwenden, die automatisch berechnete Werte in eine Tabelle schreiben, anstatt VBA zu verwenden.


Praktische Beispiele

  1. Eingabemaske für Kundeninformationen:

    • Erstelle eine Eingabemaske, um Kundendaten wie Name, Adresse und Telefonnummer zu speichern.
  2. Finanzdaten verwalten:

    • Nutze die Eingabemaske, um Finanztransaktionen zu erfassen und in einer Übersicht zu speichern.
  3. Inventarverwaltung:

    • Verwende eine Eingabemaske, um Artikel hinzuzufügen oder zu aktualisieren und die Bestände in einer Tabelle zu verwalten.

Tipps für Profis

  • Fehlerbehandlung: Implementiere Error-Handling in Deinen VBA-Code, um mögliche Laufzeitfehler abzufangen und Nutzerfreundlichkeit zu gewährleisten.

  • Datenvalidierung: Füge Validierungsregeln für die Eingabewerte hinzu, um sicherzustellen, dass nur korrekte Daten in die Tabelle geschrieben werden.

  • Formulare anpassen: Gestalte Deine Eingabemaske optisch ansprechend, um die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich eine Eingabemaske in Excel erstellen? Um eine Eingabemaske in Excel zu erstellen, musst Du ein UserForm im VBA-Editor anlegen und die gewünschten Steuerelemente (TextBoxen, Buttons) einfügen.

2. Was ist der Vorteil einer Eingabemaske in VBA? Eine Eingabemaske erlaubt es dir, Daten strukturiert und benutzerfreundlich zu erfassen. Sie reduziert die Fehlerquote und macht die Dateneingabe effizienter.

3. Wie speichere ich Daten von einer Eingabemaske in Excel? Daten können über einen Button (CommandButton) in das gewünschte Tabellenblatt gespeichert werden, indem du den entsprechenden VBA-Code hinzufügst, der die erste leere Zeile findet und die Eingaben einträgt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige