VBA -使用2D数组的值填充单元格时出错



我在VBA中使用数组来循环通过定义的10x10范围,找到其中的5个填充单元格,并分配列,行,列偏移量,行偏移量和每个单元格的颜色索引,使用10x5数组。

一旦找到一个已填充的单元格,它将使用其列/行获得一个具有适当偏移量的新位置,擦除原始发现的单元格并填充新的单元格。

然而,当我尝试使用数组值的新单元格来填充它,我得到一个1004错误 -应用程序定义/对象定义的错误。

这是我使用的代码:

Sub FindCells()
Dim i As integer, j As Integer
Dim c As Range
Dim NewX As Integer, NewY As Integer     
'this is the array I'm using
Dim Molecules() As Variant
ReDim Molecules(1 To 5, 1 To 5)    '1 to 5 - number of filled cells
                                     '1 to 5 - positions, offsets and color index
 For i = 1 To UBound(Molecules)
   For j = 1 To UBound(Molecules, 2)
     For Each c In Worksheets("Main Screen")
       If c.Interior.ColorIndex <> xlNone Then
        Randomize
        dX = Int((H - L + 1) * Rnd() + L)   'speed vector x
        dY = Int((H - L + 1) * Rnd() + L)    'speed vector y
        Molecules(i, 1) = c.Column
        Molecules(i, 2) = c.Row
        Molecules(i, 3) = dX
        Molecules(i, 4) = dY
        Molecules(i, 5) = c.Interior.ColorIndex
        'new position of the cells
        NewX = Molecules(i, 1) + Molecules(i, 3)
        NewY = Molecules(i, 2) + Molecules(i, 4)
      End If
     Next c
     'the array gets the new position values
     Molecules(i, 1) = NewX
     Molecules(i, 2) = NewY
     'now color the new found cells
     Cells(Molecules(i, 2), Molecules(i, 1)).Interior.ColorIndex = Molecules(i, 5)
   Next j
   i = i + 1
Next i
End Sub

尝试使用数组的值作为新发现的单元格的地址时出现错误。代码有什么问题?

谢谢你的帮助。

你需要声明一些东西,以便c知道它需要查看。

这样的例子:

Dim rCell as Range
for each rCell in c.Cells

我不是通过我的电脑检查,但我注意到以下内容:

  • For Each c In Worksheets("Main Screen")

    应该

    For Each c In Worksheets("Main Screen").Cells
    
  • i = i + 1

    应该被擦除,因为它位于已经在更新迭代器

  • For i = 1 To UBound(Molecules)循环中。
  • Cells(Molecules(i, 2), Molecules(i, 1)).Interior.ColorIndex = Molecules(i, 5)

    For j = 1 To UBound(Molecules, 2)循环中,它在每次迭代中产生相同的结果,因为它只依赖于i变量:看起来它应该从循环中取出并放置在外部循环中。

相关内容

  • 没有找到相关文章