【问题标题】:Workbook_NewSheet(Byval Sh as Object)Workbook_NewSheet(Byval Sh 作为对象)
【发布时间】:2016-01-04 04:02:11
【问题描述】:

我对 ThisWorkbook 实施了 2 个不同级别的授权访问。级别 1 只允许用户修改特定的可见工作表,不授权他/她做任何其他事情,包括添加新工作表。 (并且允许 2 级用户查看所有内容并对工作簿执行任何操作)。

我的问题是如何防止 1 级用户尝试创建新工作表。我正在尝试使用“Workbook_NewSheet”事件来处理此事件,方法是在创建此工作表时立即删除它。但是,参数“Sh”是按值传递的,并且是“对象”,而不是“工作表”。我无法修改(或删除)这个“Byval”对象。

有人有什么建议吗?

谢谢,

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以通过使用密码保护工作簿来做到这一点

    保护工作簿的结构将阻止用户插入新的工作表或图表工作表。 Password protect worksheet or workbook elements

    【讨论】:

    • 谢谢,太好了。我会尝试实现这一点。
    【解决方案2】:

    您可以参考Sh,如下所示。下面的代码关闭警报,删除新创建的工作表,然后重新打开警报。

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

    【讨论】:

    • 谢谢,它有效。你能解释一下为什么这个“Byval”变量“Sh”被修改了,即使它没有传递“Byref”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多