如何使用VBA禁用Excel中的“添加工作表”按钮?

时间:2016-08-11 04:11:50

标签: excel vba excel-vba

我有一个工作簿,我想禁用选项卡旁边的“添加新工作表”按钮。我搜索并发现以下禁用工作簿中的插入选项,这很棒。

Application.CommandBars("Ply").FindControl(, 945).Enabled = False 
Application.CommandBars("Insert").Controls(4).Enabled = False  

但我还没有找到Add New Sheet按钮的命令。是否有一个列出所有这些选项的地方或我可以用来识别控件或按钮的工具。

工作簿已共享,因此在创建时自动删除工作表将无效。

Protect Structure也不起作用并抛出以下错误:

enter image description here

3 个答案:

答案 0 :(得分:1)

ThisWorkbook 代码表中,粘贴以下内容。

Option Explicit

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Application.DisplayAlerts = False
    Sh.Delete
End Sub

立即删除创建的任何新(或复制)工作表。

答案 1 :(得分:1)

这对你的实际问题不是一个合适的解决方案,但它会产生你想做的事情的错觉......

在ThisWorkbook模块中,添加此项以立即隐藏任何包含单元格A1中“DeleteThisSheet”的新工作表

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Sh.Cells(1, 1) = "DeleteThisSheet"
Sh.Visible = xlSheetVeryHidden

End Sub

显然,这会使工作簿与隐藏的工作表混乱,因此您可以使用此代码不时清除它们以关闭共享并删除隐藏的工作表。

Sub removeSheets()

Dim ws As Worksheet

' Turn off sharing
Application.DisplayAlerts = False
If ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.ExclusiveAccess
End If

' Delete veryhidden sheets with delete code
For Each ws In ThisWorkbook.Sheets
    If ws.Visible = xlSheetVeryHidden And ws.Cells(1, 1) = "DeleteThisSheet" Then
        ws.Visible = xlSheetVisible
        ws.Delete
    End If
Next ws

' Turn sharing back on
If Not ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.SaveAs ActiveWorkbook.Name, accessmode:=xlShared
End If
Application.DisplayAlerts = True

End Sub

正如我所说,它并不理想,但可能至少可以达到您的目的,尽管可能无法忍受许多人反复尝试添加新纸张。您可以在新表格代码中添加一个msgbox,以便说出“此操作已被禁用”以阻止他们重试。我会密切关注这个帖子,看看是否有人想出一个合适的解决方案,学习新东西总是好的。

答案 2 :(得分:-1)

不确定这是否解决了这个问题:

Application.CommandBars("Insert").Controls(4).Visible = False

这使用Visible属性。