Übertragung von Importdaten funktioniert nicht
24.05.2018 07:22:37
Importdaten
Ziel:
ich habe mir ein kleines Haushaltsbuch gebastelt. Nun benutzen alle Teilnehmer eine APP die eine *.csv Datei exportieren kann und schicken diese am Ende des Monats zu mir. Der Import in meine kleine Exceldatenbank erfolgt via Makro und klappte auch bisher. Jetzt habe ich eine Doublettenprüfung eingebaut um zu vermeiden, dass Einträge doppelt vorkommen können.
Problem:
Gehe ich mit dem Debugger step by step durch, macht er auch alles so wie es sein soll. Weise ich einem Button nun dieses Makro zu, nehme die Breakpoints heraus und lasse ihn laufen, dann kopiert er mir doppelte Werte trotzdem wieder in Tabelle. Gehe ich also wieder in den Code und mache es wieder über step by step, erkennt er die Werte und löscht sie. Wie kann das sein?
Code:
Achtung er ist momentan noch nicht aufgeräumt.
Sub IMPORT_CSV()
Dim varFileToOpen As Variant
Dim lZeile As Long
Dim llZeile As Long
Dim dZeile As Long
Dim Monat As Double
Dim x, y As Integer
Dim m, n, o, p As String
lZeile = 2
llZeile = 2
dZeile = 2
x = 2
y = 2
o = 0
'CSV Datei importieren
varFileToOpen = Application.GetOpenFilename("C:\Users\o\Desktop\Haushaltsausgaben\ _
Importdateien\,")
If varFileToOpen = False Then Exit Sub
With Workbooks.Open(varFileToOpen, Local:=True)
.Worksheets(1).UsedRange.Copy Destination:=ThisWorkbook.Worksheets("Daten").Cells(33)
.Close SaveChanges:=False
End With
'Doublettenprüfung
Do While Trim(Tabelle11.Cells(y, 33)) ""
If o = 32 Then
Exit Do
Else
Select Case Cells(y, 37)
Case Is = "Gemeinsam"
Tabelle11.Cells(y, 37).Value = "x" 'Gemeinsam
Case Is = "Urlaub"
Tabelle11.Cells(y, 37).Value = "u" 'Urlaub
Case Is = "Einnahme"
Tabelle11.Cells(y, 37).Value = "e" 'Einnahme
End Select
Do While Trim(Tabelle11.Cells(x, 15)) ""
If Cells(y, 35) = Cells(x, 12) And Cells(y, 37) = Cells(x, 14) And Cells(y, 38) = Cells(x, _
_
15) Then 'Einname
Range("AG2:AP2").Delete
Exit Do
End If
If Cells(y, 35) = Cells(x, 13) And Cells(y, 37) = Cells(x, 14) And Cells(y, 38) = Cells(x, _
_
15) Then 'Ausgabe
Range("AG2:AP2").Delete
Exit Do
End If
x = x + 1
Loop
x = 2
Select Case Cells(y, 37)
Case Is = "x"
y = y + 1
Case Is = "u"
y = y + 1
Case Is = "e"
y = y + 1
End Select
End If
o = o + 1
Loop
'Daten der CSV Datei in die Datentabelle übernehmen
Do While Trim(CStr(Tabelle11.Cells(llZeile, 33).Value)) ""
Do While Trim(CStr(Tabelle11.Cells(lZeile, 15).Value)) ""
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
Tabelle11.Cells(lZeile, 11).Value = Tabelle11.Cells(llZeile, 42) 'Notizen
Select Case Tabelle11.Cells(llZeile, 35)
Case Is = 0
Tabelle11.Cells(lZeile, 12).Value = 0
Case Is = ""
Tabelle11.Cells(lZeile, 12).Value = ""
Case Is > 0
Tabelle11.Cells(lZeile, 12).Value = Tabelle11.Cells(llZeile, 35) 'Betrag Einnahme
Case Is