我在以下代码行中收到此错误,无法理解原因。有人可以解释为什么会这样吗?
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
答案 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)
并使用最后的偏移函数来改变每个循环中的范围,如果这是你需要的(我从你的评论中收集......)。你需要一个循环,你的代码目前没有。