Hallo liebe VBA Profis,
ich versuche ein Makro zu schreiben, welches eine weitere Zeile einfügt, solange in der vorherigen Zeile noch ein Wert berechnet wird. Dies ist mir so weit auch schon gelungen, allerdings kann es sein, dass bis zu 1000 weitere Zeilen eingefügt werden, weshalb meine derzeitige Vorgehensweise äußerst ineffizient ist. Ziel ist es, die folgenden If-Funktionen im Code über einen Loop darzustellen und mir 1000 weitere manuell geschriebene If-Funktionen zu sparen. Zum besseren Verständnis, was der Loop machen soll, habe ich die If-Funktionen 4 mal wiederholt. Kann mir jemand weiterhelfen?
Besten Dank,
Marvin
Private Sub Button_Ok_Click()
'Eingabe in die Arbeitsmappe übernehmen
'Arbeitsmappe leeren
Range("A:A").Select
Selection.ClearContents
Rows("3:3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveSheet.Cells(2, 1).Value = Eingabefenster.TextBox_CS_Auftrag.Value
ActiveSheet.Cells(1, 1).Value = Eingabefenster.TextBox_CS_Auftrag.Value
ActiveSheet.Calculate
' wenn im feld Datum was drinsteht (also Spalte Q = True), dann eine extra Zeile nach unten einfügen
If ActiveSheet.Cells(2, 17) = True Then
ActiveSheet.Range("A2:Q2").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:Q3"), Type:=xlFillDefault
ActiveSheet.Range("A2:Q3").Select
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A3"), Type:=xlFillDefault
Else
End If
If ActiveSheet.Cells(3, 17) = True Then
ActiveSheet.Range("A2:Q2").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:Q4"), Type:=xlFillDefault
ActiveSheet.Range("A2:Q4").Select
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A4"), Type:=xlFillDefault
Else
End If
If ActiveSheet.Cells(4, 17) = True Then
ActiveSheet.Range("A2:Q2").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:Q5"), Type:=xlFillDefault
ActiveSheet.Range("A2:Q5").Select
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A5"), Type:=xlFillDefault
Else
End If
If ActiveSheet.Cells(5, 17) = True Then
ActiveSheet.Range("A2:Q2").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:Q6"), Type:=xlFillDefault
ActiveSheet.Range("A2:Q6").Select
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A6"), Type:=xlFillDefault
Else
End If
Unload Eingabefenster
End Sub
|