多个嵌套循环和数组,SubScript超出范围

仍然习惯于处理数组和循环。 有人会用这个来指出这个问题吗?

为了检查它,它是一个简单的循环,检查表1中的a1:a100,并在每张表中检查b1:b100,然后返回表Sheet1中的计数!c1:c100

提前致谢

Private Sub TheLoops() Dim SearchArray() Dim SheetArray() Dim ColumArray() Dim ReturnArray() Dim ModCount As Long SearchArray = Sheet1.Range("a1:a100") SheetArray(0) = Sheet1 SheetArray(1) = Sheet2 SheetArray(2) = Sheet3 ColumArray = ActiveSheet.Range("b1:b100") ReturnArray = Sheet1.Range("c1:c100") ModCount = 0 For I = LBound(SearchArray) To UBound(SearchArray) For L = LBound(ReturnArray) To UBound(ReturnArray) For J = LBound(SheetArray) To UBound(SheetArray) For K = LBound(ColumArray) To UBound(ColumArray) If SearchArray(I) = ColumArray(K) Then ModCount = ModCount + 1 End If Next K Next J ReturnArray(L) = ModCount ModCount = 0 Next L Next I End Sub 

它是否正确?

  SearchArray = Sheet1.Range("a1:a100").Value, LBound(SearchArray, 1) For I = SearchArray(I, LBound(SearchArray, 2)) to SearchArray(I, UBound(SearchArray, 2)) etc etc etc 

这个问题归结为.Range具有一个名为Value的默认属性,它返回一个二维Variant 。 这与您正在分配的types不兼容。

使用Dim SearchArray as VariantSearchArray = Sheet1.Range("a1:a100").ValueLBound(SearchArray, 1)后跟二维索引: SearchArray(I, LBound(SearchArray, 2))

以类似的方式重构其他variables。