Board logo

標題: [發問] 如何禁止使用VBA按鈕 [打印本頁]

作者: missbb    時間: 2015-9-27 23:30     標題: 如何禁止使用VBA按鈕

請問我在一個活頁部內, 有一個工作表"目錄"是有按鈕並設有巨集, 因活頁部有多人使用, 我將工作表"目錄"保護, 但仍是可以按鍵執行巨集, 只是不能修改工作表內容.

請問除了隱藏工作表外, 尚有甚麼方法?

請賜教!
作者: lpk187    時間: 2015-9-28 00:03

回復 1# missbb


   按鈕必須是ActiveX是控制項
其屬性為.Enabled,可控制可使用或不可使用
例如:
CommandButton1.Enabled = False'為不可使用
CommandButton1.Enabled =True'為可使用

當然你必須寫一巨集,利用密碼來掌控可否使用
在 Workbook_Open關閉使用如下
Private Sub Workbook_Open()
Worksheets("工作表1").CommandButton1.Enabled = False
End Sub
下再利用巨集來啟用它
Private Sub pas_Click()
aa = InputBox("請輸入密碼")
pass = "12345"
If aa = pass Then
    CommandButton1.Enabled = False
End If
End Sub
作者: missbb    時間: 2015-9-28 00:56

回復 2# lpk187

感謝解答!:) 中秋節快樂!
作者: missbb    時間: 2015-9-28 12:33

回復 2# lpk187
你好, 我加入了密碼錯誤出現MSGBOX及退出, 但COMMANDBUTTON變了灰色, 請問問題在那??求指點?[attach]22101[/attach]
  1. Private Sub CommandButton1_Click()
  2. Call Splitbook
  3. End Sub

  4. Sub Splitbook()

  5. aa = InputBox("請輸入密碼")
  6. pass = "12345"
  7. If aa = pass Then
  8.     CommandButton1.Enabled = False
  9. If aa <> pass Then
  10. MsgBox "錯誤輸入"
  11. End If

  12. End If


  13. Dim xPath As String
  14. xPath = Application.ActiveWorkbook.Path
  15. Application.ScreenUpdating = False
  16. Application.DisplayAlerts = False
  17. For Each xWs In ThisWorkbook.Sheets
  18.     xWs.Copy
  19.     Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xlsx"
  20.     Application.ActiveWorkbook.Close False
  21. Next
  22. Application.DisplayAlerts = True
  23. Application.ScreenUpdating = True
  24. End Sub
複製代碼

作者: lpk187    時間: 2015-9-28 12:56

回復 4# missbb


    If aa = pass Then
    CommandButton1.Enabled = False<<這裡應該為True才對,不好意思。
作者: missbb    時間: 2015-9-28 13:09

回復 5# lpk187

我試了OK, 但如密碼不符卻沒有出現MSGBOX, 而會繼續執行儲存, 是CALL的錯誤?

:dizzy: [attach]22103[/attach]
作者: GBKEE    時間: 2015-9-28 13:17

回復 6# missbb
試試看
  1. aa = InputBox("請輸入密碼")
  2.     pass = "12345"
  3.     If aa = pass Then
  4.         CommandButton1.Enabled = False
  5.     ElseIf aa <> pass Then
  6.         MsgBox "錯誤輸入"
  7.         CommandButton1.Enabled = True
  8.     End If
複製代碼

作者: lpk187    時間: 2015-9-28 13:26

回復 6# missbb


    aa = InputBox("請輸入密碼")
pass = "12345"
If aa = pass Then
    CommandButton1.Enabled = True
Else
    CommandButton1.Enabled = False
    MsgBox "錯誤輸入"
    Exit Sub
End If
作者: missbb    時間: 2015-9-28 14:39

回復 8# lpk187

抱歉打擾了, 試了兩位大大的方法, 尚有小問題:

GBKEE的方法, 密碼對時無問題, 但如密碼錯誤後, 仍會執行.

Lpk187的方法, 不論密碼對時無問題, 但執行VBA後按鈕變灰, 關閉檔案再開, 按鈕仍是灰色. 如密碼錯誤後, 按鈕變灰, 關閉檔案再開, 按鈕仍是灰色.
作者: missbb    時間: 2015-9-28 14:39

回復 7# GBKEE

抱歉打擾了, 試了兩位大大的方法, 尚有小問題:

GBKEE的方法, 密碼對時無問題, 但如密碼錯誤後, 仍會執行.

Lpk187的方法, 不論密碼對時無問題, 但執行VBA後按鈕變灰, 關閉檔案再開, 按鈕仍是灰色. 如密碼錯誤後, 按鈕變灰, 關閉檔案再開, 按鈕仍是灰色.
作者: 准提部林    時間: 2015-9-28 14:53

Sub Splitbook()
AA = InputBox("請輸入密碼")
If AA = "" Then Exit Sub
If AA <> "12345" Then MsgBox "※密碼錯誤! ": Exit Sub
 
∼∼接另存檔程式碼∼∼
End Sub

密碼未輸入或錯誤,直接跳開,不需對按鈕另作處理∼∼
作者: missbb    時間: 2015-9-28 15:13

回復 11# 准提部林

成功了, 感謝指導.
作者: lpk187    時間: 2015-9-28 17:34

回復 9# missbb


    你應該看清楚2樓的解說,
CommandButton1.Enabled = False'為不可使用,會變成灰色的
CommandButton1.Enabled =True'為可使用,會成為正常可使用情況
,而2樓的例子
在 Workbook_Open時,會關閉按鈕的使用,直到執行pas程式時方可解開按鈕的使用
Private Sub Workbook_Open()
Worksheets("工作表1").CommandButton1.Enabled = False
End Sub
下再利用巨集來啟用它
Private Sub pas_Click()
  aa = InputBox("請輸入密碼")
pass = "12345"
If aa = pass Then
    CommandButton1.Enabled = True'密碼對時,則CommandButton1按鈕變可以使用,
Else
    CommandButton1.Enabled = False'密碼錯誤時,則CommandButton1則維持不組使用,按鈕為灰色的
    MsgBox "錯誤輸入"
    Exit Sub'密碼錯誤時跳出程式,甚至不能執行下面程式
End If

...
...
...

End Sub
這程式例子,是說明,當打開檔案時,CommandButton1按鈕為不可以使用,
直到使用者,按下pas 按鈕時,密碼對時,才可以使用CommandButton1按鈕,繼續可以使用其他巨集程式否則為保護狀態!如下圖:
開啟檔案時,CommandButton1按鈕為不何使用狀態
[attach]22106[/attach]
下圖則為,密碼輸入對後可使用狀態
[attach]22107[/attach]
作者: missbb    時間: 2015-10-2 21:54

回復 13# lpk187


多謝指導!
作者: koo    時間: 2015-10-24 16:38

本帖最後由 koo 於 2015-10-24 16:39 編輯

建議一下:輸入對了就執行程序..輸入錯誤就離開Sub
再把程序上鎖
不然會有"按鈕仍是灰色"問題
  1. Private Sub CommandButton1_Click()
  2. x = InputBox("請輸入密碼", "密碼")
  3. If x = 12345 Then
  4.     Call Splitbook
  5. Else
  6.     MsgBox "輸入錯誤"
  7.     Exit Sub
  8. End If
  9. End Sub

  10. Sub Splitbook()
複製代碼





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