应用程序定义或对象定义的错误

时间:2016-11-07 12:53:13

标签: excel vba macros

我在以下代码行中收到此错误,无法理解原因。有人可以解释为什么会这样吗?

Sub Resource_Details()

    Dim x As Workbook
    Dim y As Workbook

    Set x = ThisWorkbook
    Set y = Workbooks.Open("C:\Users\turnbull\Documents\Global Unmet Demand\3-extract-Resource details.xls")
    y.Sheets("Sheet1").Range("I:O, AB:AJ").EntireColumn.Delete
    y.Sheets("Sheet1").Range("OFFSET(Sheet1!A2,0,0,COUNT(Sheet1!$A:$A),44)").Copy
    x.Sheets("Resource Details").Range("A2").PasteSpecial xlValues

    End Sub

错误在这一行:

y.Sheets("Sheet1").Range("OFFSET(Sheet1!A2,0,0,COUNT(Sheet1!$A:$A),44)").Copy

我在下面的宏中使用了这行代码,它可以正常工作。我很困惑为什么它适用于一个宏而不是另一个宏。

Sub Unmet_Details()

Dim x As Workbook
Dim y As Workbook

Set x = ThisWorkbook
Set y = Workbooks.Open("C:\Users\turnbull\Documents\Global Unmet Demand\2-extract-Unmet details.xls")
x.Activate
Sheets("Unmet Details").Activate
Range("Table2").Select
Selection.Delete
y.Activate
AutoFilterMode = False
Range("A1:AR1").AutoFilter
Range("A1:AR1").AutoFilter Field:=8, Criteria1:=Array("Fulfilled", "Requested", "Partially Assigned", "Soft Booked", "Assigned"), Operator:=xlFilterValues
y.Sheets("Sheet1").Range("OFFSET(Sheet1!$A$2,0,0,COUNT(Sheet1!$A:$A),44)").Copy
x.Sheets("Unmet Details").Range("A2").PasteSpecial xlValues

1 个答案:

答案 0 :(得分:1)

这是一种解决方法(注意这是未经测试的)

替换:

y.Sheets("Sheet1").Range("OFFSET(Sheet1!A2,0,0,COUNT(Sheet1!$A:$A),44)").Copy

使用

y.Worksheets("Sheet1").Range("A1").Resize(WorksheetFunction.COUNTA(y.Worksheets("Sheet1").Range("A:A")),44).Offset(0,0)

并使用最后的偏移函数来改变每个循环中的范围,如果这是你需要的(我从你的评论中收集......)。你需要一个循环,你的代码目前没有。