実行時エラー1004がでてしまう(VBA)
実行時エラー1004「RangeクラスのAutoFilterメソッドが失敗しました」が出てしまいます。
(1)とあるシートのL列に"判定"を作り、そこに、D列の名称の中に、特、SO、FRが入っていないものには〇をL列に入力し、〇が付くものを抽出するというものを作ったのですがエラーが出てしまいます。(この内容は@の範囲になります)解決策を教えていただけないでしょうか?
(2)またこのVBAを行った際に、本ファイルの処理リストのデータと評価リストのデータが消えてしまいます。(データがうまく表示されていない状態で行間をダブルクリックすれば全て出てくる)解決策を教えていただけないでしょうか?
ちなみに自分はVBA初心者です。
Sub 抽出()
Dim フォルダ, ファイル名, 基本ファイル名
Dim i, j As String
i = ActiveWorkbook.Name
j = ActiveSheet.Name
Application.DisplayAlerts = False
'警告ダイアログボックスを表示しない
基本ファイル名 = Sheets("データリスト").Range("B8").Value
'基本ファイル名(欲しいデータがあるBook)を定義
Workbooks.Open 基本ファイル名
'基本ファイル名(欲しいデータがあるBook)を開く
Worksheets(1).Range("A1:O400").Copy
'基本ファイル名内にある履歴データシートの内容をコピー
Workbooks(i).Worksheets("処理リスト").Range("A1:O400").PasteSpecial
'基本ファイル名のコピーを本ファイルの処理リストに貼り付ける
Workbooks(基本ファイル名).Close SaveChanges:=False
'基本ファイル名を閉じる
Sheets(j).Select
With Worksheets("処理リスト") .Range("A1").AutoFilter _
Field:=10, _
Criteria1:="003", _
Operator:=xlOr, _
Criteria2:="004"
End With
'本ファイルの処理リストのA列からの10列目の"003"もしくは"004" を抽出
'Dim k As Long …@
Range("L1") = "判定"
For k = 2 To Cells(Rows.Count, 1).End(xlUp).Row
With Cells(k, 4).Interior
If .Cells(k, 4) <> "" * 特 * "" And .Cells(k, 4) <> "" * SO * "" And .Cells(k, 4) <> "" * FR * "" Then
Cells(k, 12) = "〇"
End If
End With
Next k
Range("A1").AutoFilter 12, "〇" →ここでエラーが出る …@
Dim データ範囲 As Range
Dim 抽出列 As Variant
Dim l As Long
Set データ範囲 = Worksheets("処理リスト").Range("A1").CurrentRegion
抽出列 = Array(3, 4, 5, 10)
For l = 0 To UBound(抽出列)
データ範囲.Columns(抽出列(l)).Copy Sheets("評価リスト").Range("D7").Offset(0, l)
Next
'本ファイルの処理リストの3,4,5,10列を本ファイルの評価リストのD7に貼り付け
Application.DisplayAlerts = True
'警告ダイアログボックスを表示するに戻す
MsgBox ("履歴データを取り込みました")
End Sub
補足
回答頂きありがとうございます。 デバック処理で確認したところ 1回目、2回目共にVariant/Integerと表記されていました。 どちらの回数も何ら違いは特に感じません。 異なる状況としては、recordsetを重複してopenしている事(recordsetは異なる変数として)、抽出データが1回目は8レコード以上2回目は8レコードという事です。 また、2回目の呼び出し時には呼び出し前に別のデータを取得するためにエラー原因のrecordsetとは別変数でopenしておりcloseしていない状況です。