前提
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
1Sub 改めて日付時間を表示形式にする繰り返し10() 2 Workbooks.Open Filename:=ThisWorkbook.Path & "\実験用コピー元.xlsx" 3 Dim wb1 As Workbook 4 Dim wb2 As Workbook 5 Set wb1 = ThisWorkbook 6 Set wb2 = Workbooks("実験用コピー元.xlsx") 7 8 9 With wb1.Worksheets("コピー先").UsedRange 10 Dim i 11 For i = 2 To .Rows.Count 12 wb2.Range("A1").AutoFilter 1, Format(wb1.Worksheets("コピー先").Cells(i, 1), "yyyy/m/d") 13 wb2.Range("A1").AutoFilter 2, Format(wb1.Worksheets("コピー先").Cells(i, 2), "hh:mm:ss") 14 15 With wb2.Worksheets("コピー元").Range("A1").CurrentRegion 16 Dim rng As Range 17 Set rng = Intersect(.Cells, .Offset(1)) 18 If IsVisible(rng) Then rng.Copy wb1.Cells(i, 7) 19 End With 20 21 wb2.Worksheets("コピー元").Range("A1").AutoFilter 22 Next 23 End With 24 wb1.AutoFilterMode = False 25 wb2.Close False 26End Sub 27 28Function IsVisible(r As Range) As Boolean 29 On Error Resume Next 30 IsVisible = r.SpecialCells(xlCellTypeVisible).Count > 0 31End 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/ツールのバージョンなど)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/27 15:19
2022/07/28 10:02
2022/07/28 11:57
2022/07/28 15:00