標題:
隱藏功能
[打印本頁]
作者:
myleoyes
時間:
2014-9-18 21:46
標題:
隱藏功能
各位前輩你們好!!
前輩!
選取任意欄 按AA鈕
就可以隱藏不想讓他人使用的功能
請問點選任意儲存格 按BB鈕
同樣也可以隱藏不想讓他人使用的功能
不知程式如何寫?
請知道的前輩,不吝賜教謝謝再三!!
sub AA()
Application.CommandBars("Column").Controls(1).Enabled = False '剪下
Application.CommandBars("Column").Controls(3).Enabled = False '貼上
Application.CommandBars("Column").Controls(6).Enabled = False '刪除
Application.CommandBars("Column").Controls(7).Enabled = False '清除內容
End Sub
作者:
蝕光迴狼
時間:
2014-10-23 19:52
回復
1#
myleoyes
建議您最好詳細說明,如此才能讓有心人士幫忙您解答。
例如:
1.表格內設立按鈕,來開啟或關閉功能。
2.依您字面意思所述,如果是要關閉【貼上】【刪除】【清除內容 】【剪下】功能不讓別人使用,
最好是在開啟表格時就執行巨集程式,比輸入aa還要好。
3.又或者您擔心動要Excel表格內容,請善用【保護 - 鎖定】【保護 - 隱藏】功能。
作者:
myleoyes
時間:
2014-10-23 22:36
回復
2#
蝕光迴狼
前輩!因為有程式在跑所以無法用
保護工作表的方式
如附程式所訴
請不吝賜教謝謝再三!!
Sub 權限功能()
Dim i
Dim hwd As Long
'讓A:AR欄的區域加入以下功能
'Application.CommandBars("Column").Controls(1).Enabled = False '剪下
'Application.CommandBars("Column").Controls(3).Enabled = False '貼上
'Application.CommandBars("Column").Controls(6).Enabled = False '刪除
'Application.CommandBars("Column").Controls(7).Enabled = False '清除內容
'就能點選任意儲存格可以隱藏不想讓他人使用的功能以免程式跑出來的數據失貞
If [BB:CT].EntireColumn.Hidden = False Then
[F21] = "=Text(sheet1!A1, 0)"
[BB:CT].EntireColumn.Hidden = True
Application.CommandBars("Column").Controls(11).Enabled = False
ElseIf [BB:CT].EntireColumn.Hidden = True And [F21] <> "" Then
For i = 1 To 3
lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1)
ZZ = InputBox("輸入權限密碼", "請輸入檔案管理者密碼!!")
If ZZ = "" Then End
If ZZ = [F21] Then
Application.CommandBars("column").Controls(11).Enabled = True
[BB:CT].EntireColumn.Hidden = False
ActiveWindow.ScrollColumn = 53
[F21] = ""
End
'恢復:AR欄的區域功能
'Application.CommandBars("Column").Controls(1).Enabled = True '剪下
'Application.CommandBars("Column").Controls(3).Enabled = True '貼上
'Application.CommandBars("Column").Controls(6).Enabled = True '刪除
'Application.CommandBars("Column").Controls(7).Enabled = True '清除內容
ElseIf ZZ <> [F21] Then
MsgBox "※密碼錯誤!!你有(3次)機會除檔案管理者外無法使用OK!"
End If
If i = 3 Then ThisWorkbook.Close SaveChanges:=False
Next
End If
End Sub
複製代碼
作者:
myleoyes
時間:
2014-10-23 22:42
回復
2#
蝕光迴狼
前輩!抱歉忘了附檔
作者:
GBKEE
時間:
2014-10-24 09:11
本帖最後由 GBKEE 於 2014-10-24 12:57 編輯
回復
4#
myleoyes
選取任意欄 按AA鈕,就可以隱藏不想讓他人使用的功能
點選任意儲存格 按BB鈕, 同樣也可以隱藏不想讓他人使用的功能
請問 按AA鈕,按BB鈕 的差異點在哪裡??
前輩!因為有程式在跑所以無法用, 保護工作表的方式
可參考 這裡 [保護工作表有許多選項,可參考VBA說明, Protect 方法]
加強一下,限制的權限.
Option Explicit
Dim Ar()
Sub Ex_限制的權限()
Ar = Array("複製", "剪下", "貼上", "刪除", "清除內容", "取消隱藏")
'限制設置 True
限制設置 False
Application.CommandBars("Column").ShowPopup
End Sub
Private Sub 限制設置(Msg As Boolean)
Dim Com As CommandBar, C As Object, Cc As Object
On Error Resume Next
If Msg Then
For Each Com In Application.CommandBars
Com.Reset '應用程式中的命令列的重設(恢復原設定)
Next
Exit Sub
End If
For Each Com In Application.CommandBars
For Each C In Com.Controls
限制設置_副程式 C, Msg
For Each Cc In C.Controls
限制設置_副程式 Cc, Msg
Next
Next
Next
End Sub
Private Sub 限制設置_副程式(C As Object, xMsg As Boolean)
Dim A As Variant
For Each A In Ar
If C.Caption Like A & "*" Then C.Enabled = xMsg
Next
End Sub
複製代碼
作者:
myleoyes
時間:
2014-10-26 07:52
回復
5#
GBKEE
良師!
這樣程式是OK!
但有另一個困擾也就是說
一但範例檔執行限制功能之後
再開啟的任意檔案都同樣也
會受限相同功能而無法使用
這樣是錯誤的...
應該是A檔執行限制功能
就只適用於A檔而不牽涉到
其他檔才有意義
不知可否有解?
關於
按AA鈕,按BB鈕 的差異點在哪裡??
AA鈕是限制隱藏測試用
BB鈕是限制複製,剪下,貼上,刪除,清除內容測試用
辛苦囉!謝謝再三!!
作者:
GBKEE
時間:
2014-10-26 08:27
回復
6#
myleoyes
Option Explicit
'ThisWorkbook模組 的程式碼
Private Sub Workbook_Open()
'ThisWorkbook 檔案開啟時自動執行的預設事件
限制設置 False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ThisWorkbook 檔案關閉時自動執行的預設事件
限制設置 True
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)為作用中的視窗時自動執行的預設事件
限制設置 False
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)不是作用中的視窗時自動執行的預設事件
限制設置 True
End Sub
'******* 限制設置的程式碼 可置於一般模組為公用程序
Sub 限制設置(Msg As Boolean)
Dim COM As CommandBar, C As Object, Cc As Object, AR()
AR = Array("複製", "剪下", "貼上", "刪除", "清除內容", "取消隱藏")
On Error Resume Next
For Each COM In Application.CommandBars
For Each C In COM.Controls
限制設置_副程式 C, Msg, AR
For Each Cc In C.Controls
限制設置_副程式 Cc, Msg, AR
Next
Next
Next
End Sub
Private Sub 限制設置_副程式(C As Object, xMsg As Boolean, AR As Variant)
Dim A As Variant
For Each A In AR
If C.Caption Like A & "*" Then C.Enabled = xMsg
Next
End Sub
複製代碼
作者:
myleoyes
時間:
2014-10-28 06:25
回復
7#
GBKEE
良師!早安!!
謝謝!!
程式雖然可以解決檔案受限的問題
但是 權限功能鈕
確失去意義如附動畫檔所示
小弟繞來繞去的修改測試還是無法找出
兩全其美的方法沒辦法名師卻出笨徒
只好再次麻煩良師
辛苦囉!謝謝再三!!
作者:
GBKEE
時間:
2014-10-28 10:59
本帖最後由 GBKEE 於 2014-10-28 11:05 編輯
回復
8#
myleoyes
參考看看
ThisWorkbook的程式碼
Private Sub Workbook_Open()
' 檔案開啟時自動執行的預設事件
權限功能
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ThisWorkbook 檔案關閉時自動執行的預設事件
限制設置 True
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)為作用中的視窗時自動執行的預設事件
限制設置 檔案管理者
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)不是作用中的視窗時自動執行的預設事件
限制設置 True
End Sub
複製代碼
Module1的程式碼
Public 檔案管理者 As Boolean
Sub 權限功能()
Dim zz As String, i As Integer
i = 3
Do
zz = InputBox("41821 輸入權限密碼" & vbLf & "你有(" & i & "次)機會可用!", "請輸入檔案管理者密碼!!")
i = i - 1
Loop Until zz = [F21] Or i <= 0 Or zz = ""
If zz = Sheet2.[F21] Then
檔案管理者 = True
限制設置 檔案管理者
ElseIf zz <> Sheet2.Range("F21") Then
檔案管理者 = False
限制設置 檔案管理者
'ThisWorkbook.Close SaveChanges:=False
End If
End Sub
Sub 按鈕1() '取消 檔案管理者
檔案管理者 = False
End Sub
複製代碼
Sheet2的程式碼
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If 檔案管理者 = False Then 權限功能
End Sub
複製代碼
作者:
myleoyes
時間:
2014-11-1 21:12
回復
9#
GBKEE
良師!
抱歉!近日來加班延誤回覆
程式OK!方法如下
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)為作用中的視窗時自動執行的預設事件
限制設置 True
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'ThisWorkbook 視窗(活頁簿)不是作用中的視窗時自動執行的預設事件
限制設置 True
End Sub
Sheet2的程式碼
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [BB:CT].EntireColumn.Hidden = False Then
限制設置 True
ElseIf [BB:CT].EntireColumn.Hidden = True Then
限制設置 False
End If
End Sub
Sub 權限功能()
Dim zz As String, i As Integer
Dim hwd As Long
If [BB:CT].EntireColumn.Hidden = False Then
[F21] = "=Text(sheet1!A1, 0)"
[BB:CT].EntireColumn.Hidden = True
限制設置 False
ElseIf [BB:CT].EntireColumn.Hidden = True And [F21] <> "" Then
i = 3
Do
lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1)
zz = InputBox("輸入權限密碼" & vbLf & "你有(" & i & "次)機會可用!", "請輸入檔案管理者密碼
!!")
i = i - 1
Loop Until zz = [F21] Or i <= 0 Or zz = ""
If zz = "" Then
End
ElseIf zz = Sheet2.[F21] Then
[BB:CT].EntireColumn.Hidden = False
[F21] = ""
限制設置 True
ElseIf zz <> Sheet2.[F21] Then
ThisWorkbook.Close SaveChanges:=False
End If
End If
End Sub
複製代碼
小弟另一問題請教執行下列程式
Private Sub ComboBox1_Change()
[B5] = ComboBox1.Value
Sheet1.ComboBox2.Activate
Application.SendKeys "%{DOWN}"
End Sub
Private Sub ComboBox2_Change()
[C5] = ComboBox2.Value
[G5].Selec
End Sub
鍵盤的Num lock燈為何會自動熄滅
請不吝賜教辛苦囉!謝謝再三!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)