AW: In der Mappe fehlen die UserForms und der VBA-Code
13.11.2019 12:19:54
fcs
Hallo Herbert,
scheinbar hat bei dir die automatische Verlängerung des Tabellenobjekts nicht korrekt funktioniert, wenn unterhalb ein neuer Datensatz eingefügt wird.
Deshalb ist es besser, die Tabelle um eine Zeile zu vergrößern und dann die Daten einzutragen.
Hinweis, wenn du mit With arbeitest, dann musst in den Folgezeilen den Punkt vor den zugehörigen Objekten/Methoden/Eigenschaften einfügen, sonst stimmen ggf. die Bezüge nicht.
LG
Franz
Private Sub Button_Eingabe_Click()
Dim Datenblatt As Object 'Datenblatt als Objektvariable
Dim objList As ListObject
Set Datenblatt = ThisWorkbook.Sheets("Artikelbestand") 'Tabelle1 --> Name der Tabelle
'Berechnung der ersten ungenutzten Zeile
'Prüfung ob Datenblatt leer
If Datenblatt.Range("A1").Value = Empty Then
Leerzeile = 1 'Wenn Datenblatt leer, dann wird als Datenbereich die erste Zeile definiert,
'da UsedRange wenn die erste Zeile leer oder nur diese belegt ist den Wert 1 liefert.
Else
With Datenblatt
'Tabellenobjekte um 1 Zeile vergrößern
Set objList = .ListObjects("Bestand2") 'Name Tabelle/Liste ggf. anpassen
objList.Resize .Range(objList.Range.Range("A1"), _
objList.Range.Range("A1").Offset(objList.Range.Rows.Count, _
objList.Range.Columns.Count - 1))
Leerzeile = objList.Range.Row + objList.Range.Rows.Count - 1
Set objList = .ListObjects("Bezeichnung") 'Name Tabelle/Liste ggf. anpassen
objList.Resize .Range(objList.Range.Range("A1"), _
objList.Range.Range("A1").Offset(objList.Range.Rows.Count, _
objList.Range.Columns.Count - 1))
End With
End If
With Datenblatt 'With damit es schneller läuft und weniger zu tippen ist
.Cells(Leerzeile, 1).Value = TextBox_Bezeichnung.Value
.Cells(Leerzeile, 2).Value = TextBox_Preis.Value
.Cells(Leerzeile, 3).Value = TextBox_Preis2.Value
.Cells(Leerzeile, 4).Value = ComboBox_Einheit_Einzahl.Value
.Cells(Leerzeile, 5).Value = ComboBox_Einheit_Mehrzahl.Value
.Cells(Leerzeile, 20).Value = TextBox_Bezeichnung.Value
End With
'... usw