aus einem Anwenderprogramm exportiere ich nach Auswertungslauf eine csv-Datei und speichere sie als xlsx-Datei. Die Datei kann mehrere hundert Datensätze enthalten.
Hieraus will ich per VBA ausgewählte Daten auslesen und in eine Berichtsdatei einlesen.
Dazu verwende ich folgenden Code:
Sub WerteFinden()
Application.ScreenUpdating=False
Set wb2=Workbooks.Open("C:\Berichte\AP.xlsx")
Set ws1=wb1.Sheets("Tabelle1")
Set ws2=wb2.Sheets("ABLstEin")
For i= "" & a & "" To "" & b & ""
Such = ws1.Range("A" & i).Value
Dim rngBereich As Range
Dim rngFund As Range
Set rngBereich = ws2.Range("D:D")
Set rngFund = rngBereich.Find(what:=Such, LookIn:=xlValues, LookAt:=xlWhole)
On Error Resume Next
rngFund.Activate
ActiveCell.Offset(0, 11).Select
ws2.Range("AO" & i) = Selection.Value
rngFund.Activate
If ActiveCell.Offset(0, 15).Value="H" Then ' "H" steht für eine Haben-Buchung
ActiveCell.Offset(0, 14).Select
ws2.Range("AP" & i)=Selection.Value * -1
Else
ActiveCell.Offset(0, 14).Select
ws2.Range("AP" & i)=Selection.Value
End If
ws1.Range("C" & i)=ws2.Range("AO" & i).Value
ws1.Range("D" & i)=ws2.Range("AP" & i).Value
Next i
MsgBox ("Auswertung ist fertig!")
wb2.Save
wb2.Close
Application.ScreenUpdating=True
End Sub
Der Code funktioniert. Allerdings sehe ich mich maximal als fortgeschrittener Anfänger in VBA und suche nach einer Code-Verbesserung, mindestens der Zeilen zwischen den Markierungen.Kann jemand helfen?
Grüße
Daniel B.