Excel VBA-如何从定义的范围中选择多个整列? 我想做的是:

Excel VBA-如何从定义的范围中选择多个整列? 我想做的是:,vba,excel,excel-2010,Vba,Excel,Excel 2010,我试图根据标题仅复制电子表格中的某些列。我尝试一次复制多个列,而不是循环分别复制每个列 到目前为止,我所拥有的: 问题是: 似乎包含以下代码行: .Range(PRIhead, LOGhead, TYPEhead, CALLhead, DEShead, IPKhead).EntireColumn.Copy 我的资料来源: 我用公认的答案把我的一行代码放在一起 跟进评论 问题的原因是Range(cell1[cell2])对象只能接受2个单元格作为参数 所以你需要使用 wb.Application

我试图根据标题仅复制电子表格中的某些列。我尝试一次复制多个列,而不是循环分别复制每个列

到目前为止,我所拥有的: 问题是: 似乎包含以下代码行:

.Range(PRIhead, LOGhead, TYPEhead, CALLhead, DEShead, IPKhead).EntireColumn.Copy
我的资料来源:
我用公认的答案把我的一行代码放在一起

跟进评论

问题的原因是
Range(cell1[cell2])
对象只能接受2个单元格作为参数

所以你需要使用

wb.Application.Union(PRIhead, LOGhead, TYPEhead, CALLhead, DEShead, IPKhead).EntireColumn.Copy

我使用了
wb.Application.Union
,因为(作为评论的后续内容),工作簿
wb
是另一个应用程序对象的一部分。

您能确认找到了所有的头吗?是的,在调试期间,我可以看到找到了所有的头。这是我的第一个想法。我得到的错误是
参数数量错误或无效的属性分配
奇怪..它对我有效..尝试以下操作:
.Range(PRIhead.Address&“,”&LOGhead.Address&“,”&TYPEhead.Address&“,”&CALLhead.Address&“,”&DEShead.Address&“,“&IPKhead.Address&“).entireclumn>-它有效吗?不完全有效,
wb
是工作簿对象,您需要应用程序对象。试试这个:
wb.Application.Union(PRIhead、LOGhead、TYPEhead、CALLhead、DEShead、IPKhead)。entireclumn.Copy
这就成功了!
wb.Application.Union(PRIhead, LOGhead, TYPEhead, CALLhead, DEShead, IPKhead).EntireColumn.Copy