2017-10-17 5 views
0

1つのブックから別のブックにデータをコピーする際に非常に奇妙な問題が発生しました。 コードスニペット:初めて会った第二のif文の条件まで、期待通りにVBAネストされたforループ、1つのループのみが進みます

For iRow = 7 To iMaxCheckRows 
    strPartNum = thisSheet.Cells(7, 1).Value 
    If strPartNum <> "" Then 
     For iSourceRow = 4 To iMaxRows 
      If sourceBook.Worksheets(1).Cells(iSourceRow, 2).Value = strPartNum Then 
       thisSheet.Cells(iRow, 4).Value = sourceBook.Worksheets(1).Cells(iSourceRow, 4).Value 'here it gets stuck 
       Exit For 
      End If 
     Next iSourceRow 
    End If 
Next iRow 

すべてが動作します。値は正しくコピーされますが、それ以降はこの行に固執します。 iRowはインクリメントされますが、iSourceRowはインクリメントされず、iRowがiMaxCheckRowsに達するまで同じ値がコピーされます。 シングルステップでデバッグしようとしましたが、iRowをインクリメントして同じ行にとどまります。

これまでにこのような動作は見たことがありません。誰かがここで何が起こっているのか?

+5

'strPartNum = thisSheet.Cells(7、1).Value'は' strPartNum = thisSheet.Cells(iRow、1).Value'にするべきではありませんか? –

+0

'sourceBook'とは何ですか?それはどのように参照されますか?開かれていますか? – Vityata

+0

はい、strPartNum = thisSheet.Cells(7、1)。値は本当にstrPartNum = thisSheet.Cells(iRow、1).Valueにする必要があります。 – MarcMan

答えて

0

strPartNum = thisSheet.Cells(7,1).Valueのは確かにトリックをしたstrPartNum = thisSheet.Cells(iRow、1).Valueの

であるべきです。今私は馬鹿だと感じる。

関連する問題