Excel VBA错误1004试图将数组数据输出到工作表上

我在一张纸上复制范围内的数据,将其分配给一个数组,然后在数组中循环,并尝试将数据输出到另一张纸上。 我不断收到错误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循环中抛出错误。

我在运行代码时没有遇到错误。 虽然我明白了这两个调用,因为我没有这些子程序。

 Call ClearSortedResultsSheet Call PrintSortedResultsHeaders 

而且我还得到了工作表第2行的所有结果(“分类结果”)表。 所以我添加了ay = y + 1行来将它们写在不同的行上。

除此之外,我会searchClearSortedResultsSheet或PrintSortedResultsHeaders可能导致错误的任何更改。 也许他们改变了活动表或其他东西。

这里是你的代码在我的电脑上正常工作,只是添加了暗淡和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