0

所以我使用这个宏来只提取我需要执行回归的数据,并且样本集包含相当多的无用信息以满足我的需求。当我尝试从 CCDetail 工作簿中选择列时,我收到“对象 '_Global' 失败的'范围'”错误。关于为什么会这样的任何想法?

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 (wanted Range)

RAWData.Range (wanted range)

但这些都没有奏效。

4

1 回答 1

5

问题是您的 Range 参数中有一个额外的逗号。试试这个:

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

如果您想稍微清理一下代码并避免Selects此类情况,请尝试以下操作:

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
于 2013-01-02T20:23:45.050 回答