HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Excel gut - VBA gut
Alwin Weisangler
25.04.2026 11:49:22
AW: Fehlersuche Datenverlust
da hatte ich noch den Fall leeres Listobjekt übersehen.
korrigiert so:


Sub buchungen(strA As String, strB As String, strC As String, intNum As Integer)

Dim tbl As ListObject
Dim dblP As Double, arr(), iz&
Dim filepath As String, csvLine As String, logFile As Integer

If InStr(1, strC, "0,33") > 0 Then
dblP = 1
ElseIf InStr(1, strC, "0,5") > 0 Then
dblP = 1.25
Else
dblP = 0.75
End If
'Tabelle einlesen
Set tbl = Tabelle3.ListObjects(1)
iz = 1
If Not tbl.DataBodyRange Is Nothing Then iz = tbl.DataBodyRange.Rows.Count + 1
arr = Array(iz, Date, strA, strB, strC, intNum, dblP, intNum * dblP)
tbl.ListRows.Add.Range.Resize(1, 8) = arr

' Logfile (CSV-Datei) als Backup ergänzen
filepath = "C:\Users\Logfile.csv"

' CSV-Zeile vorbereiten
csvLine = Date & ";" & strA & ";" & strB & ";" & strC & ";" & intNum * dblP
' CSV-Datei öffnen und neue Zeile anfügen
logFile = FreeFile
Open filepath For Append As logFile
Print #logFile, csvLine
Close logFile

End Sub


Gruß Uwe
Als Antwort auf diesen Beitrag
Alwin Weisangler
25.04.2026 11:21:08
AW: Fehlersuche Datenverlust
Hallo emkaes,

da ist am Code erst mal nichts was so ein Problem verusachen könnte.
Aber aus der Ferne 2 Gedanken.
1. Gedanke: es wurde in Tabelle 3 nachträglich händisch gelöscht.
2. Gedanke: Es enstehen aus einer anderen Ecke deines Projektes doppelte Aufrufe dieser Prozedur.
Der 2. Gedanke hätte aber auch zur Folge, dass dann händisch aus der Tabelle3 der jeweilige doppelte Eintrag entfernt wurde.

Anbei mal noch ein Gedanke/Änderung zum Schreiben in eine neue Zeile via Array in einen Rutsch.


Sub buchungen(strA As String, strB As String, strC As String, intNum As Integer)

Dim tbl As ListObject
Dim dblP As Double, arr()
Dim filepath As String, csvLine As String, logFile As Integer

If InStr(1, strC, "0,33") > 0 Then
dblP = 1
ElseIf InStr(1, strC, "0,5") > 0 Then
dblP = 1.25
Else
dblP = 0.75
End If

'Tabelle einlesen
With Tabelle3
Set tbl = .ListObjects(1)
arr = Array(tbl.DataBodyRange.Rows.Count, Date, strA, strB, strC, intNum, dblP, intNum * dblP)
tbl.ListRows.Add.Range.Resize(1, 8) = arr
End With

' Logfile (CSV-Datei) als Backup ergänzen
filepath = "C:\Users\Logfile.csv"

' CSV-Zeile vorbereiten
csvLine = Date & ";" & strA & ";" & strB & ";" & strC & ";" & intNum * dblP
' CSV-Datei öffnen und neue Zeile anfügen
logFile = FreeFile
Open filepath For Append As logFile
Print #logFile, csvLine
Close logFile

End Sub


Gruß Uwe

Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.