| 
    
     |  | ハチさん Msgbox WorksheetFunction.CountA(Range("A2:A65536") _
 .SpecialCells(xlCellTypeVisible))
 
 を記述してみると、可視セルのデータ件数は表示されないのにやはりタイトル行が転記されてしまいました。
 
 
 IFの前後のコードは
 
 Sub テスト()
 Dim WS1 As Worksheet
 Dim wb1 As Worksheet
 Set WS1 = Sheet(1)
 Set wb1 = Sheet(2)
 
 
 ar = WS1.Range("A65536").End(xlUp).Row
 With WS1
 .AutoFilterMode = 0
 .Range("A2:A" & ar).CurrentRegion.AutoFilter 5, Criteria1:=">=2006/1/1", Operator:=xlAnd, Criteria2:="<=2007/12/31"
 End With
 
 ※Ifはここに入っています。
 
 If WorksheetFunction.CountA(Range("A2:A65536") _
 .SpecialCells(xlCellTypeVisible)) = 0 Then
 
 GoTo 処理
 End If
 
 With WS1.Range("A2", WS1.Range("A65536").End(xlUp)) _
 .SpecialCells(xlCellTypeVisible)
 
 WS1.AutoFilter.Range.SpecialCells (xlCellTypeVisible)
 .Offset(,1).Copy
 wb1.Range("A2").Offset(, -3).PasteSpecial Paste:=xlValues
 
 End With
 ・
 ・
 ・
 以下3つのシートでコピーペーストのコードを記載
 
 Keinさん
 >>3つのシートにオートフィルタをかけて、2行目以降が空白なら次の処理に進む
 >
 >Dim WB As Workbook
 >Dim WS As Worksheet
 >
 >Set WB = Workbooks("Book1.xls")
 >Application.ScreenUpdating = False
 >For Each WS In WB.Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
 >  WS.Range("A1").CurrentRegion.AutoFilter 1, "Test"
 >  If WS.AutoFilter.Range.Columns(1).SpecialCells(12).Count > 1 Then
 >   フィルターの結果は抽出件数 1 以上なので、何かの処理をここへ書く
 >  End If
 >  WS.AutoFilterMode = False
 >Next
 >Application.ScreenUpdating = True: Set WB = Nothing
 >
 
 For Nextを使わずに処理を実行したい場合はどうしたらいいのでしょうか?
 次の処理に進むというのを3回程繰り返すので、For Nextを使わない方法をとりたいのですが・・。
 ちなみに
 
 >  If WS.AutoFilter.Range.Columns(1).SpecialCells(12).Count > 1 Then
 を実行したところ、データがあるシートの転記がされなくなりました。
 
 
 データが空白というよりは、データが無い場合の条件振り分けなので、
 試しにIF文を削除して実行してみたところ、エラーにならず、IF文を削除しても1行目のデータが転記されてしまいました。
 
 
 |  |