【问题标题】:Multiple Nested Loops and Arrays, SubScript out of range多个嵌套循环和数组,下标超出范围
【发布时间】:2016-02-25 13:58:46
【问题描述】:

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

要查看它,它是一个简单的循环,检查第一张表中的 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

【问题讨论】:

    标签: arrays excel vba loops


    【解决方案1】:

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

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

    以类似的方式重构其他变量。

    【讨论】:

    • 好吧,也许我没有关注....但基本上你在说什么重新声明变量,然后当我宣布循环时,我必须重组它需要经历的内容?抱歉,我只是想确保我理解正确
    • 不完全是,您需要将您的声明替换为我所拥有的,以及分配以及 LBound 和 UBound 函数。
    • 我发布了一个示例编辑,看看我是否理解正确。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2022-11-22
    • 2021-11-12
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多