Loops Excel VBA循环,其值属于一个集合
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 现在
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)。