Hallo gmg-cc!
Tatsächlich war das so, dass sich die formatierte Tabelle sich allein erweiterte, sobald ein neuer Datensatz unten eingefügt worden ist. Aber dann hat das aufgehört und ich fand nicht heraus warum, wieso oder weshalb. Ich habe auch alles versucht den alten Zustand der automatischen Erweiterung wieder herzustellen, doch auch eine Aufhebung und Neu-Setzung der Tabellen-Formatierung brachte nichts.
Also habe ich den Makro-Recorder angeworfen und die Tabelle manuell runtergezogen und den generierten Code hier eingebaut:
##########################################
Private Sub BTN_Hinzufuegen_Click()
Dim artnr As String, ArtBez As String
Dim pos As Integer, text As String, f_str As String
Dim i As Integer, j As Integer, m As Integer, n As Integer, spalten As Integer, zeilen As Integer
Dim pos_schritte As Range, temp_pos_auftrdaten As Range
'Bereich, wo die Position fuer Listenfeld sind, uebergeben:
Set temp_pos_auftrdaten = Range("Temp_Auftr_Pos_Liste")
'Pos-Schritte übernehmen:
Set pos_schritte = Range("Pos_Schritte")
pos = pos_schritte
If CB_Art_Nr_eingeben = "" Then
text = "Artikel-Nr."
GoTo Fehlende_Eingabe
ElseIf TF_Menge = "" Then
text = "Menge"
GoTo Fehlende_Eingabe
Else
KdBestellNr = TF_KdBestellNr
Auftragsnr = TF_AuftragsNr
Liefertermin = TF_Liefer_Termin
artnr = CB_Art_Nr_eingeben '.Column(0)
ArtBez = TF_Artikel_Bez
Menge = TF_Menge
mgn_eht = TF_Mengeneinheit
'Spalten und Zeilen zaehlen:
spalten = temp_pos_auftrdaten.Columns.Count
Debug.Print "spalten: " & spalten
''ueberschreiben vorhandener Datensaetze vermeiden:
If zaehler = 0 Then
zeilen = temp_pos_auftrdaten.Rows.Count - 1 '+ 1
Else
zeilen = temp_pos_auftrdaten.Rows.Count
End If
'Tabelle bzw. pos_auftrdaten mit Daten füllen
With temp_pos_auftrdaten
Debug.Print "1.INFO: " & vbNewLine & _
"KdBestellNr: " & .Cells(zeilen, 1) & " TF_Pos: " & .Cells(zeilen, 2) & _
" artnr: " & .Cells(zeilen, 3) & " ArtBez: " & .Cells(zeilen, 4) & " Menge: " & .Cells(zeilen, 5) & _
" ME: " & .Cells(zeilen, 6) & " Liefertermin: " & .Cells(zeilen, 7)
'Kunden-Bestell-Nr.
.Cells(zeilen + 1, 1) = KdBestellNr
.Cells(zeilen + 1, 2) = TF_Pos
.Cells(zeilen + 1, 3) = artnr
.Cells(zeilen + 1, 4) = ArtBez
.Cells(zeilen + 1, 5) = Menge
.Cells(zeilen + 1, 6) = mgn_eht
.Cells(zeilen + 1, 7) = Liefertermin
Debug.Print "2.INFO: " & vbNewLine & _
"KdBestellNr: " & .Cells(zeilen + 1, 1) & " TF_Pos: " & .Cells(zeilen + 1, 2) & _
" artnr: " & .Cells(zeilen + 1, 3) & " ArtBez: " & .Cells(zeilen + 1, 4) & " Menge: " & .Cells(zeilen + 1, 5) & _
" ME: " & .Cells(zeilen + 1, 6) & " Liefertermin: " & .Cells(zeilen + 1, 7)
End With
''Range aktualisieren
''!!!!!!!!!!!!!!!!!!!!!!!!
ws_Temp_Auftrags_Pos_Liste.ListObjects("Temp_Auftr_Pos_Liste").Resize _
ws_Temp_Auftrags_Pos_Liste.Range(ws_Temp_Auftrags_Pos_Liste.Cells(1, 1), ws_Temp_Auftrags_Pos_Liste.Cells(zeilen + 2, spalten)) 'Schlaegt beim 3. Mal fehl!Set temp_pos_auftrdaten = Range("Temp_Auftr_Pos_Liste")
n = n + 1
'Kopfzeile:
'Listenfeld füllen:
'******************
With LF_Bestell_Liste
'Anzahl der Spalten festlegen
.ColumnCount = 5
'Spaltenabstände festlegen
.ColumnWidths = "30;50;80;140;50" 'Die erste Spalte wird mit Null ausgeblendet
'Überschrift anzeigen
.ColumnHeads = True
.RowSource = temp_pos_auftrdaten.Address 'filter_auftrdaten.Address 'pos_auftrdaten.Address '.End(xlUp) '.Column(1)
.Font.Size = 12
End With
zaehler = zaehler + 1
TF_Pos = TF_Pos + pos
End If
Set temp_pos_auftrdaten = Nothing
Exit Sub
Fehlende_Eingabe:
MsgBox "Es wurde keine " & text & " eingegeben!", vbCritical
End Sub
##########################################
LG,
sacoma