|
>Set WS1 = Sheet(1)
>Set WS2 = Sheet(2)
>Set WS3 = Sheet(3)
???コンパイルエラーにならないのでしょうか?
>.Range("A2:A" & ar).CurrentRegion.AutoFilter 5, Criteria1:=">=2006/1/1", Operator:=xlAnd, Criteria2:="<=2007/12/31"
CurrentRegionを使うなら、これ↓で良いと思います。が、
データ部がCurrentRegionで確実に取得できるデータ状態である事が前提になります。
.Range("A2").CurrentRegion.AutoFilter 5, Criteria1:=">=2006/1/1", Operator:=xlAnd, Criteria2:="<=2007/12/31"
>'もし、2列目以降が空白なら、処理に進む
> If WorksheetFunction.CountA(Range("A2:A65536") _
> .SpecialCells(xlCellTypeVisible)) = 0 Then
2列目以降でなく、2行目移行です。
こういう事は正確に書かないと、すれ違いの元になります。
とりあえず1部分だけですけど...。
With WS1
.AutoFilterMode = 0
With .Range("A2").CurrentRegion
.AutoFilter 5, Criteria1:=">=2006/1/1", Operator:=xlAnd, Criteria2:="<=2007/12/31"
'もし、2列目以降が空白なら、処理に進む
'他にやり方が無いわけでもないですが、単純にタイトル行は
'必ずカウントされるから(最低が1)、2より少なければで無しと判断して処理。
'ただ、エクセル関数等も1と判断される( = "" もカウント)。
'データを見てないので、その辺の判断はわかりません。
If WorksheetFunction.CountA(.Columns("A") _
.SpecialCells(xlCellTypeVisible)) < 2 Then
GoTo 処理
End If
End With
End With
|
|