Board logo

標題: [發問] 禁止使用進階篩選問題 [打印本頁]

作者: asimov    時間: 2010-8-25 19:26     標題: 禁止使用進階篩選問題

請問當工作表保護中,如何使進階篩選功能失效?
先謝謝各位先進了
作者: PD961A    時間: 2010-8-26 11:28

回復 1# asimov


    http://www.excelforum.com/excel-worksheet-functions/622120-disabling-the-advanced-filter-function.html

After i protect the sheet and disable the autofilter function
The Advanced Filter menu can be disabled just like any other menu item using VBA.
The following statement will disable that entry:
在被保護的工作表下禁用進階篩選
他是用VBA寫的...麻煩asimov先進..您到這網站去看囉...
http://translate.google.com.tw/translate?hl=zh-TW&sl=en&tl=zh-TW&u=http%3A%2F%2Fwww.excelforum.com%2Fexcel-worksheet-functions%2F622120-disabling-the-advanced-filter-function.html&anno=2

代碼: Code:
Application.CommandBars
Application.CommandBars("Data").
Controls("Filter").Controls("Advanced Filter...")
Enabled
作者: GBKEE    時間: 2010-8-26 12:28

本帖最後由 GBKEE 於 2010-8-26 12:30 編輯

回復 1# asimov
將工作表的所有Cells  指令 格式-> 儲存格-> 保護  設定為鎖定 就可以
選取所有Cells  如圖



[attach]2588[/attach]
作者: asimov    時間: 2010-8-26 19:59

回復 2# PD961A
感謝 PD961A 提供vba的解決方法,讓我先研究一下

回復 3# GBKEE
感謝 GBKEE 版主提供的方法
如附件,已鎖定所有儲存格,保護工作表時已取消所有使用功能
但是使用進階篩選時,仍然可以正常執行
[attach]2593[/attach]

雖然在保護狀態,只要以手動輸入資料範圍與準則範圍,依然可以執行進階珊選
請版主再次指導了
[attach]2594[/attach]
作者: GBKEE    時間: 2010-8-26 21:54

回復 4# asimov
1 將作用中儲存格移動到資料庫範圍內, 按兩次 自動篩選指令   
2 將作用中儲存格移動到  離開資料庫範圍 一欄或 一列 的範圍之外
3 設定 保護工作表
    如圖  將作用中儲存格移到 粉紅色範圍之外


[attach]2596[/attach]
作者: asimov    時間: 2010-8-27 00:18

回復  asimov
1 將作用中儲存格移動到資料庫範圍內, 按兩次 自動篩選指令   
2 將作用中儲存格移動到  離 ...
GBKEE 發表於 2010-8-26 21:54



GBKEE 版主,儲存格移到資料庫範圍外,還是可以使用進階篩選
只要在資料範圍內輸入 A1:D7 ,按確定,一切正常
不知有沒有辦法讓"進階篩選"變成灰色,或許還有其他方式
再次謝謝版主了
作者: GBKEE    時間: 2010-8-27 07:00

回復 6# asimov
用vba   取消
Application.CommandBars.FindControl(, 901).Visible = False
恢復時用
Application.CommandBars.FindControl(, 901).Visible = True
作者: PD961A    時間: 2010-8-27 08:03

回復 6# asimov

asimov先進
   
http://translate.google.com.tw/translate?hl=zh-TW&sl=en&tl=zh-TW&u=http%3A%2F%2Fwww.excelforum.com%2Fexcel-worksheet-functions%2F622120-disabling-the-advanced-filter-function.html&anno=2

這篇文章的最後1句就是您要的結果的...您可以試試看.....

The following code would re-activate the Advanced Filter menu option, and could be placed in the ThisWorkbook module.
In the VB Editor (press ALT+F11 to get there), double-click on the 'ThisWorkbook' entry in the left-hand column, then paste this code:
在VB編輯器(按Alt + F11到那裡),雙擊的'的ThisWorkbook'項目在左側列中,然後貼上此代碼:



取消:Application.CommandBars Application.CommandBars("Data").Controls("Filter").Controls("Advanced Filter...").Enabled = False

恢復(啟用):Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Data").Controls("Filter").Controls("Advanced Filter...").Enabled = True End Sub

回復 #7 GBKEE

版主可以另外請問您程式中的(, 901).是什麼意思嗎?謝謝您…
作者: GBKEE    時間: 2010-8-27 11:55

回復 8# PD961A
  1. Sub 控制項的識別碼()
  2.     MsgBox Application.CommandBars.FindControl(, 901).ID
  3.     For Each E In Application.CommandBars
  4.         MsgBox E.ID
  5.     Next
  6. End Sub
複製代碼

作者: asimov    時間: 2010-8-29 22:09

回復 7# GBKEE

GBKEE 版主
這就是我要的功能,終於解決長久以來的困擾,十分感謝您的協助

回復 8# PD961A

謝謝 PD961A 提供的說明
經套用後出現"程式呼叫或引數不正確"
還是感謝您的協助

程式中的(, 901)是甚麼意思?
經過測試 901 是"進階篩選"
900 是"全部顯示"
899 是"自動篩選"
以上說法如果有錯,請版主或各先進指正
作者: PD961A    時間: 2010-8-30 07:44

回復 10# asimov

asimov先進
這問題問過GBKEE版主才知道那篇英文
是以"英文"去做保護工作表後--禁止篩選
    Application.CommandBars("Data").Controls("Filter").Controls("Advanced Filter...")
=Application.CommandBars.FindControl(, 901)=進階篩選指令
但這是英文版(粗體字的部份), 不適用於中文版
進階篩選指令的ID 為 901,  每一個指令都有一個不同的 ID號碼
所以您提問是"進階篩選"ID就是901
作者: lumark1976    時間: 2010-12-21 00:46

又解開我之前也有的問題,來這挖到寶呢!!謝謝




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