2017-08-22 1 views
0

Ich habe ein Problem mit dem Erstellen mehrerer/verschachtelte Schleifen. Ich könnte einen Code-Block schreiben und ihn jedes Mal 17-mal mit leichten Änderungen wiederholen, aber ich versuche das zu vermeiden.Mehrere Schleifen in Excel VBA

Mein Code sieht wie folgt aus und alles andere ist in Ordnung, außer den Abschnitten gegen Ende, wo ich 'Loop benötigt' hinzugefügt habe.

Also im Grunde sollte die Schleife "AJ2, AK2, ..., AZ2" und "1, 2, ..., 17" enthalten.

Jede Hilfe wird sehr geschätzt. Ich habe seit Wochen damit zu kämpfen.

Sub Test() 

Worksheets("SheetName").Activate 
Range("A1").CurrentRegion.Copy 
Worksheets("NewSheet").Activate 

Range("A1").PasteSpecial 
Range("A1").PasteSpecial xlPasteColumnWidths 

Dim c As Range 
Dim col1 As Range 
Dim j As Integer 
Dim Source As Worksheet 
Dim Target As Worksheet 
Dim lastrow As Long 

Set Source = ActiveWorkbook.Worksheets("SheetName") 
Set Target = ActiveWorkbook.Worksheets("NewSheet") 
Set col1 = Source.Range("SheetName[Col]") 

j = 2  

For Each c In col1 
    If c >= Range("AJ2") Then 'loop needed with "AJ2" 
     Source.Range("A" & c.Row & ":BN" & c.Row).Copy 
     Target.Range("A" & Range("E65536").End(xlUp).Row + 1).PasteSpecial xlPasteValues 
     Target.Range("BO" & Rows.Count).End(xlUp).Value = DateAdd("m", 1, Range("BO2").Value) 'loop needed with 1 
     j = Range("A65536").End(xlUp).Row + 1 
    End If 
Next c 

For Each c In col1 
    If c >= Range("AK2") Then 'loop needed with "AK2" 
     Source.Range("A" & c.Row & ":BN" & c.Row).Copy 
     Target.Range("A" & Range("E65536").End(xlUp).Row + 1).PasteSpecial xlPasteValues 
     Target.Range("BO" & Rows.Count).End(xlUp).Value = DateAdd("m", 2, Range("BO2").Value) 'loop needed with 2 
     j = Range("A65536").End(xlUp).Row + 1 
    End If 
Next c 

End Sub 
+0

Schreiben Sie eine * Funktion *, die 'Range (" AJ2 ")' & c. als * Parameter * – Bathsheba

Antwort

0

Versuchen cells([rownumber], [columnnumber]) statt Referenzierung Bereich von Namen. Auf diese Weise können Sie einfach eine Schleife mit steigenden Zahlen anstelle von Text erstellen.