
マクロの記録から下記のマクロを作成しました。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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
-
4
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
5
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
6
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
7
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
VBAでのリスト不一致抽出について
Visual Basic(VBA)
-
10
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
11
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
12
エクセルのオートフィルタで抽出できない
Excel(エクセル)
-
13
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
14
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
15
VBA 見つからなかった時の処理
Excel(エクセル)
-
16
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
17
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
18
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
19
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
20
Filter関数を用いた結果、何も検索されなかった場合
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複雑なシフト表から...
-
エクセルの関数について
-
【マクロ】実行時エラー '424':...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
エクセルシートの見出しの文字...
-
LibreOffice Clalc(またはエク...
-
【マクロ】別ファイルへマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報
tom04 様 回答ありがとうございます。
A列には有効なデータがないためAをEに変えて試しましたが、やはり該当データがない場合は範囲内のすべてのデータが消えてしまいます。