質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3473閲覧

VBA オートフィルタ後の抽出データ削除時の挙動について

ttttaaaak

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/02/16 02:17

下記表に対して下記処理を実行した際、
フィルタされていない全てのデータ含めヘッダ以外のすべてのデータが消えてしまいます。
フィルタした結果何もデータがなかった場合
何もデータを消さないという処理を書きたいのですが
どのように書けばよろしいでしょうか。

Option Explicit

Sub sample()

Dim targetRange As Range 'オートフィルタの設定と表の1列目「名前」を文字列「鈴木」で絞り込み Worksheets("sample").Range("B2").AutoFilter field:=1, Criteria1:="鈴木" '絞り込んだ行(=表示させた行)のみを対象として取得 With Worksheets("sample").Range("B2").CurrentRegion Set targetRange = .Resize(.Rows.Count - 1).Offset(1, 0) End With '絞り込んだ行(=表示させた行)のみを削除 targetRange.Delete Shift:=xlUp 'オートフィルタを解除 Worksheets("sample").Range("B2").AutoFilter

End Sub


名前 売上
ーーーーーーーー
佐藤 500
田中 20
井上 30
佐藤 500
田中 50
井上 60
佐藤 500
田中 80
井上 90

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オートフィルター後に表示されているものを条件に追加してみました。
該当するセルがない場合のエラー処理を追記しました。

VBA

1Sub a() 2 With Worksheets("sample").Range("B2").CurrentRegion 3 On Error GoTo No1004 4 Set targetRange = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlVisible) 5 On Error GoTo 0 6 End With 7 8 Exit Sub 9 10No1004: '該当するセルがない場合のエラー処理 11 If Err.Number = 1004 Then 12 Resume Next 13 Else 14 Err.Raise Err.Number 15 End If 16End Sub

投稿2022/02/16 04:52

編集2022/02/23 05:06
TanakaHiroaki

総合スコア1065

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttttaaaak

2022/02/22 09:32 編集

実行時エラー 1004 該当するセルが見つかりません。 というエラーが出てしまいます。。 その場合、例外処理を入れて次の処理へジャンプ みたいな感じにすればいいんですかね。
TanakaHiroaki

2022/02/23 05:07

例外処理を入れたコードに修正してみました。
ttttaaaak

2022/02/24 05:08

targetRange.Delete Shift:=xlUpでエラーが出てしまいます。 targetRange変数に何も入っていない場合、処理を続行する。 targetRange変数に入っていた場合、targetRange.Delete Shift:=xlUpの処理を実行する。 というのが思い浮かんでいるのですが、書き方がわかりません。 range型変数が空というのはどのように書けばよいでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問