2017-02-07 2 views
0

Kann mir jemand helfen, diesen Code zu ändern, damit er auf die Daten in Zelle A6 verweisen und in das nach diesen Daten benannte Blatt einfügen kann.VBA-Code zum Referenzieren der Zelle als Name beim Auswählen des Einfügezielarbeitsblatts

Ich habe bereits ein funktionierendes Makro zum Einfügen von Daten aus einem Deckblatt in einzelne Arbeitsblätter, jeden Tag, und ohne zuvor besetzte Zellen zu überschreiben (siehe unten).

Das Problem ist, dass der Code zu spezifisch ist und nicht leicht manipuliert werden kann, wenn neue Zeilen in das Deckblatt "Balancer" eingeführt werden. Hier ist ein Beispiel für den aktuellen Code:

Sub pastetosheet() 

r = 1 
Sheets("Balancer").Range("B2").Copy 
Sheets("X9X9USDFEDT6").Range("C35").End(xlUp).Offset(r, 0).PasteSpecial _ 
    paste:=xlPasteValues 
Application.CutCopyMode = False 
Sheets("Balancer").Range("D2").Copy 
Sheets("X9X9USDFEDT6").Range("D35").End(xlUp).Offset(r, 0).PasteSpecial _ 
    paste:=xlPasteValues 
Application.CutCopyMode = False 
Sheets("Balancer").Range("F2").Copy 
Sheets("X9X9USDFEDT6").Range("F35").End(xlUp).Offset(r, 0).PasteSpecial _ 
    paste:=xlPasteValues 
Application.CutCopyMode = False 
Sheets("Balancer").Range("G2").Copy 
Sheets("X9X9USDFEDT6").Range("H35").End(xlUp).Offset(r, 0).PasteSpecial _ 
    paste:=xlPasteValues 
Application.CutCopyMode = False 
End Sub 

ich den Code will Daten im Bereich „B6“ auf den „Balancer“ Register kopieren, verweist dann die Daten in der Zelle nach links (A6 in diesem Fall) um herauszufinden, auf welches Blatt es eingefügt werden soll. Verwenden Sie dann die bereits eingefügten Einfügeregeln aus dem aktuellen Code.

+0

So wird jede Zelle von Spalte 'A' Namen ein anderes Blatt. oder nur "A6" hat den Namen des Zielblatts? –

+0

Jede Zelle in Spalte A ist nach einem anderen Blatt benannt, in das die Daten in den Spalten B, D, F, G eingefügt werden müssen. –

Antwort

1

Wenn jede Zeile in der Spalte sein eigenes Ziel Blatt gibt A, sollte dies tun:

Sub pasteToSheetOfA() 
    Dim r As Long, t As Range 
    With Sheets("Balancer") 
     For r = 1 To .Range("B1000000").End(xlUp).Row ' for all rows of column B 

      ' get the target sheet specified in column A, goto beyond last cell in C of this sheet 
      Set t = Sheets(.Range("A" & r).value).Range("C1000000").End(xlUp).Offset(1) 

      ' now copy the cells of the row according to the rules of the OP 
      t.value = .Cells(r, "B").value 
      t.Offset(,1).value = .Cells(r, "D").value 
      t.Offset(,3).value = .Cells(r, "F").value 
      t.Offset(,5).value = .Cells(r, "G").value 
     Next 
    End With 
End Sub 
+0

Netter Code, aber fügen Sie einige Erklärungen und Kommentare zu Ihrem Code hinzu (Sie erinnern sich, dass Leute, die hier Hilfe suchen, keine VBA-Experten sind) –

+0

@Shairado Sie haben recht, ich bin ein bisschen faul vielleicht, aber ich warte auf die Kommentare vom OP, Erklärungen entsprechend hinzuzufügen :) –

+0

Ich fügte etwas Erklärung hinzu. –

Verwandte Themen