Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环遍历数组-如何修复运行时错误9?_Excel_Vba - Fatal编程技术网

Excel 循环遍历数组-如何修复运行时错误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

我试图循环一个数组,使一个单元格值等于该数组的一个元素。我在开始“.Range”(“I3”)…”的代码行中遇到了一个运行时错误9。我想我已经把所有的事情都安排好了,所以我不明白为什么会出现这个错误。有人知道吗?谢谢

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。因此,您需要实现一些错误处理,即在出现错误时重新激活屏幕更新(如单元格被锁定等)。