2016-04-02 3 views
0

条件に基づいて配列を塗りつぶししようとしていますが、サンプルコードの値が間違っているようです。私はそれが変更されている位置を含めた。私はいくつかの基本的な+ 1/-1の修正を試みましたが、これまでのところこれらの努力はすべて誤ったものになったり、さまざまなエラーを返しました。その他の多次元配列の問題

より明白な問題は、vループで、値が(o、v)の位置ではなく(o、0)の位置に(前の値の書き込みよりも)スタックされているということです。

私は、各ループが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

あなたの問題の詳細を追加してください – user3598756

+0

は、より詳細な情報を追加、私はそれが –

+0

明らかだと思ったごめん私は "無作為な"があまりランダムではないと推測しています。すべての* posted *コードは、 "Green"で10行2列の配列を入力します。ループ全体があれば、何が起こっていたのか分かりやすくなります。 – Comintern

答えて

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 
+0

AAAaaaaandもちろん、最も単純な答えは、事実であることが分かった。私は巨大な馬鹿O_oありがとう –