Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops Excel VBA循环,其值属于一个集合_Loops_Excel_Vba - Fatal编程技术网

Loops Excel VBA循环,其值属于一个集合

Loops Excel VBA循环,其值属于一个集合,loops,excel,vba,Loops,Excel,Vba,Excel VBA是否允许对属于某个给定集合的索引值进行循环 例如,我们可以做一些类似的事情吗 Sub testloop() k = 1 For j in {30042, 2300023, 1003044} Range("A" & k).Select With Selection.Interior .Color = j End With k = k + 1 Next j End Sub 现在

Excel VBA是否允许对属于某个给定集合的索引值进行循环

例如,我们可以做一些类似的事情吗

Sub testloop()
  k = 1    

  For j in {30042, 2300023, 1003044}

      Range("A" & k).Select
       With Selection.Interior

          .Color = j

      End With
    k = k + 1
  Next j

End Sub
现在我正在使用数组来完成同样的任务

Sub testloop()

    Dim IndexArray(3) As Variant

    For k = 1 To 3

         IndexArray(k) = Int((10000000 - 39000 + 1) * Rnd + 39000)

    Next k


    For j = 1 To UBound(IndexArray)
        Range("A" & j).Select
         With Selection.Interior

            .Color = IndexArray(j)

        End With
    Next j

End Sub
因此,这将基于存储在集合IndexArray中的随机整数值在单元格A1、A2和A3中生成颜色。有没有更好的方法循环到某组索引值,而不是将它们存储在数组中

编辑

按照Simoco的解决方案,我做到了:

Sub testloop()

    Dim IndexArray(2) As Variant

    For k = 0 To 2

        IndexArray(k) = Int((10000000 - 39000 + 1) * Rnd + 39000)

    Next k

    kk = 70

    For j = 0 To UBound(IndexArray)

         Range("A" & kk).Select
         With Selection.Interior

               .Color = IndexArray(j)

         End With
         kk = kk + 1
    Next j


     For Each j In IndexArray

          Range("A" & kk).Select
          With Selection.Interior

               .Color = j

          End With
          kk = kk + 1
      Next j

End Sub
而且它工作得很好


您可以使用以下内容:

Sub testloop()
   k = 1

   For Each j In Array(30042, 2300023, 1003044)
       Range("A" & k).Select
       With Selection.Interior
         .Color = j
       End With
       k = k + 1
   Next j

End Sub

谢谢你能看看我的编辑吗?也许能帮我看看为什么我在第二个循环中得到了额外的黑色。实际上你的数组中有4个元素。当您将
Dim IndexArray(3)声明为Variant
时,您会得到一个维数为0到3的数组,并且您没有定义
IndexArray(0)
,因此默认情况下它等于0。噢,谢谢……如果我有一个大数组集,并且我不想列出所有数组:IndexArray(……很长……),除了j=0之外,我能为索引数组中的每个j做什么?哦,好的。。只需定义从0到2的索引。好的,明白了。你可以把
Dim IndexArray(1到3)声明为Variant
,你和我的方法都会得到相同的解决方案(因为你的
IndexArray
现在的维度是1到3)。