2011-10-25 66 views
3

我目前有一个数组完整的数据,我想一直转移到单元格中,直到整个数组耗尽。我目前的电子表格有G1中的数据,但没有数据。将数组复制到单元格

我有以下的代码,但它并不完全工作,因为我得到的错误:

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

解决这个问题的帮助很大。如果你能告诉我我的代码出了什么问题,以及如何解决这个问题,而不是为我提供一个替代方案,我将不胜感激。

For i = 1 to nFlights 
    With Worksheets("Q2").Range("G1") 
      .End(xlDown).Offset(1, 0) = Origin(i) 
    End With 
Next 
+2

如果在G1下面没有数据,那么您的第一个** .End(xlDown)**将带您到表单中的最后一行。然后你试着**用另一行偏移**,这是无法完成的。你不需要**。End()** ar all - 只需使用**。Offset(i,0)** –

回答

0

offset属性只是引用单元格(在您的情况下),一个低于作为调用基础的单元格(“G1”)。为了将整个阵列渊源考复制到纸张上的G列试试这个:

Dim i As Integer 
i = 2 

For Each val As String In Origin 
    With Worksheets("Q2") 
     .Cells(i, 7).Value = Origin(i) 
     i = i + 1 
    End With 
Next 
+0

我确实有一个循环。你能看看我的代码吗?我用我的下一个循环编辑它。它现在有什么问题? val也代表什么?那么。细胞结构如何工作?谢谢。 – user1012091

+0

单元格返回一个引用所提供的行/列的范围。在我的例子中,它和.Range(“G2”)是一样的。你的代码只会将Origin的每个索引粘贴到同一个工作表单元格中,因为你根本没有在偏移量中使用i。 –

8

我知道你不想显示的代码,但在这里是从你的循环不同的方法:

Dim arr 
arr = Array("one","two","three","four") 

ActiveSheet.Range("G2").Resize((UBound(arr) - LBound(arr)) + 1, 1).Value = _ 
            Application.Transpose(arr) 
+0

+1:有趣。从来没有使用过Resize,但我一定会探索它的用途。 –

+0

+1有效完成。我喜欢通过测试上下限来处理Option Base 0或Option Base 1。 – brettdj

相关问题