2017-05-10 55 views
1

因此,我現在編寫代碼來檢查一列,然後檢查單元格中的值是否符合條件。如果是,代碼應該複製整行或將該行添加到剪貼板。但是我現在遇到的問題是,如果有多個單元格符合條件,最終結果只是我複製的最後一行。我該如何解決這個問題?如何用循環複製非連續的行[vba]?

wbTarget.Worksheets("Sheet1").UsedRange.ClearContents 
wbSrc.Activate 
Application.CutCopyMode = False 

Do While wbSrc.Worksheets("R").Cells(j, "G").Value <> Empty 
    If InStr(wbSrc.Worksheets("R").Cells(j, "G").Value, LogID) Then 
     wbSrc.Worksheets("R").Range(wbSrc.Worksheets("R").Cells(j, "G"), wbSrc.Worksheets("R").Cells(j, "J")).Copy 
    End If 
    j = j + 1 
Loop 

wbTarget.Worksheets("Sheet1").Range("A1").PasteSpecial 
Application.CutCopyMode = False 
wbTarget.Save 
wbTarget.Close 
wbSrc.Activate 

Set wbTarget = Nothing 
Set wbSrc = Nothing 

因此,如果第1行,4,9,50,74,90,150符合標準,該代碼只複製(添加到剪貼板)排150。我能做些什麼來解決這個問題?

回答

0

您需要在循環中進行復制。

wbTarget.Worksheets("Sheet1").UsedRange.ClearContents 
wbSrc.Activate 
Application.CutCopyMode = False 

Dim idx as Integer 
idx = 1 
    Do While wbSrc.Worksheets("R").Cells(j, "G").Value <> Empty 
     If InStr(wbSrc.Worksheets("R").Cells(j, "G").Value, LogID) Then 
      wbSrc.Worksheets("R").Range(wbSrc.Worksheets("R").Cells(j, "G"),wbSrc.Worksheets("R").Cells(j, "J")).Copy 

      wbTarget.Worksheets("Sheet1").Range("A" & idx).PasteSpecial 
      Application.CutCopyMode = False 
      idx = idx +1 
     End If 

     j = j + 1 
    Loop 


wbTarget.Save 
wbTarget.Close 
wbSrc.Activate 

Set wbTarget = Nothing 
Set wbSrc = Nothing