VBA AutoFilterで複数条件で別ブックからデータを抽出、また別の条件で抽出を繰り返し 

前提

VBAでオートフィルターを使い別ブックから日付と時間に合うデータをコピーしようとしているのですが繰り返しがうまくいきません。
該当データは1つのみで、複数のデータがあるわけではありません。
何卒、改善点をご教授ください。

実現したいこと

オートフィルターでセルの値を検索条件に別ブックからのデータを抜き出そうとしているのですが、変数を使って検索条件を動的にして繰り返し(コピー先の表全部を)
データを抜き出せるようにしたいです。
これを別のブックから行います。

発生している問題・エラーメッセージ

画像を添付しますが、時間の部分で
4:00:00や0:05:00がコピーされません。
20:00:00や12:15:00はされるので○○時〇〇分の時間が2桁以上は反応してくれるようです。
また、秒数は00秒固定です。時間と分のみが変動します。
また
別ブックからコピーさせるようにしてみると
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラー表示が起きます。
wb2.Range("A1").AutoFilter 1, Format(wb1.Worksheets("コピー先").Cells(i, 1), "yyyy/m/d")
この部分で止まっているようです。

イメージ説明
イメージ説明
コピー先とコピー元は最終的には別ブックにしたいです。
別ブックからの分を試そうとしたら動きすらしなかったので
画像の分は同じブック内の動きの分のスクショを貼り付けました。

該当のソースコード

VBA

Sub 改めて日付時間を表示形式にする繰り返し10() Workbooks.Open Filename:=ThisWorkbook.Path & "\実験用コピー元.xlsx" Dim wb1 As Workbook Dim wb2 As Workbook Set wb1 = ThisWorkbook Set wb2 = Workbooks("実験用コピー元.xlsx") With wb1.Worksheets("コピー先").UsedRange Dim i For i = 2 To .Rows.Count wb2.Range("A1").AutoFilter 1, Format(wb1.Worksheets("コピー先").Cells(i, 1), "yyyy/m/d") wb2.Range("A1").AutoFilter 2, Format(wb1.Worksheets("コピー先").Cells(i, 2), "hh:mm:ss") With wb2.Worksheets("コピー元").Range("A1").CurrentRegion Dim rng As Range Set rng = Intersect(.Cells, .Offset(1)) If IsVisible(rng) Then rng.Copy wb1.Cells(i, 7) End With wb2.Worksheets("コピー元").Range("A1").AutoFilter Next End With wb1.AutoFilterMode = False wb2.Close False End Sub Function IsVisible(r As Range) As Boolean On Error Resume Next IsVisible = r.SpecialCells(xlCellTypeVisible).Count > 0 End Function

試したこと

時間の問題については
おそらくは下の部分のcount>0の部分の表記を変えれば10:00:00台だけでなく5:00:00台や8:00:00台にも対応できるのではとは思うのですが(0を"00:00:00"にしてみるなど)うまくいきません。
VBAはまだまだ勉強したてで考え方が間違っているのでしょうか。

Function IsVisible(r As Range) As Boolean
On Error Resume Next
IsVisible = r.SpecialCells(xlCellTypeVisible).Count > 0
End Function

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント