マクロの記録から下記のマクロを作成しました。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.2ベストアンサー
- 回答日時:
No.1です。
お手元の配置が判らないのですが・・・
>Selection.ClearContents
を
On Error Resume Next
Selection.SpecialCells(xlCellTypeVisible).ClearContents
としたらどうなりますか?m(_ _)m
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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
-
4
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
オートフィルタで未入力(空白)を無視した抽出法
PowerPoint(パワーポイント)
-
7
VBAで文字列を数値に変換したい
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
EXCELのVBA-フィルタ抽出後のセル選択方法
Visual Basic(VBA)
-
10
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
11
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
12
別のシートから値を取得するとき
Visual Basic(VBA)
-
13
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
14
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
15
VBA 見つからなかった時の処理
Excel(エクセル)
-
16
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
17
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
18
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
19
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
20
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
スマートな関数を教えて下さい。
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
4つのパターンを表示するEXACT...
-
関数を教えて下さい。
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
エクセルでセルに「氏名を入力...
-
Excel 2019 のピボットテーブル...
-
スプレッドシートの関数VLOOKUP...
-
エクセルで日付の入ったセルの...
-
Excelファイルの「数式」タブ→...
-
excelの不要な行の削除ができな...
-
Excelのif関数で文字が見えなく...
-
各ページの1番上の表示について
-
エクセル関数に詳しい方、教え...
-
INDIRECTを使わず excelで複数...
-
Excel 2019 は、SPILL機能があ...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
tom04 様 回答ありがとうございます。
A列には有効なデータがないためAをEに変えて試しましたが、やはり該当データがない場合は範囲内のすべてのデータが消えてしまいます。