2016-11-30 119 views
0

我要复制一个范围表并将其粘贴在一个新的工作簿的变量。我想复制由其他列和行组成的范围,但是作为变量。例如,我复制列C和E,行数从1到17,20,从32到39和45.我想最多进行10次(对于列),如果我完成选择要复制的列,我退出。更清楚的是,有一个例子:我选择列B,D,F,然后选择要复制的行(对于所有列它们是相同的),最后将它们复制并粘贴到新的工作簿中。所以我在三次之后停下来,复制我选择并出去的东西。VBA使用范围与列和行

我的代码

Sub Macro3() 

Dim ColNum As Long 
Dim col As String 
Dim CopyRange As Range, row As String 

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

ExitIteration: 

CopyRange.Copy 
Workbooks.Add 
ActiveSheet.Paste 
Windows("Pedro.xlsm").Activate 

End Sub 

任何帮助,请解决它?

+0

你会不会让过去的那一刻'做,而第一行<>“完成”'因为他们输入的东西比“做”等,它只会循环回'InputBox'每次每一次。 –

+0

那么让我的代码工作的解决方案是什么? – Zigouma

+0

这不就是你刚才提出的问题吗?见http://stackoverflow.com/questions/40806057/vba-copy-selected-columns-and-rows-from-an-excel-table-and-convert-paste-it-in-a?noredirect=1#comment68833714_40806057 –

回答

0

你不等待“完成”做你的圈里的任何东西拆开来输入。

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

我总是得到应用程序定义或对象定义的错误(错误1004) – Zigouma

+0

这个错误出现在//设置copyRange是=联盟的步骤(copyRange是,范围(col&row,[col&row])) – Zigouma

0

我没有时间写代码,并为我的想法做一个例子,对不起。但我会尽力揭露它...

创建一个新表与德初始/最终列和行养活你的代码,并组成一个不同的范围,以实现自己进行10次最大的愿望。使用三级循环来达到你需要的细胞。

+0

okey我会尽量自己做!感谢提兰。 – Zigouma