マクロの記録から下記のマクロを作成しました。R列に該当データがある場合は正常に処理されますが、なかった場合、E2:M407、E448:M1035 の全データが削除されてしまいます。
R列にAC2のデータがなかった場合に処理を中止する方法を教えてください。
Sub Macro1()
Application.ScreenUpdating = False
a = Range("AC2")
Range("E2:M407").Select
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18, Operator:= _
xlFilterValues, Criteria2:=Array(1, a)
Selection.ClearContents
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18
Range("E448:M1035").Select
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18, Operator:= _
xlFilterValues, Criteria2:=Array(1, a)
Selection.ClearContents
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18
Application.ScreenUpdating = True
End Sub
No.3
- 回答日時:
最初に、
Selection.SpecialCells(xlCellTypeVisible).ClearContents
で消えてしまうというのは、Excelのバージョンはいくつですか?
Excelのバージョンによって変わってしまうのかもしれません。
私には、どうもよく分からない点があります。
Criteria2:=Array(1, a)
Criteira の中は、基本的に、String 型だったと思うのです。今の状態だと、ヒットしないように思います。もしくは、最初から、文字列で入れるかどちらかだと思います。
たぶん、aも、数値ではないかと思います。
行を数えるのは、このように、Subtotal 関数を使うのが、手っ取り早いと思います。
----------------
Dim a As Variant
Application.ScreenUpdating = False
With ActiveSheet
.AutoFilterMode = False
a = Range("AC2").Value 'aが数字だったら、CStr関数を使う
.Range("$A$1:$Y$1666").AutoFilter Field:=18, _
Criteria1:=Array(CStr(1), CStr(a)), _
Operator:=xlFilterValues
If WorksheetFunction.Subtotal(3, .AutoFilter.Range.Columns(1)) > 1 Then
'1 はタイトル行のことです。
.Range("E2:M407").ClearContents
End If
.AutoFilterMode = False
'----同じパターン----
End With
'//
それと、私のところのExcel 2013では、Criteria1 がない場合も、エラーになります。
ヘルプにはこう書かれています。(Excel2013にはヘルプがありませんので、下位バージョンで調べました)
----------------------------
2 番目の抽出条件となる文字列を指定します。引数 Criteria1 および引数 Operator と組み合わせて使い、複合抽出条件を指定します。
回答ありがとうございます。
動作環境はWindows10,Excel2010です。
試させていただきましたが、R408~R447に処理されないデータがあるためか正常に処理されないようです。
No.1
- 回答日時:
こんにちは!
1行目が項目行でデータは2行目以降にあるのですね?
>Selection.ClearContents
を
If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Selection.ClearContents
End If
としてみてはどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
-
4
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBAで文字列を数値に変換したい
Excel(エクセル)
-
7
EXCELのVBA-フィルタ抽出後のセル選択方法
Visual Basic(VBA)
-
8
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
9
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
10
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
15
VBA 見つからなかった時の処理
Excel(エクセル)
-
16
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
20
別のシートから値を取得するとき
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
Excelカスタム関数(アドイン登...
-
Excelデータをコピペして、ペー...
-
Excel関数-文字列で自動作成さ...
-
スプレッドシート、Excelでの数...
-
Excelで50個のセルに同じ文字を...
-
Microsoft Officeの中古は信用...
-
スプレッドシートで使う数式を...
-
エクセルVBA、別ブックへ転記す...
-
エクセルで会社の従業員のデー...
-
エクセルで不等号記号(≠)が上に...
-
エクセルの表で1年間の曜日を...
-
A列とB列を参照してC列に連番を...
-
エクセルの空欄をつめて、次の...
-
エクセルでの特別な文字を上に...
-
エクセルでセルに標準で入力さ...
-
エクセル日付 文字列の関数がエ...
-
エクセル2013で月間勤務表から...
-
エクセルの日付を編集する
-
EXCELの質問です 119から足した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報
tom04 様 回答ありがとうございます。
A列には有効なデータがないためAをEに変えて試しましたが、やはり該当データがない場合は範囲内のすべてのデータが消えてしまいます。