[[20200502155354]] 『VBAでのフィルター解除』(みかん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでのフィルター解除』(みかん)

一つのシートに2つの表を作り、テーブル機能を使いそれぞれにフィルターを設定しています。
2つの表のフィルターどちらも絞り込みの解除をしたく、「ActiveSheet.ShowAllData」
とコードを書き実行したのですが、「WorksheetクラスのShowAllDataメソッドが失敗しました」とエラーが出てしまいます。

理由と解決方法を教えていただけますでしょうか。
よろしくお願いします。

< 使用 Excel:Excel2019、使用 OS:unknown >


テーブルのオートフィルタと、通常の(テーブルではない)オートフィルタは
モノが違うから。
 
 Sub test()
    Dim lo As ListObject
    For Each lo In ActiveSheet.ListObjects
        lo.Range.AutoFilter
    Next
 End Sub
などを試してください。
(γ) 2020/05/02(土) 17:22

https://www.relief.jp/docs/excel-macro-remove-table-filter-arrows.html

(マナ) 2020/05/02(土) 17:23


 2度もぶつかり。

 テーブル機能って、初めて?試してみたけど、感想としてクソみたいだった。
 他の方法は解りません。

 テーブル個数 = ActiveSheet.ListObjects.Count
 For i = 1 To テーブル個数
    With ActiveSheet.ListObjects(i).DataBodyRange
        テーブル列数 = .Columns.Count
        For k = 1 To テーブル列数
            .AutoFilter k
        Next
    End With
 Next
(BJ) 2020/05/02(土) 17:25

わたしのは、ちょっと違いますね。

(マナ) 2020/05/02(土) 17:26


 余談
 私のコードは、こうやって1個1個試して、使えそうなものを探しては、また試行錯誤する。
 漫画ドクターストーンで言う科学と同じで、地道に試行錯誤。

 'X ActiveSheet.ListObjects(1).ShowAllData
 'ActiveSheet.ListObjects(1).Range.AutoFilter  いまいち使えない
 'ActiveSheet.ListObjects(1).Range.ShowAllData
 'ActiveSheet.ListObject(1).DataBodyRange.AutoFilter 0
 ActiveSheet.ListObject(1).DataBodyRange.AutoFilter 3
(BJ) 2020/05/02(土) 18:16

手当たり次第に試して、これでもできそう。

Sub test()

    Dim lo As ListObject

    For Each lo In ActiveSheet.ListObjects
        lo.AutoFilter.ShowAllData
    Next

 End Sub

(マナ) 2020/05/02(土) 19:09


みなさま

できました!!
テーブル機能のオートフィルタは通常のものと別なんですね、、、
勉強になりました。

教えていただきありがとうございました。
(みかん) 2020/05/03(日) 09:44


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.