Aus einer Tabelle auf Rufen kann und in weiteren Textboxen Anzeigen lasen Kann
https://www.herber.de/bbs/user/80435.xls
Für Hilfe danke ich schon mal.
Gruss Fredy
Private Sub cmdShow_Click() 'aktiviert die Anzeige der Daten
Set frm = UserForm1
With frm
.txtBox1.SetFocus
.txtBox2.Value = ActiveCell.Offset(0, 2).Value
.txtBox3.Value = ActiveCell.Offset(0, 3).Value
.txtBox4.Value = ActiveCell.Offset(18, 2).Value
.txtBox5.Value = ActiveCell.Offset(18, 3).Value
.txtBox6.Value = ActiveCell.Offset(18, 8).Value
End With
End Sub
Private Sub CommandButton1_Click()
Set frm = inventar
With frm
.txtBox1.SetFocus
.txtBox2.Value = ActiveCell.Offset(0, 2).Value
.txtBox3.Value = ActiveCell.Offset(0, 3).Value
.txtBox4.Value = ActiveCell.Offset(18, 2).Value
.txtBox5.Value = ActiveCell.Offset(18, 3).Value
.txtBox6.Value = ActiveCell.Offset(18, 8).Value
End With
End Sub
Private Sub CommandButton2_Click()
Dim zelle As Long
With Worksheets("Tabelle 1")
zelle = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(zelle, 2) = TextBox2
.Cells(zelle, 3) = TextBox3
.Cells(zelle, 4) = TextBox4
.Cells(zelle, 5) = TextBox5
.Cells(zelle, 6) = TextBox6
.Cells(zelle, 7) = TextBox7
.Cells(zelle, 8) = TextBox8
End With
End Sub
Private Sub CommandButton3_Click()
Dim Tb As Integer
On Error Resume Next
For Tb = 1 To 8
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6.Value = Format(TextBox6.Value, "#,##0.00 SFR")
End Sub
Private Sub TextBox1_afterupdate()
Dim lRow, i As Integer
With Sheets(1)
lRow = Application.Match(CLng(TextBox1), .Columns(1), 0)
If Not IsError(lRow) Then
For i = 2 To 8
Controls("Textbox" & i) = .Cells(lRow, i)
Next
Else
TextBox1.SetFocus
End If
End With
End Sub
Private Sub CommandButton1_Click()
Dim lRow As Long, i As Integer
With Sheets(1)
lRow = Application.Match(CLng(TextBox1), .Columns(1), 0)
If Not IsError(lRow) Then
For i = 2 To 8
.Cells(lRow, i) = Controls("Textbox" & i)
Next
End If
End With
End Sub
Die Rechtschreibung solltest du noch überarbeitenOption Explicit
Dim ZeileGewaehlt As Long
Sub ClearTextbox2to8()
Dim Tb As Integer
On Error Resume Next
For Tb = 2 To 8
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
Sub Textboxenfuellen(Zeile As Long)
With Worksheets("Tabelle 1")
TextBox2 = .Cells(Zeile, 2)
TextBox3 = .Cells(Zeile, 3)
TextBox4 = .Cells(Zeile, 4)
TextBox5 = .Cells(Zeile, 5)
TextBox6 = .Cells(Zeile, 6)
TextBox7 = .Cells(Zeile, 7)
TextBox8 = .Cells(Zeile, 8)
End With
End Sub
Sub Werteeintragen(Zeile)
If Zeile = 0 Then Exit Sub
With Worksheets("Tabelle 1")
.Cells(Zeile, 2) = TextBox2
.Cells(Zeile, 3) = TextBox3
.Cells(Zeile, 4) = TextBox4
.Cells(Zeile, 5) = TextBox5
.Cells(Zeile, 6) = TextBox6
.Cells(Zeile, 7) = TextBox7
.Cells(Zeile, 8) = TextBox8
End With
End Sub
Private Sub CommandButton1_Click()
Call Werteeintragen(ZeileGewaehlt)
End Sub
Private Sub CommandButton2_Click()
With Worksheets("Tabelle 1")
ZeileGewaehlt = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
Call Werteeintragen(ZeileGewaehlt)
End With
End Sub
Private Sub CommandButton3_Click()
Dim Tb As Integer
On Error Resume Next
For Tb = 1 To 8
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
Private Sub TextBox1_Change()
Dim Zelle As Range
With Worksheets("Tabelle 1")
Set Zelle = .Columns(2).Find(What:=TextBox1, lookat:=xlWhole, LookIn:=xlValues)
If Zelle Is Nothing Then
ZeileGewaehlt = 0
ClearTextbox2to8
Else
ZeileGewaehlt = Zelle.Row
Call Textboxenfuellen(ZeileGewaehlt)
End If
End With
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6.Value = Format(TextBox6.Value, "#,##0.00 SFR")
End Sub
Um Daten aus einer Excel-Tabelle in einem Userform anzuzeigen, folge dieser Schritt-für-Schritt-Anleitung:
Erstelle ein Userform: Öffne den VBA-Editor (ALT + F11) und füge ein neues Userform hinzu.
Füge Textboxen hinzu: Platziere mehrere Textboxen (TextBox1 bis TextBox8) auf dem Userform, um die Daten anzuzeigen.
Füge Command Buttons hinzu: Füge drei Command Buttons hinzu, um Daten anzuzeigen, zu speichern und zurückzusetzen.
VBA-Code einfügen: Kopiere den folgenden VBA-Code in das Userform:
Option Explicit
Dim ZeileGewaehlt As Long
Private Sub CommandButton1_Click()
Call Werteeintragen(ZeileGewaehlt)
End Sub
Private Sub CommandButton2_Click()
With Worksheets("Tabelle 1")
ZeileGewaehlt = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
Call Werteeintragen(ZeileGewaehlt)
End With
End Sub
Private Sub CommandButton3_Click()
Dim Tb As Integer
On Error Resume Next
For Tb = 1 To 8
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
Private Sub TextBox1_Change()
Dim Zelle As Range
With Worksheets("Tabelle 1")
Set Zelle = .Columns(2).Find(What:=TextBox1, lookat:=xlWhole, LookIn:=xlValues)
If Zelle Is Nothing Then
ZeileGewaehlt = 0
ClearTextbox2to8
Else
ZeileGewaehlt = Zelle.Row
Call Textboxenfuellen(ZeileGewaehlt)
End If
End With
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6.Value = Format(TextBox6.Value, "#,##0.00 SFR")
End Sub
Sub ClearTextbox2to8()
Dim Tb As Integer
On Error Resume Next
For Tb = 2 To 8
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
Sub Textboxenfuellen(Zeile As Long)
With Worksheets("Tabelle 1")
TextBox2 = .Cells(Zeile, 2)
TextBox3 = .Cells(Zeile, 3)
TextBox4 = .Cells(Zeile, 4)
TextBox5 = .Cells(Zeile, 5)
TextBox6 = .Cells(Zeile, 6)
TextBox7 = .Cells(Zeile, 7)
TextBox8 = .Cells(Zeile, 8)
End With
End Sub
Sub Werteeintragen(Zeile)
If Zeile = 0 Then Exit Sub
With Worksheets("Tabelle 1")
.Cells(Zeile, 2) = TextBox2
.Cells(Zeile, 3) = TextBox3
.Cells(Zeile, 4) = TextBox4
.Cells(Zeile, 5) = TextBox5
.Cells(Zeile, 6) = TextBox6
.Cells(Zeile, 7) = TextBox7
.Cells(Zeile, 8) = TextBox8
End With
End Sub
Testen des Userforms: Starte das Userform (F5) und gib in TextBox1 eine Artikelnummer ein, um die zugehörigen Daten anzuzeigen.
Fehler: TextBox bleibt leer
Überprüfe, ob die Artikelnummer in der richtigen Spalte der Tabelle steht und die Find
-Methode korrekt funktioniert.
Fehler: Daten werden nicht gespeichert
Stelle sicher, dass der Code im CommandButton2_Click
korrekt ist und die richtige Zeile zum Speichern verwendet wird.
Fehler: TextBox zeigt falsche Werte an
Achte darauf, dass die Indizes in den Textboxen
richtig gesetzt sind. Ein häufiger Fehler ist es, die Indizes zu vertauschen.
Wenn du keine Userform verwenden möchtest, kannst du die Daten auch direkt in der Excel-Tabelle anzeigen lassen, indem du Formeln oder Datenüberprüfung verwendest. Eine einfache Dropdown-Liste mit Daten -> Datenüberprüfung
kann hilfreich sein, um Artikelnummern auszuwählen und die zugehörigen Daten in anderen Zellen anzuzeigen.
Artikelnummern und Preise: Wenn du eine Liste von Produkten hast, in der Spalte A die Artikelnummern und in den folgenden Spalten die Preise, kannst du mit der oben beschriebenen Methode schnell die Informationen in deinem Userform abrufen.
Kundendaten: Verwende das Userform, um Kundendaten anzuzeigen und zu bearbeiten. Benutzer können die Kundennummer eingeben, und die zugehörigen Daten werden in den Textboxen angezeigt.
Fehlerbehandlung: Implementiere Fehlerbehandlung im Code, um sicherzustellen, dass die Anwendung auch bei unerwarteten Eingaben stabil bleibt.
Datenvalidierung: Füge Validierung für die Eingaben in die Textboxen ein, um sicherzustellen, dass nur gültige Daten gespeichert werden.
Design: Achte auf ein benutzerfreundliches Design des Userforms. Verwende klare Beschriftungen und eine logische Anordnung der Textboxen.
1. Wie kann ich die Daten aus der Userform in die Excel-Tabelle schreiben?
Du kannst die Methode Werteeintragen
verwenden, um die Werte aus den Textboxen in die entsprechende Zeile der Tabelle zu schreiben.
2. Gibt es eine Möglichkeit, mehrere Einträge gleichzeitig zu speichern?
Ja, du kannst eine Schleife verwenden, um mehrere Datensätze zu speichern, indem du die Zeile, die du speichern möchtest, iterierst.
3. Funktioniert das auch in älteren Excel-Versionen?
Ja, die beschriebenen Methoden und Codes sind in den meisten Excel-Versionen ab Excel 2007 anwendbar. Achte darauf, dass die VBA-Umgebung in deiner Version aktiviert ist.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen