2016-10-08 1 views
0

Ich habe zwei Blätter (nennen sie eins und zwei). Ich möchte einen festen Bereich von Zellen von EINZ auf ein Ziel in ZWEI kopieren. Aber die Zieladresse in TWO ist ein String-Wert in einer festen Zelle in ONE.kopieren Sie Zellen von einem Blatt in ein anderes - wo die Zieladresse ist eine Zeichenfolge in einer Zelle

Zum Beispiel hat ONE! C37 einen String-Wert von "A1500". Und ich möchte Zellen von ONE! A32: ONE! W32 zu ZWEI! A1500 kopieren. Und wenn sich der Wert der Zeichenfolge in der Zelle ONE! C37 ändert, ändert sich auch das Ziel in TWO.

Muss einfach sein, aber ich kann nicht sehen, wie das geht. Jede Hilfe wird sehr geschätzt.

Antwort

0

Reich. Probieren Sie es aus:

Sub movetosheet2() 
Dim sheet_one_rng As Range: 
Dim sheet_two_rng As Range: 
Dim sheet_two_address As String: 

Set sheet_one_rng = Worksheets("Sheet1").Range("A1:B5") 
'Set the range from sheet 1 you'd like to copy onto sheet two 

sheet_two_address = Worksheets("Sheet1").Range("D1").Value 
'Supposing your location of "A1500" is stored in cell D1 on Sheet1 
'Note that the value of the D1 cell needs to be A1500:A1500 
'and NOT just A1500 
'You are essentially generating a string to pass into a range argument 

'Set the destination range on Sheet 2 using your string 

Set sheet_two_rng = Worksheets("Sheet2").Range(sheet_two_address) 
'Use the Range.Copy method 
sheet_one_rng.Copy Destination:=sheet_two_rng 

End Sub 

Hoffe, dass hilft!

+0

dies in der scheitert Das gleiche war der Code, der von user3598756 unten zur Verfügung gestellt wurde. Seht meine Erklärung zu ihm. Zusammengefasst stammen die kopierten Quellzellen aus dem Zielblatt, nicht aus dem Quellblatt und aus der falschen Spalte und falschen Zeilen. – rich

+0

Danke - ich glaube, ich kenne das Problem. Die Zellen A32: W32 sind verknüpft mit und erhalten ihre Werte aus einem vertikalen Bereich von Zellen darüber. zum Beispiel hat die Zelle A32 die Formel "= C4". Also muss ich mit einem TRANSPOSE kopieren. Die Werte, die ich zum Ziel kopieren muss, sind in einer vertikalen Reihe von Zellen (C4: C27). Und sie sollen in eine horizontale Reihe von Zellen kopiert werden. und ich würde nur Zellenwerte kopieren und nicht formatieren – rich

+0

Klingt, als ob Sie es herausgefunden haben, basierend auf Ihren Kommentaren zu user3598756, froh zu hören – kpg987

0

unter dem Code Versuche:

Sub CopyRange() 

Dim RngSource   As Range 
Dim RngDest    As Range 
Dim DestString   As String 


' set source range from sheet "ONE" 
Set RngSource = Sheets("ONE").Range("A32:W32") 

' read destination range from cell "A37" in sheet "ONE" 
DestString = Sheets("ONE").Range("A37").Value 

' set destination range from sheet "TWO" 
Set RngDest = Sheets("TWO").Range(DestString) 

' copy from Sheet "ONE" to Sheet "TWO" 
RngSource.Copy Destination:=RngDest 

End Sub 
0

Sie benötigen nur eine Zeile:

Worksheets("ONE").Range("A32:W32").Copy Destination:=Worksheets("TWO").Range(Worksheets("ONE").Range("C37").Value) 

oder With-End With Block zu verwenden und einige Wiederholungen vermeiden:

With Worksheets("ONE") 
    .Range("A32:W32").Copy Destination:=Worksheets("TWO").Range(.Range("C37").Value) 
End With 
+0

Danke, aber das tut einige sehr seltsame Transposition - und verwendet die falschen Quellzellen. • \t Die Zeichenfolge in Zelle C37 ist "A1877", so dass Zellen A32: W32 in Zeile 1877 in diesem anderen Blatt kopiert werden sollen. • \t Tatsächlich werden jedoch falsche Quellzellen in diese Zielzeile kopiert. Die kopierten Quellzellen stammen nicht vom aktuellen Blatt ("ONE"), sondern werden von der falschen Stelle im Zielblatt kopiert. Die eigentlichen Quellzellen stammen aus "ZWEI! C1848: 1871" ... Damit kopiert der Code die falschen Quellzellen aus dem falschen Quellblatt. Aber die Zielzeile ist korrekt. – rich

+0

Danke - ich denke, ich kenne das Problem. Die Zellen A32: W32 sind verknüpft mit und erhalten ihre Werte aus einem vertikalen Bereich von Zellen darüber. zum Beispiel hat die Zelle A32 die Formel "= C4". Also muss ich mit einem TRANSPOSE kopieren. Die Werte, die ich zum Ziel kopieren muss, sind in einer vertikalen Reihe von Zellen (C4: C27). Und sie sollen in eine horizontale Reihe von Zellen kopiert werden. und ich möchte nur Zellenwerte kopieren und nicht formatieren. – rich

+0

Also, da mein Code genau das tut, was Sie in Ihrer Frage verlangt haben, haben Sie das mit den neuen Umständen, über die Sie in Ihrem Kommentar geschrieben haben, überstanden? – user3598756

Verwandte Themen