Excel 对象“\u Global”的方法“Range”在选择范围时失败错误VBA

Excel 对象“\u Global”的方法“Range”在选择范围时失败错误VBA,excel,vba,Excel,Vba,因此,我使用这个宏只提取执行回归所需的数据,样本集包含了大量无用的信息。当我尝试从CCDetail工作簿中选择列时-我得到对象“\u Global”的“Range”失败错误。你知道为什么会这样吗 Sub ExtractCCDetail() Dim WorkbookName As String Dim CCDetail As Workbook Dim Harvester As Workbook Dim RAWData As Worksheet Set CCDetail = Workbooks(2

因此,我使用这个宏只提取执行回归所需的数据,样本集包含了大量无用的信息。当我尝试从CCDetail工作簿中选择列时-我得到对象“\u Global”的“Range”失败错误。你知道为什么会这样吗

Sub ExtractCCDetail()

Dim WorkbookName As String
Dim CCDetail As Workbook
Dim Harvester As Workbook
Dim RAWData As Worksheet
Set CCDetail = Workbooks(2)
Set Harvester = ThisWorkbook

WorkbookName = CCDetail.Name
CCDetail.Activate
Set RAWData = Worksheets("Department Totals")
RAWData.Select
    'This is where the code will break
    Range( _
        "D:D,E:E,F:F,M:M,X:X,Y:Y,Z:Z,AA:AA,AC:AC,AD:AD,AE:AE,AF:AF,BD:BD,BF:BF," _
        ).Select
        Selection.Copy
    Harvester.Activate
    Sheets.Add After:=Sheets(Worksheets.Count), Count:=1
    ActiveSheet.Name = WorkbookName
    ActiveSheet.Paste
End Sub
*顺便说一下,我已经测试过手动操作,没有问题。我也试过打电话

ActiveSheet.Range需要范围

RAWData.范围需要范围


但这两种方法都不起作用

问题是您的范围的参数中有一个额外的逗号。请尝试以下方法:

Range("D:D,E:E,F:F,M:M,X:X,Y:Y,Z:Z,AA:AA,AC:AC,AD:AD,AE:AE,AF:AF,BD:BD,BF:BF").Copy
如果您想稍微清理一下代码并避免选择等,请尝试以下方法:

Sub ExtractCCDetail()

Dim WorkbookName As String
Dim CCDetail As Workbook
Dim Harvester As Workbook
Dim RAWData As Worksheet

Set CCDetail = Workbooks(2)
Set Harvester = ThisWorkbook

WorkbookName = CCDetail.Name

Set RAWData = CCDetail.Worksheets("Department Totals")

RAWData.Range("D:D,E:E,F:F,M:M,X:X,Y:Y,Z:Z,AA:AA,AC:AC,AD:AD,AE:AE,AF:AF,BD:BD,BF:BF").Copy

Dim wksCopy As Worksheet
Set wksCopy = Harvester.Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1)

With wksCopy
    .Paste
    .Name = WorkbookName
End With

End Sub

问题是,在范围的参数中有一个额外的逗号。请尝试以下方法:

Range("D:D,E:E,F:F,M:M,X:X,Y:Y,Z:Z,AA:AA,AC:AC,AD:AD,AE:AE,AF:AF,BD:BD,BF:BF").Copy
如果您想稍微清理一下代码并避免选择等,请尝试以下方法:

Sub ExtractCCDetail()

Dim WorkbookName As String
Dim CCDetail As Workbook
Dim Harvester As Workbook
Dim RAWData As Worksheet

Set CCDetail = Workbooks(2)
Set Harvester = ThisWorkbook

WorkbookName = CCDetail.Name

Set RAWData = CCDetail.Worksheets("Department Totals")

RAWData.Range("D:D,E:E,F:F,M:M,X:X,Y:Y,Z:Z,AA:AA,AC:AC,AD:AD,AE:AE,AF:AF,BD:BD,BF:BF").Copy

Dim wksCopy As Worksheet
Set wksCopy = Harvester.Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1)

With wksCopy
    .Paste
    .Name = WorkbookName
End With

End Sub

在范围的末尾有一个多余的逗号。。。BF:BF,你应该避免同时使用select all,只需立即复制范围谢谢你的精彩阅读Scott-我对这一点非常陌生,我会在空闲时间阅读这篇文章。你的范围末尾有一个多余的逗号。。。BF:BF,你应该避免同时使用select all,只需立即复制范围,感谢Scott的精彩阅读-我对这一点非常陌生,我将在空闲时间阅读这一点。哇。我觉得自己像个白痴。我这么做了,效果很好。哇。我觉得自己像个白痴。我这样做了,效果很好。