2016-06-22 2 views
1

私は、テーブルのすべてのセル(行と列)を実行するネストループをコーディングしています。各セルには、同じでなければならない別個の「組み合わせ」があり、別のシートで参照している値と一致する場合は、同じ行から値(Analysisワークシートで指定)を受け取り、このテーブルに戻します。ここに私のコードです。大きなIf文でエラーが発生します。どんな助けもありがとうございます。ありがとう!構文/ループエラー

更新されたコードは、ifステートメント内の最後の "And ..."を除いてすべて動作します。それがなければ、コードは実行されますが、(明らかな理由により)正しくはありません。私がそれを組み込むと、凍結が凍りついて走り終わることはありません。助けてください。

プライベートサブWorksheet_Change(ByValの対象を範囲)

薄暗いI、J、K、M、N限り

ワークシート( "グラフ・データ")範囲( "C6:DR10000")。値= ""

J = 3

Do Until Worksheets("Chart Data").Cells(4, j).Value = "" 

    For i = 4 To Worksheets("Chart Data").Cells(Rows.Count, "A").End(xlUp).Row 

     k = i + 3 
     m = i + 2 
     n = 1 

     ThisWorkbook.Sheets("Running Avg Log").Activate 
     ' If the current row in running avg log doesnt meet this if statement criteria, it skips & increments i w/o doing anything 
     If Worksheets("Running Avg Log").Cells(i, 2).Value = 1 _ 
      And Worksheets("Running Avg Log").Cells(i, 3).Value = n _ 
      And Worksheets("Running Avg Log").Cells(i, 4).Value = 1 _ 
      And Worksheets("Running Avg Log").Cells(i, 1).Value = Worksheets("Chart Data").Cells(k, 2).Value Then 

      ' When if statement is entered, this sets the selected dimension # in this accepted row and puts it into corresponding spot in chart data 
      Worksheets("Chart Data").Cells(m, j).Value = Worksheets("Running Avg Log").Cells(i, 6 + Worksheets("Analysis").Range("C5").Value).Value 

      n = n + 1 

     End If 
    Next i 

    ' j (column number) will increment across after each row in one column is done, testing the entire table 
    j = j + 1 
Loop 

End Subの

sheet where code will input the values

sheet where the values are found. If statement looks for date, and the three values following the date. If they match what i want, it returns one of the dimension numbers in that same row. The dimension number is a drop down menu cell selected in the Analysis worksheet, and can be referenced with the cell I have shown in the line within the If statement.

+0

エラーは何ですか? –

+0

エラーはIfステートメント内にあり、ステートメント全体が強調表示されます。 –

+0

エラーは何ですか、それは –

答えて

0

次のコードの更新部分は、エラーをスローせずに動作します。 しかし、あなたは何をしたいのですか? テーブルの値はどこですか?どこに置いておきたいですか?

取得しようとしているワークシートの結果のスクリーンショットを添付してみてください。

Sub GraphLoop() 

Dim i, j, k, m       As Long 

Worksheets("Chart Data").Range("C6:DR10000").Value = "" 

j = 3 
    Do Until Worksheets("Chart Data").Cells(4, j).Value = "" 
     For i = 4 To Worksheets("Chart Data").Cells(Rows.count, "B").End(xlUp).row ' modify according to your Column    k = i + 3 
      m = i + 2 

      ThisWorkbook.Sheets("Running Avg Log").Activate 
      ' If the current row in running avg log doesnt meet this if statement criteria, it skips & increments i w/o doing anything 
      If Worksheets("Running Avg Log").Cells(i, 2).Value = 1 _ 
       And Worksheets("Running Avg Log").Cells(i, 3).Value = 1 _ 
       And Worksheets("Running Avg Log").Cells(i, 4).Value = 1 _ 
       And Worksheets("Running Avg Log").Cells(i, 1).Value = Worksheets("Chart Data").Cells(k, 1).Value Then 

       ThisWorkbook.Worksheets("Chart Data").Activate 
       ' When if statement is entered, this sets the selected dimension # in this accepted row and puts it into corresponding spot in chart data 
       Worksheets("Chart Data").Cells(m, j).Value = Worksheets("Running Avg Log").Cells(i, 6 + Worksheets("Analysis").Range("C5").Value).Value 
      End If 
     Next i 

     ' j (column number) will increment across after each row in one column is done, testing the entire table 
     j = j + 1 
    Loop 

End Sub 
+0

私はいくつかの写真で更新しました。ちょうどあなたが送ったコードを試してみましょう。ありがとう! –

+0

@Justin Anderson、上記のコードを試してください。私は次の行を修正しました。 "For i = 4 To Worksheets"( "Chart Data")のセルを変更しました。どんな列でもデータを保持していればスキャンしています。 –

+0

あなたは私の凍結問題を修正しましたが、私はまだそのIf文でエラーが発生しています。実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラー –

関連する問題