![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
フィルタで検索した行を一括して削除するマクロを作りました。
記録して加工したマクロで今のところ動くのですが、
理解不能の箇所があるので教えてください。
下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。)
また、コメントを各コードにつけています。
ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。
可視セルしか削除しないのなら、分かるのですが、
そのようなコードも無いようですし・・・
なぜこのコードで動くのか教えてください。
Rows("1:1").Select '1行目を選ぶ
Selection.AutoFilter 'オートフィルター
Range("C1").Select 'C1を選ぶ
Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です
Rows("2:2").Select '(1) 2行目を選択
Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択
Selection.Delete Shift:=xlUp '選んだところをDelして上に詰める。
Range("C1").Select 'C1を選ぶ
Selection.AutoFilter Field:=3 'フィルタ解除
基本的なことかもしれませんが、ご教示頂ければ幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
簡単に言うと
フィルターを掛けて抽出された範囲を選択して何かしらの処理をさせるとその処理の対象は抽出されたセルのみになるということです。
例えば、4,7行が抽出されていてその2行を選択すると、実際には、4,7行だけではなく、抽出されていない5,6行も選択された状態になり、選択範囲は、4,5,6,7行なりますが、処理の対象はあくまでも抽出された4,7行のみになるということです。
ですから、質問のように抽出されてない行を含めて選択しても問題はないことになります。
もちろんそのフィルターを掛ける表の範囲であることはいうまでもありません。
但し、選択範囲をループして処理する場合は、選択範囲全て(例では、4567行)が処理対象になりますのでそこは注意が必要です。
通常このような場合は、可視セルのみ選択して処理するのが普通です。
以上です。
お礼が遅くなり、申し訳ございません。
ご回答、ありがとうございました。
可視セルのような働きになるのですね。
これで安心して使うことができます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
エクセルで別のセルにあるふり...
-
ExcelのVBAを使ってタイトル行...
-
非表示の列をすべて削除するマクロ
-
特定文字のある行の前に空白行...
-
一つのTeratermのマクロで複数...
-
TERA TERMを隠す方法
-
ExcelVBA 図形をクリックした...
-
Excel VBAからAccessマクロを実...
-
エクセルでA1セルに時刻をリア...
-
Excelで特定の文字のところで自...
-
ソース内の行末に\\
-
Office365 (Excel) におけるシ...
-
エクセルのマクロでワードの任...
-
エクセルに張り付けた写真のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
特定文字のある行の前に空白行...
-
エクセルのマクロについて教え...
-
VBAコードのインデント表示
-
EXCELのVBAでRange("A1:C4")を...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
おすすめ情報