返回

VBA 使用两个一维数组创建二维数组并调用值来填充参数

发布时间:2022-09-10 03:42:18 710
# 研究

我有两个数组,我想把它们组合成一个包含所有可能组合的数组。然后我需要遍历函数的所有组合和常用参数。我的数组大小不相等,到目前为止,我的尝试导致一个组合数组只有1对值。这是PowerPoint中的VBA,而不是Excel,如果这对可用语法有影响的话。

我该怎么做:

arrayColor = Array("Blue","Green","Red")
arraySize = Array("XS","S","M","L","XL")

为此:

arrayCombo(0,0) = "Blue"
arrayCombo(0,1) = "XS"
arrayCombo(1,0) = "Blue"
arrayCombo(1,1) = "S"
...
arrayCombo(15,0) = "Red"
arrayCombo(15,1) = "XL"

然后使用循环调用每对值并填充参数值。这段代码只是为了说明这个概念;这当然不合法。很确定我需要一个嵌套循环吗?

For i = 0 To UBound(arrayCombo(i))  
    nextSubToFire(color, size)
Next i

这是我目前为止得到的结果,但它只会在我的组合数组中产生一对。这是基于这个问题,但我想我要么遗漏了什么,要么唯一的答案不太正确。我已经研究过其他类似的问题,但我不能用代码中编译的数组,而不是所有为Excel定制的其他示例来解决这个问题。

Option Explicit
Dim arrayColorSize, arrayCombo

Sub CoreRoutine()
    Dim arrayColor, arraySize
    arrayColor = Array("Blue","Green","Red")
    arraySize = Array("XS","S","M","L","XL")
    arrayColorSize = Array(arrayColor, arraySize)
    arrayCombo = Array(0, 0)
    DoCombinations (0)
    Dim a As Integer
    Dim b As Integer
    'For loop comes next once I figure out how to populate the full arrayCombo
    
End Sub

Sub DoCombinations(ia)
    Dim i
    For i = 0 To UBound(arrayColorSize(ia)) ' for each item
        arrayCombo(ia) = arrayColorSize(ia)(i) ' add this item
        If ia = UBound(arrayColorSize) Then
        Else
            DoCombinations (ia + 1)
        End If
    Next i
End Sub

使用“局部变量”窗口,我看到arrayCombo存在,但其中只有1对值,这是最后一组配对选项。我看到arrayColorSize像我预期的那样有两个数组集,所以我怀疑DoCombinations子组件缺少一些东西。

非常感谢您的指导!

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像