我从一张纸上的数据中复制数据,将其分配给一个数组,然后循环遍历数组并尝试将数据输出到另一张纸上。我一直收到错误1004:应用程序定义或对象定义错误。
Worksheets("tempSort").Activate
With Application.Worksheets("tempSort")
.Range("A1:B" & EndRowDummy).Sort key1:=Range("B1:B" & EndRowDummy), _
order1:=xlDescending, Header:=xlNo
End With
i = 1
y = i + 1
Call ClearSortedResultsSheet
Call PrintSortedResultsHeaders
For i = 1 To EndRowDummy
x = Sheets("tempSort").Range("A" & i).text
Worksheets("Sorted Results").Range("A" & y) = x
playerData = Sheets(x).Range("C2:F2").Value
b = 2
For Each data In playerData
Worksheets("Sorted Results").Cells(y, b) = data
b = b + 1
Next data
Next i
它会在For Each
循环中抛出错误。
答案 0 :(得分:0)
运行代码时,我没有收到错误消息。虽然我明白我已经注释掉了两个电话,因为我没有这些子程序。
Call ClearSortedResultsSheet
Call PrintSortedResultsHeaders
我还在工作表的第2行("排序结果")表中获得了所有结果。所以我添加了一个y = y + 1行来将它们写在不同的行上。
除此之外,我会搜索ClearSortedResultsSheet或PrintSortedResultsHeaders可能导致错误的任何更改。也许他们改变了活动表或其他东西。
这是您的代码在我的计算机上运行良好,只添加了dim和y = y + 1语句。
Sub test()
Dim playerData() As Variant
Worksheets("tempSort").Activate ' copy this and place it below the subroutine calls
EndRowDummy = 3
With Application.Worksheets("tempSort")
.Range("A1:B" & EndRowDummy).Sort key1:=Range("B1:B" & EndRowDummy), _
order1:=xlDescending, Header:=xlNo
End With
i = 1
y = i + 1
'Call ClearSortedResultsSheet
'Call PrintSortedResultsHeaders
Worksheets("tempSort").Activate ' in case the subroutine changed the activesheet
For i = 1 To EndRowDummy
x = Sheets("tempSort").Range("A" & i).Text
Worksheets("Sorted Results").Range("A" & y) = x
abc = Sheets(x).Range("C2").Value
playerData = Sheets(x).Range("C2:F2").Value
' abc = playerData(1)
b = 2
For Each Data In playerData
Worksheets("Sorted Results").Cells(y, b) = Data
b = b + 1
Next Data
y = y + 1
Next i
End Sub