2016-07-05 20 views
0

http://i.stack.imgur.com/93bt7.pngKopieren Einfügen Bereich unterschiedlicher Länge mit VBA

Hallo,

Ich versuche, mit einem Code zu arbeiten, die ich gemacht habe, aber einige Probleme habe.

Wenn Sie sich mein Foto oben ansehen, habe ich in Zelle B3 eine CUSIP. Was ich tun möchte, ist kopieren Sie diese CUSIP und fügen Sie es in jeder Reihe von Informationen für diese CUSIP (so Zeilen A4 bis A8). Dann möchte ich zum zweiten CUSIP in J3 wechseln (die CUSIPS sind alle in Reihe 3 und 8 Spalten auseinander) und dann den CUSIP in den Zeilen J4 bis J35 einfügen.

Ich möchte dies immer wieder für 1000 Wertpapiere tun, aber das Problem ist, dass die Zeilen in der Länge unterscheiden.

Mein Code funktioniert, bis ich zu dem letzten Stück Code komme, den ich als Kommentar eingefügt habe. Es funktioniert, ist aber statisch. Läuft nur von der 1. zur 2. Sicherheit, dann scheitert es. Ich versuche mir einen dynamischen Weg vorzustellen, wie ich mich jedes Mal von der Zelle, in die der CUSIP zuletzt eingefügt wurde, in die dritte Zeile und die entsprechende Spalte bewegen kann (die Spalte wird jedes Mal 9 von der letzten eingefügten Zelle entfernt sein).

Hier ist sie:

Sub CUSIP_Copy_Paste() 

Dim LastRow As Long 
Dim LastCol As Long 
Dim c As Long 
Dim r As Long 

Range("B3").Select 

    LastCol = Cells(4, Columns.Count).End(xlToLeft).column 

For c = 2 To LastCol Step 8 

    LastRow = Cells(Rows.Count, c).End(xlUp).row 

     ActiveCell.Copy 

     Cells(4, ActiveCell.Offset(1, -1).column).PasteSpecial xlPasteValues 

For r = 5 To LastRow 

    Cells(r, ActiveCell.Offset(1, 0).column).PasteSpecial xlPasteValues 

Next r 

    ''''''ActiveCell.Offset(-5, 9).Select 

Next c 

End Sub 

Dank!

Antwort

1

Ihr Fehler liegt im endgültigen Offset. Geben Sie anstelle von -5 eine Variable ein, vorzugsweise die Variable, die die Differenz zwischen dem Ende der Zeilenanzahl und dem Anfang darstellt, also immer 3.

Das heißt, Offset (3 - lastRow, 9)

Sie hatten es fast friendo :)

+0

Ich habe es! Vielen Dank! – markos

+0

Ich habe ein anderes Problem, bei dem Sie möglicherweise helfen können. Ich habe drei separate Makros, die ich zu einem Makro kombinieren möchte, indem ich jedes einzelne Makro aufruft. Außerdem möchte ich, dass es vor jedem Lauf Pausen gibt (es gibt BBRG-Daten, die ich komplett auffrischen möchte). Es scheint jedoch nicht zu funktionieren. – markos

+0

Dies ist mein Code: – markos

Verwandte Themen