Excel 循环遍历数组-如何修复运行时错误9?
我试图循环一个数组,使一个单元格值等于该数组的一个元素。我在开始“.Range”(“I3”)…”的代码行中遇到了一个运行时错误9。我想我已经把所有的事情都安排好了,所以我不明白为什么会出现这个错误。有人知道吗?谢谢Excel 循环遍历数组-如何修复运行时错误9?,excel,vba,Excel,Vba,我试图循环一个数组,使一个单元格值等于该数组的一个元素。我在开始“.Range”(“I3”)…”的代码行中遇到了一个运行时错误9。我想我已经把所有的事情都安排好了,所以我不明白为什么会出现这个错误。有人知道吗?谢谢 Dim MyArray(4 To 14979, 10 To 10) As String Dim wsBalance As Worksheet Set wsBalance = ThisWorkbook.Sheets("Balance") With wsBalance
Dim MyArray(4 To 14979, 10 To 10) As String
Dim wsBalance As Worksheet
Set wsBalance = ThisWorkbook.Sheets("Balance")
With wsBalance
For i = LBound(MyArray) To UBound(MyArray)
.Range("I3") = MyArray(i, 1)
Next i
End With
您用错误的值声明了数组。。 这应该行得通
Dim MyArray(4 To 14979, 1 To 10) As String
对于循环和编辑单元格中的值,这里有一个小例子:
With wsBalance
For i = LBound(MyArray) To UBound(MyArray)
MyArray(i, 1) = "MyValue " & i
.Cells(i, 3) = MyArray(i, 1)
Next i
End With
您应该查看调试并在数组上添加监视,使用断点,您很快就会看到数组声明错误。谷歌“vba中的基本调试”,你会发现很多让它运行的例子。但当我运行它时,我在I3中的值是空的。我想根据数组中的值来分配I3?然后需要使用所需的值初始化数组,默认值为空。我想您需要循环更多的单元格,下面是一个小示例
wsBalance代码,用于I=LBound(MyArray)到UBound(MyArray)MyArray(I,1)=“MyValue”&I.cells(I,3)=MyArray(I,1),接下来我以结束。我想我明白了。我希望不会花那么长时间在我的阵列中循环。有什么建议可以解决这个问题吗?@R.Karl:请不要在评论中转储一堆代码或扩展解释。这显然很难读。只需将其编辑到您的答案中,然后单击链接。Excel会在每次写入操作中重新绘制整个工作表。因此,最简单的方法是停用屏幕更新(Application.screenUpdate=false)。但您必须在循环结束时重新激活它,否则在重新启动之前无法使用Excel。因此,您需要实现一些错误处理,即在出现错误时重新激活屏幕更新(如单元格被锁定等)。