2016-01-11 182 views
0

我試圖將8 x 1範圍的值存儲到相同維度的範圍內,但在工作簿中的另一張表上。這很容易,只不過我的腳本在這些相同尺寸的不同範圍內循環,我需要將它們全部存儲在第二張紙上。目前我的代碼看起來是這樣的:使用變量來定義範圍

Sheets("Sheet1").Range(Cells(i, 2), Cells(i + 7, 2)).Value = Sheets("Sheet2").Range("OriginalData").Value 

其中「i」是用作循環迭代變量之中。

此代碼拋出錯誤「錯誤1004」應用程序定義或對象定義的錯誤「」。有人能解釋我做錯了什麼,以及如何以這種方式動態地正確定義範圍對象?

+0

我不認爲這是您鏈接到的問題的重複,因爲這裏的核心問題是動態定義目標範圍,而不是從不活動的工作表複製。 – Phil

+0

也許不是;也許是[這個類似的答案]的副本(http://stackoverflow.com/questions/27763089/count-the-number-of-rows-in-another-sheet/27763394#27763394)。 – Jeeped

+0

是的,答案可以解決這個問題......但是當問題不同時很難找到答案! – Phil

回答

2

你的問題是,Sheets("Sheet1").RangeCells不知道他們應該屬於Sheets("Sheet1")

with Sheets("Sheet1") 
    .Range(.Cells(i, 2), .Cells(i + 7, 2)) = _ 
     Sheets("Sheet2").Range("OriginalData").Value 
end with 

'alternate 
Sheets("Sheet1").Range("B" & i).Resize(8, 1) = _ 
     Sheets("Sheet2").Range("OriginalData").Value 

With ... End With statement允許你父表明確地傳遞到兩個.Range.Cells的前綴期間(又名句號)。

+0

謝謝!我選擇了替代選項,因爲它代碼少,而且這個東西已經太長了。它的工作原理與我需要的完全一樣。 – Phil

-1

將複製和粘貼工作?我不確定數據的具體情況,但看起來像複製和粘貼會更好。

所以像

Sheets("Sheet1").Range("x:x").Copy Sheets("Sheet2").Range("x:x") 
+0

是的,複製/粘貼工作正常,但源數據單元格是公式,我正在使用特殊粘貼來獲取值。由於此腳本有時可能需要很長時間才能運行,因此我希望儘可能節省時間。我被告知我試圖使用的方法更高效。 – Phil