2013-02-04 56 views
0

我做一些VBA代碼來幫我做下將其粘貼到另一個工作表:VBA:通過名爲範圍的列表循環和基於地址的參考

通過粘貼所有命名範圍的列表 循環基於該列表 的名單和複製/選擇範圍每個選擇都會給出具有一定的地址引用來自該地址的偏移另一片粘貼

我非常新的VBA,所以我已經把一些代碼,我認爲會做的伎倆,但我得到運行時錯誤。有人可以幫我排除故障或提供建議嗎?

我的代碼是在這裏:

Sub RangeLoop() 

Sheets("RANGEMATCH").Select 
Range("A1").ListNames 

Dim columnrange As Range 
Dim m As Long 
Dim address As Range 

Set columnrange = Sheets("RANGEMATCH").Range("A:A").SpecialCells(xlConstants) 

With columnrange 
    For m = 1 To columnrange.Areas.Count 
     Set address = Sheets("RANGEMATCH").Range(.Areas(m).Cells(1, 7).Value) 
     Range(m).Copy Sheets("ETIE").Range(address.Offset(1, 10)) 
    Next 
End With 

End Sub 

以下是我與工作的一個例子的工作簿:

https://docs.google.com/spreadsheet/ccc?key=0AodOP_8DnJnFdHJoQ0xBM3JUUGJxT3EyRXN0T2ltUmc&usp=sharing

任何建議表示讚賞。

+2

您可能會受益於這兩個技巧:使用'選項Explicit' - [見TLiebe的答案](http://stackoverflow.com/questions/2454552/whats-an-option-strict-and-explicit)和[避免使用'Select'](包括http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) - 包括避免使用'Activate' – JustinJDavies

+0

此外,您可能想告訴我們錯誤是什麼,以及它是哪一行。 – Larry

+0

錯誤顯示在此行上: 範圍(m).Copy表(「ETIE」)。範圍(address.Offset(1,10)) – eMTy

回答

0

Range()函數需要一個字符串變量。範圍的名稱或單元格引用,如「A1」

Range(m).Copy Sheets("ETIE").Range(address.Offset(1, 10)) 

m是一個數字,因此不起作用。你需要引用你想要複製的東西。我認爲這可能只是你前行設定address對象:

address.Copy Sheets("ETIE").Range(address.Offset(1, 10)) 
+0

感謝您的回覆。這個建議很好,但它在這裏幫不了我。 地址變量是我要粘貼我的範圍的目的地...地址設置爲一個具有多個單元格座標的列。 範圍(m)是我如何識別/拉入我創建的命名範圍。 我基本上有一個2列表,其中一個帶有命名範圍,右邊的幾個單元格是這些範圍應該粘貼的目標地址列表。我想要這個循環沿着第一個列表(帶有範圍)並拉入,同時沿着第二個列表(地址)走下去並使用它們 – eMTy

+0

有沒有人有任何其他建議可以提供所需的信息進入代碼?我所需要的只是如何引用單元格值作爲命名範圍的名稱,然後使用另一個單元格值作爲另一個表單上粘貼該範圍的地址。會是一個巨大的幫助。謝謝! – eMTy

+0

範圍是否超過一個單元格?如果沒有,則可以使用'表格(「目的地」)。範圍(表格(「原始」)。範圍(「地址」))=表格(「原始」)。範圍(「值」)' –