Sub DisableCutAndPaste() '禁止
EnableControl 21, False ' cut
EnableControl 19, False ' copy
EnableControl 22, False ' paste
EnableControl 755, False ' pastespecial
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""
Application.CellDragAndDrop = False
End Sub
Sub EnableCutAndPaste() '取消禁止
EnableControl 21, True ' cut
EnableControl 19, True ' copy
EnableControl 22, True ' paste
EnableControl 755, True ' pastespecial
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "+{DEL}"
Application.OnKey "+{INSERT}"
Application.CellDragAndDrop = True
End Sub
Sub EnableControl(Id As Integer, Enabled As Boolean)
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(Id:=Id, recursive:=True)
If Not C Is Nothing Then C.Enabled = Enabled
Next
End Sub
F8看出問題的會在進入迴圈這邊,
If Not C Is Nothing Then C.Enabled = Enabled
DEAR chijanzen:
我用2000執行的時候會出現==>Enabled方法(_'CommandBarButton'物件)失敗的訊息,在2003執行則沒有問題,是EnableControl對應的數字有問題嗎?
你好:
excel 2000 應該可以用的,不過我沒excel 2000可以測試
建議你使用F8鍵來逐步執行程式碼,然後找出哪一句程式碼有問題
請問2000的版本是不是不支援?打開都會有FUNCTION的錯誤
你好:
在你要執行的檔案中的 ThisWorkbook 加入以下語法即可
Private Sub Workbook_BeforeClose(Cancel As Boolean)
EnableCutAndPaste
End Sub
--------------------------------------------------------------------------------
Private Sub Workbook_Open()
DisableCutAndPaste
End Sub
啟動巨集後關閉檔案
但其它excel 檔案執行時
無法使用copy 功能
是否有 針對單一檔案 工作表 禁止copy 的語法