我正在根据条件尝试填充数组,似乎我的示例代码将值放在错误的位置。我包括了它被改变的位置。我尝试了一些基本的+ 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
答案 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