Excel VBA – 如何从定义的范围中select多个整列?

我在做什么:

我试图从基于标题的电子表格中只复制某些列。 而不是单独循环复制每一列,我试图一次复制一些列。

我到目前为止:

With wb.Worksheets("Sheet1") Set lasthead1 = .Range("1:1").Find(What:="*", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious) Set headrng1 = .Range("A1", lasthead1) For Each c In headrng1 If Left(c, 1) = "-" Then c = Mid(c, 2, Len(c) - 1) If Left(c, 1) = "+" Then c = Mid(c, 2, Len(c) - 1) Next c Set PRIhead = headrng1.Find(What:="Priority", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) Set LOGhead = headrng1.Find(What:="Log Date", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) Set TYPEhead = headrng1.Find(What:="Type", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) Set CALLhead = headrng1.Find(What:="Call Status", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) Set DEShead = headrng1.Find(What:="Description", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) Set IPKhead = headrng1.Find(What:="IPK Status", LookAt:=xlPart, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlNext) .Range(PRIhead, LOGhead, TYPEhead, CALLhead, DEShead, IPKhead).EntireColumn.Copy End With 

问题:

似乎是与下面的代码行:

 .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是另一个应用程序对象的一部分。