Board logo

標題: [發問] autofilter功能請教 [打印本頁]

作者: y54161212    時間: 2024-8-16 11:19     標題: autofilter功能請教

我想要開啟excel檔案的時候,將檔案內的autofiler功能自動取消
測試了程式
Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.AutoFilterMode Then
            ws.AutoFilterMode = False
        End If
Next ws
不管是設置在那的autofiler都能取消
但是將上述資料區域從range變成Table後就無法自動取消autofiler
所以重新寫了一個
Private Sub Workbook_Open()

Dim ws As Worksheet
Dim tbl As ListObject
   
   
    For Each ws In ThisWorkbook.Worksheets
      
        On Error Resume Next
        Set tbl = ws.ListObjects("Table1")
        On Error GoTo 0
        
      
        If Not tbl Is Nothing Then
            If tbl.AutoFilter.FilterMode Then
                ' Turn off autofilter
                tbl.AutoFilter.ShowAllData
            End If
        End If
        

        Set tbl = Nothing
    Next ws
End Sub
依舊沒辦法將表格內的autofilter取消

請教是哪裡出錯了呢?
作者: xyz66217    時間: 2024-8-17 18:01

你好,小弟不材,試了一下,
1. 感覺應該是你的篩選不是在第一行,所以不能用這方式,需要先選 所在行的  cell,然後還不能指定是開還是關,只能一次開一次關,如圖一
2. 如果你的按鈕要共用,不能用 command bottom (active X 只能作用在該分頁),要用表單控制項(變成 module),如圖二

Dim ws As Worksheet
For Each ws In Application.Worksheets
    ws1 = ws.Name
    'MsgBox (ws1)
    Worksheets(ws1).Activate
    Cells(3, 1).Select
    Selection.AutoFilter
    'Selection.AutoFilterMode = False 無法使用
    'AutoFilterMode = False 無法使用
Next ws
作者: y54161212    時間: 2024-8-19 16:46

回復 2# xyz66217

大大您好
我是要在開啟excel的時候,就讓程式去執行,檢查看看有沒有autofilter
如果一般的 range格式的表格,都沒問題
但若是把range變成"表格",就沒辦法了

剛測試了您的方式,在"表格"的狀態下
不論是在哪一列都不能
作者: xyz66217    時間: 2024-8-19 17:28

hello,程式改在圖一位置就可以了囉。
作者: xyz66217    時間: 2024-8-19 17:37

hello,程式改在圖一位置就可以了囉。
xyz66217 發表於 2024-8-19 17:28



  忘了說,就像我說的可能不是在第一行,所以不能選擇打開或關閉,只能一次打開一次關閉,輪流在檔案打開時自動執行




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)