2016-11-30 87 views
0

我想複製一系列表並將其粘貼到一個新的工作簿中。我想複製由其他列和行組成的範圍,但是作爲變量。例如,我複製列C和E,行數從1到17,20,從32到39和45.我想最多進行10次(對於列),如果我完成選擇要複製的列,我退出。爲了更加清楚,有一個例子:我選擇列B,D,F並選擇要複製的行(對於所有列它們是相同的),最後複製它們並將它們粘貼到新的工作簿中。所以我在三次後停下來,複製我選擇和出去的東西。VBA - 運行時錯誤1004'應用程序定義或對象定義'

我的代碼:

Sub Macro33() 
Dim col As String, row As String 
'Dim row As Integer 
Dim CopyRange As Range 
Set CopyRange = [A:A] 

    For i = 1 To 10 
    col = InputBox("Column number " & i & ", if finish write 'done'") 
    If col = "done" Then 
     MsgBox ("copy finished") 
     GoTo ExitIteration 
    Else 
     row = InputBox("row number to copy (max to 62), if finish write 'done'") 
     Do While row <> "done" 
     Set CopyRange = Union(CopyRange, Range(col & row & ":" & col & row)) 
     row = InputBox("row number to copy (max to 62), if finish write 'done'") 
     Loop 
    End If 
    Next 

ExitIteration: 
    CopyRange.copy 
    Workbooks.Add 
    ActiveSheet.Paste 
    Windows("Pedro.xlsm").Activate 
End Sub 

的問題是在線路:

Set CopyRange = Union(CopyRange, Range(col & row & ":" & col & row)) 

我總是得到應用程序定義或對象定義的錯誤(錯誤1004),並不能找到任何解決方案! 請幫忙嗎?

+1

什麼是當錯誤引發col'的'值和'row'?我認爲它看起來像是分配這些長/整數值,並且這將導致無效的範圍地址字符串('col&row&「:」&col&row') –

+2

您確定這是正確的錯誤行嗎?我在'CopyRange.Copy'上得到了1004,因爲它不能用於多個選擇。另外,'row'和'col'總是相同的,所以你最終會得到像'「B2:B2」'這樣的範圍。 – Comintern

回答

0

聯盟只能加入兩個或更多的範圍。在您的第一次通過CopyRange將是沒有什麼,所以聯合方法將失敗。

嘗試類似:

If copyrange Is Nothing Then 
    Set copyrange = Range(col & Row & ":" & col & Row) 
Else 
    Set copyrange = Union(copyrange, Range(col & Row & ":" & col & Row)) 
End If 
+3

在第一遍中,'copyRange'是列A,如下所示:'Set CopyRange = [A:A]' –

+0

我刪除了set copyRange = [A:A],並嘗試它作爲Darren提及它,現在它可以工作但只是一個小參數!我不能採取很多列和行 – Zigouma

+0

我的錯誤 - 我確實發現了這一點,並認爲我已經刪除了我的答案,但認爲我正在編輯它以解釋另一個被刪除的答案,指出@DavidZemens在他的評論中指出的東西。我會穿上我的外套:) –

相關問題