更多多维数组问题

时间:2016-04-02 16:43:49

标签: vba loops multidimensional-array

我正在根据条件尝试填充数组,似乎我的示例代码将值放在错误的位置。我包括了它被改变的位置。我尝试了一些基本的+ 1 / -1修复,但到目前为止,所有这些努力都放错了地方或返回了其他各种错误。

更清楚 - 问题是在v循环中,值被卡在(o,0)位置而不是(o,v)位置(超过写入前一个值)。

我认为我的结构方式是每个循环执行o标准,然后检查v的标准,反过来当v循环将输入v位置的值相等到o的当前值?

我明显遗漏了一些东西,任何指向正确方向的人都会很高兴

Dim Cbox(9, 1)

For o = LBound(Cbox, 1) To UBound(Cbox, 1)
    If LPDif2 = 0 Then
        Cbox(o, 0) = 0
    ElseIf LPDif2 < 3 And LPDif2 > 0 Then
        CCount = CCount + LPDif2
        Cbox(o, 0) = LPDif2
    Else
        CCount = CCount + 3
        Cbox(o, 0) = 3
        LPDif2 = CNLP - CCount
    End If

    LPDif2 = CNLP - CCount
    If CCount = CNLP Then BCount = BCount + 1
    WCount = WCount + CW
    If CCount < CNLP And CCount >= Round(CLng(CNLP) / 2 + 0.000001, 0) Then DCount = DCount + 1
    If CCount >= CNLP Then DCount = DCount + 2

    For v = LBound(Cbox, 2) To UBound(Cbox, 2)
        If CCount >= Round(CLng(CNLP) / 2 + 0.000001, 0) And DCount = 1 Then
            Cbox(o, v) = "Green"
            If CTCombo = "9 W" Then
                AXWCount = WCount / 2
                WH.Value = Ceiling(AXWCount, 9)
            Else
                WH.Value = WCount
            End If
        End If
    Next v
Next o

1 个答案:

答案 0 :(得分:1)

根据注释,内部循环内部的代码只应在v的值为1时运行。它应该像完全消除内部循环并硬编码值“1”一样简单“:

For o = LBound(Cbox, 1) To UBound(Cbox, 1)
    '...
    If CCount >= Round(CLng(CNLP) / 2 + 0.000001, 0) And DCount = 1 Then
        Cbox(o, 1) = "Green"
        If CTCombo = "9 W" Then
            AXWCount = WCount / 2
            WH.Value = Ceiling(AXWCount, 9)
        Else
            WH.Value = WCount
        End If
    End If
Next o