2017-10-03 26 views
0

別のシート(sh1)に新しい値を見つけてそれをsheet2(sh2)に追加するコードがありますが、この前にマクロはいくつかの特定の値( "CONSULTANT I"、 " 「PROMOTER I」、「PROMOTER II」、「SALES PROMOTER I」)。私は新しい値としてのみフィルタリング結果(可視行)を考慮する必要があります、どのように私はこれを達成することができますか?可視セルのみをループする

ActiveSheet.ListObjects("TabLE1").Range.AutoFilter Field:=14, Criteria1:= _ 
     Array("CONSULTANT I", "PROMOTER I", "PROMOTER II", _ 
     "SALES PROMOTER I"), Operator:=xlFilterValues 


    Set Sh2 = ThisWorkbook.Worksheets("STAFF") 
    Set Sh1 = Workbooks("MIS25044.xlsb").Sheets(1) 

ThisWorkbook.Activate 
    Lastrow = Sh2.Range("a65536").End(xlUp).Row 

    iRow1 = 2 

    'Loop through values in column A of Sheet2 
    Do 
     Set FindCell = Sh2.Range("a2", Sh2.Cells(Lastrow, "A")).Find(What:=Sh1.Cells(iRow1, "E"), _ 
      After:=Sh2.Range("A2"), LookIn:=xlValues, LookAt:=xlWhole) 
     If FindCell Is Nothing Then 
     'add to bottom of list 
     Lastrow = Lastrow + 1 
     Sh2.Cells(Lastrow, "A") = Sh1.Cells(iRow1, "E") 
     End If 
     iRow1 = iRow1 + 1 
    Loop Until IsEmpty(Sh1.Cells(iRow1, "E")) 
+0

'Sh1.Rows(iRow1).Visible Then'の場合 – braX

+0

正常に動作しませんでした。エラーメッセージが表示されます。 – Roca

答えて

0

Find()既にフィルタを用いが隠されている行に位置する任意の値をスキップします -

は私が持っているコードが続きます。

注これはない手動で行(複数可)を非表示になってきた場合はそうである:すなわち値を使用して配置することができ、手動で非表示の行にFind()

+0

隠し値で表示されないものにはfind()を使用できますか?私はYowE3kの回答をすることができませんでした。 – Roca

+0

私の指摘によると、find()はフィルタリングされた行を無視してしまいます。その部分を実装するために特別な処理を行う必要はありません。 –

関連する問題