2017-11-08 17 views
0

現在、strSearchの文字列配列と一致する場合、マイコードはSheet1を検索し、行をSheet2にコピーします。 strSearchを含む行がない場合、「No Search Found」をSheet2の行として出力するようにするにはどうすればよいですか?検索VBA出力文字列が見つからない場合

Dim ws1 As Worksheet, ws2 As Worksheet 
Dim firstRowWs1 As Long 
Dim lastRowWs1 As Long 
Dim lastRowWs2 As Long 
Dim searchColumnWs1 As Integer 
Dim i As Integer 
Dim check As Variant 
Dim strSearch As Variant 
Set ws1 = Worksheets("Sheet1") 


Set ws2 = Worksheets("Sheet2") 
With ws2 
lastRowWs1 = ws1.UsedRange.Rows.Count 
lastRowWs2 = ws2.UsedRange.Rows.Count 
firstRowWs1 = 1 
searchColumnWs1 = 10 
strSearch = Array("John", "Jim") 

For i = firstRowWs1 To lastRowWs1 
    For Each check In strSearch 
     If check = ws1.Cells(i, searchColumnWs1).Value Then 
      ws1.Rows(i).Copy (ws2.Rows(lastRowWs2 + 1)) 
      ws2.Rows(lastRowWs2 + 1).Columns("A:B").Insert xlToRight 
      lastRowWs2 = lastRowWs2 + 1 
      ws1.Rows(i).Delete shift:=xlUp 
      i = i - 1 
      Exit For 
     End If 
    Next check 
Next i 
End With 
+0

、ループ後の偽その後、ws2.Rows場合(lastRowWs2 + 1).Cells(1).Valueの=「いいえマッチ" –

答えて

0

は、あなたがマッチを見つけ、そしてあなたのループの後にテキストを追加するかどうかを追跡します。

例:一致がある場合はtrueにブール変数を設定し

Dim foundMatches as Boolean 
foundMatches = False 

For i = firstRowWs1 To lastRowWs1 
    For Each check In strSearch 
     If check = ws1.Cells(i, searchColumnWs1).Value Then 
      foundMatches = True 
      ... etc 
     End If 
    Next check 
Next i 

If Not foundMatches then 
    ' print "no rows found" somewhere 
end if 
関連する問題