【问题标题】:How to prevent user from deleting sheet, but leave all else open如何防止用户删除工作表,但让其他所有工作保持打开状态
【发布时间】:2014-10-12 10:30:30
【问题描述】:

我开发了一个 Excel 应用程序,用户可以在其中输入自定义类别。我让用户使用自定义功能区中的按钮调用并隐藏此数据输入工作表。

现在我意识到用户可能会意外删除这些工作表。如何禁用此工作表的删除命令,同时保持所有其他内容处于打开状态?

我一直在网上搜索,但对此一无所知。

这是针对 Excel 2007 的

谢谢

【问题讨论】:

    标签: excel excel-2007 vba


    【解决方案1】:

    保护他们。

    Tools > Protection > Protect Worksheet.

    添加密码并选择您的用户应在工作表中执行的操作。

    您也可以使用VBA 来做同样的事情。检查以下link

    更新了工作表级保护代码

    您可以将以下代码放入您需要管理任何恶作剧的工作表中;)

    Private Sub Worksheet_Activate()
        ThisWorkbook.Protect Password:="Password", Structure:=True
    End Sub
    
    Private Sub Worksheet_Deactivate()
        ThisWorkbook.Unprotect Password:="Password"
    End Sub
    

    但是你看,当你有一本书有 100 页,如果你想保护 50 页。 然后您必须将所有工作表索引保存到very hidden sheet。在模块级 VBA 代码中使用该列表来触发保护。因为不是每次你都会有按升序排列的床单。如果按顺序排列索引,您可以简单地迭代它们。

    如果您也想拥有工作簿级别的代码,请告诉我。

    【讨论】:

    • 不要保护工作表...您必须保护 Workbook“结构”(可在 2007/2010 的审查标签中找到)
    • @bonCodigo 我已经检查了工作簿保护设置中有哪些选项可供我使用,但这并没有为我提供简单保护工作表并保持其他所有选项打开的选项。例如,它没有让我选择让用户输入更多行或在数据表中删除它们。
    • @MikeD 工作簿“结构”命令不在 Excel 2007 中。它出现在 Excel 2010 中。事实上,否则我会使用这个命令!
    • @excelnova 您可以编写带有工作表激活事件的 VBA,或者您可以编写一个 VBA 来保护您需要的工作表,让其他所有内容保持打开状态。
    • 谢谢 ;) 让我给您发布一个经过测试的样本,以确保只有 x、y、z 表不能被删除,其余表对用户的任何操作都是开放的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多