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

时间:2017-02-16 16:30:16

标签: excel vba excel-vba

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

1 个答案:

答案 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