ボランティア募集

Mission

  • われわれのミッションは、
    「集団活動をとおして、おたがいの交流の輪をひろげる」
    ことです。
2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

« 2016年11月の活動テーマは「文化祭」です | トップページ | ともだちひろばでもハロウィーンを楽しみます! »

2016年10月 1日 (土)

Excel VBAでオートフィルターの表示をクリアする

Excelのフィルター機能で、クリアというボタンがあります。
これを押下すると、フィルターに設定した条件をすべてリセットして、非表示になっていた行が見えるようになります。でも、フィルターが解除されるわけではありません。

そんなことをしたくてインターネットで調べたのですが、調べ方が悪いのか、いい説明ページが見つからず、苦労したので備忘録です。

やりたいこと

フィルターをクリアしたいのです。解除ではないのですよ。

背景

お仕事で使っているExcelの表にはフィルターが設定されていて、複数条件で絞り込んで見ています。
この表を定期的に更新したいのです。
元データは別のところにあり、全件をプレーンテキストで貼り付けます。

要は洗い替えなので、非表示行があると古いデータがシートに残ってしまい、おかしなことになってしまいます。
なので、いったん全件表示状態にして、データを洗い替え、その後フィルターの条件を設定するという流れです。

フィルター設定の方法は見つけられた(たとえばこんなの)ので、その前段階も自動化したいのです。

実現方法

調べていても、オートフィルターを解除する方法しか見つけられず。。
「クリア」というキーワードを入れているのに。。

解除でも結果は同じになるかもしれませんが、カッコよくない!
それに、場合によっては解除してしまうと再設定が必要など、さらに面倒なことにもなるのです。なので、正当な方法で実現したかったのです。

ShowAllDataメソッドを使う

やっと見つけたメソッド。ShowAllData
さっそくシートオブジェクトでメソッドをテスト実行して成功!

知っているか知らないかのことなのですが、知らない者にとっては探すのが大変でした。。

本当にたまたま見つけたと記憶しています。言われてみれば確かに、以前、別の仕事場で書いたことがあるような気がします。

ちょっとした落とし穴(というか注意点)

ShowAllDataメソッドは、非表示セルがないとエラーになります。
実際、エラーになって困りました。。
MSDNを読むと、なんとなくそんな風にも読めるのですが、分かりにくいです。。

ShowAllDataを実行する前に、フィルターがかかっているか確認すればよいということです。

フィルターされているかどうかは、FilterModeプロパティで分かります。Trueなら、非表示行があるということです。

書いたコード

ということで、Boolean型のプロパティ値を使って、条件判定します。シートに対して他にもいろいろやることがあるので、Withで書きました。

With ActiveSheet
    If .FilterMode Then .ShowAllData
End With

めでたしめでたし。

« 2016年11月の活動テーマは「文化祭」です | トップページ | ともだちひろばでもハロウィーンを楽しみます! »

パソコン・インターネット」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Excel VBAでオートフィルターの表示をクリアする:

« 2016年11月の活動テーマは「文化祭」です | トップページ | ともだちひろばでもハロウィーンを楽しみます! »

新ブログ

わたしたちのこと

  • わたしたち「ともだちひろば運営委員会」は、埼玉県戸田市内を中心に活動するボランティア団体です。「ともだちひろば」の企画と運営を行います。
    「ともだちひろば」は、障がいのある方たちが余暇を楽しむためのイベントです。職場や学校とは違う、交流の場所になります。体操や作品づくりやゲームなどの集団活動を楽しむイベントです。季節を感じ、日本の伝統文化も体験できます。

スポンサーリンク

Twitter