2017-10-04 1 views
0

AG_Label = M_Labelの場合、コードは実行され、貼り付けられますが、最初のインスタンスのみが実行されます。 私のループには何か問題がありますが、VBAにはとても新しいので、修正方法はわかりません。VBAループエラーです。 1つの結果しか貼り付けない

Dim mrow As Long, ARow As Long, iRows As Long, srow As String 
Dim x As Long, j As Long, i As Long 
Dim AG_Label As String, AG_val As String, SNL_val As String, SNL_Label As String, M_Label As String, Rng As Range 
Dim Vval As Long, Speriod As String, aperiod As String 
Dim Count As Integer, Ajay As Variant 

Count = 2 

ARow = Sheets("AG").Range("A" & Rows.Count).End(xlUp).Row 
Do 
For i = 2 To ARow 
    AG_Label = Sheets("AG").Cells(i, "N").Value 
    'mrow = Sheets("Mappings").Range("A" & Rows.count).End(xlUp).Row 
    'For j = 2 To mrow 
     'M_Match_1 = Sheets("Mappings").Cells(j, "P").Value 
     M_Label = Sheets("Mappings").Cells(Count, "C").Value 


     If AG_Label = M_Label And Sheets("Mappings").Cells(Count, "L").Value = "FRY-9C" Then 
      Sheets("Mappings").Cells(Count, "J").copy 
      Sheets("AG").Cells(i, "AM").PasteSpecial Paste:=xlPasteValues, _ 
       Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
       On Error Resume Next 
     End If 

Application.CutCopyMode = False 

Next 
'i = i + 1 

Loop Until i = ARow + 1 

Count = Count + 1 
End Sub 
+0

は、この行を修正します。、それは私はあなたがOn Errorのために望んでされている場合があります疑いがあるものです( "A"&Sheets( "AG")、Rows.Count).End(xlUp).Row'このような行に対する修飾された参照を持つ、 – braX

+0

'End Sub'の直前の' Count = Count + 1'は疑わしいと思われます - プロシージャレベルの変数をインクリメントしてからpを終了することによってそれを破棄するポイントはまったくありませんrocedure。それはあなたのループのどこかにあるはずですか? – YowE3K

+1

それには正当な理由がない限り、 'On Error Resume Next'をコメントアウトしてください。 –

答えて

0

これは正確に何をしたいではないかもしれないが、それはあなたのループ内でループを構築する方法の良いアイデアを与える必要があります。

Dim mrow As Long, ARow As Long, iRows As Long, srow As String 
    Dim x As Long, j As Long, i As Long 
    Dim AG_Label As String, AG_val As String, SNL_val As String, SNL_Label As String, M_Label As String, Rng As Range 
    Dim Vval As Long, Speriod As String, aperiod As String 
    Dim Count As Long, Ajay As Variant 

    ARow = Sheets("AG").Range("A" & Sheets("AG").Rows.Count).End(xlUp).Row 
    mrow = Sheets("Mappings").Range("A" & Sheets("Mappings").Rows.count).End(xlUp).Row 
    For i = 2 To ARow 
     On Error Resume Next 
     AG_Label = Sheets("AG").Cells(i, "N").Value 
     On Error GoTo 0 
     For Count = 2 To mrow 
      'M_Match_1 = Sheets("Mappings").Cells(j, "P").Value 
      M_Label = Sheets("Mappings").Cells(Count, "C").Value 

      If AG_Label = M_Label And Sheets("Mappings").Cells(Count, "L").Value = "FRY-9C" Then 
       Sheets("Mappings").Cells(Count, "J").copy 
       Sheets("AG").Cells(i, "AM").PasteSpecial Paste:=xlPasteValues, _ 
        Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
      End If  
     Next 
    Next 
    Application.CutCopyMode = False 
End Sub 

注:私は、エラーを使用して考えます変数AG_Labelの設定をマスクするのは悪い、悪い考えです。 (これは、新しい有効な値が列Nから取得される状況になるまで、AG_Labelの同じ値をループ内で複数回実行することを意味します)。以下は、#N/Aなどの処理を停止する代替コードです.END `ARow =シート( "AG")範囲( "A" &Rows.Count) -

手始めに
Dim mrow As Long, ARow As Long, iRows As Long, srow As String 
    Dim x As Long, j As Long, i As Long 
    Dim AG_Label As String, AG_val As String, SNL_val As String, SNL_Label As String, M_Label As String, Rng As Range 
    Dim Vval As Long, Speriod As String, aperiod As String 
    Dim Count As Long, Ajay As Variant 

    ARow = Sheets("AG").Range("A" & Sheets("AG").Rows.Count).End(xlUp).Row 
    mrow = Sheets("Mappings").Range("A" & Sheets("Mappings").Rows.count).End(xlUp).Row 
    For i = 2 To ARow 
     If Not IsError(Sheets("AG").Cells(i, "N").Value) Then 
      AG_Label = Sheets("AG").Cells(i, "N").Value 
      For Count = 2 To mrow 
       'M_Match_1 = Sheets("Mappings").Cells(j, "P").Value 
       M_Label = Sheets("Mappings").Cells(Count, "C").Value 

       If AG_Label = M_Label And Sheets("Mappings").Cells(Count, "L").Value = "FRY-9C" Then 
        Sheets("Mappings").Cells(Count, "J").copy 
        Sheets("AG").Cells(i, "AM").PasteSpecial Paste:=xlPasteValues, _ 
         Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
       End If  
      Next 
     End If 
    Next 
    Application.CutCopyMode = False 
End Sub 
関連する問題