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