下記マクロは、1行~Rows.Countの間で条件に合う1行を抽出し、別シートにコピーするものです。3種類の方法で所要時間を比較してます。
①セルを1行目~Rows.Countまで調べて抽出
②セルを一旦変数vrに収納してから調べて抽出
③autofilterで抽出
ところがautofilterでエラーとなります。どこがおかしいのでしょう?
場所:
.Range("A1").CurrentRegion.AutoFilter _
Field:=1, _
Criteria1:=100000, Operator:=xlFilterValues
メッセージ:
「実行時エラー
オートメーションエラーです。
起動されたオブジェクトはクライアントから切断されました」
Sub test()
Dim vr As Variant
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Cells(1, 3) = Timer
For i = 1 To Rows.Count
Cells(i, 1) = i
Next i
Cells(2, 3) = Timer
Application.ScreenUpdating = True
′①
j = 1
For i = 1 To Rows.Count
If Cells(i, 1).Value = 100000 Then
Rows(i).Copy Destination:=Worksheets("Sheet2").Rows(j)
j = j + 1
End If
Next i
Cells(3, 3) = Timer
′②
vr = Range("A1:A" & Rows.Count)
For i = 1 To Rows.Count
If vr(i, 1) = 100000 Then
Rows(i).Copy Destination:=Worksheets("Sheet2").Rows(j)
j = j + 1
End If
Next i
Cells(4, 3) = Timer
'③
With ActiveSheet
.AutoFilterMode = False
.Range("A1").CurrentRegion.AutoFilter _
Field:=1, _
Criteria1:=100000, Operator:=xlFilterValues
.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Sheet2").Range("A1")
.AutoFilterMode = False 'AutoFilter を解除
End With
Cells(5, 3) = Timer
Application.Calculation = xlCalculationAutomatic
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは。
>autofilterでエラーとなります。どこがおかしいのでしょう?
AutoFilter では、
Criteria1:=100000
このような書き方はしなかったはずです。
Criteria1:="=100000"
か
Criteria1:="100000"
のいずれかを書けばよいと思います。
ちなみに、
Criteria の部分のヘルプを見ますと、
「抽出条件となる文字列 ("101" など) を指定します。」
と、文字列指定になっています。
'//
With ActiveSheet
.AutoFilterMode = False
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:="100000" _
, Operator:=xlFilterValues
End With
.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Sheet2").Range("A1")
.AutoFilterMode = False 'AutoFilter を解除
End With
'///
.AutoFilter.Range.
これは、AutoFilterとして認識されている範囲だという意味です。
ありがとうございます。
MSDNを確認すると、確かに文字列指定でした。正常動作しました。また、別シートへのコピー法も使わせて頂きました。時間を比べてみると、全体のデータ数や抽出するデータ数で大小関係がコロコロ変わるのが面白いです。全体データ数が10点程度ならcellsを直接触る方が速いようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBSで変数の宣言はできないので...
-
VBAがブレークモードになっ...
-
エクセルエラー13型が一致しま...
-
プロシージャ名の取得
-
VBS実行時エラー オブジェクト...
-
【Excel VBA】マクロをボタンに...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
エクセルVBA、フリーフォームで...
-
■VBA■ SUMとAVERAGEの違い
-
ExcelVBA Range クラスの Page...
-
マクロについて教えてください...
-
エクセルVBAで以下のようなコー...
-
【VBA-AC2000】カレントプロシ...
-
C言語 mallocのエラーに関する質問
-
VBAのエラー発生場所をメッセー...
-
実行時エラー3001「引数が間違...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー -'-2147417848
-
マクロについて教えてください...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
実行時エラー3001「引数が間違...
-
OLEDB.NETで接続できない
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
ADODB.Streamを使用してUTF-8を...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
なぜエラーになるのでしょうか...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAでのエラー
-
Application.ActiveInspectorで...
-
Excelで下記のようにマクロを作...
おすすめ情報