如何保护工作表名称而不是整张工作表?

时间:2011-12-15 11:55:32

标签: excel excel-vba vba

我需要通过阻止

来保护工作表名称
  • 对工作表名称的任何更改,或
  • 正在删除的表格。

必须使用{{1>}或Protect Sheet选项 >保护整个工作表。

有没有办法用VBA做到这一点?

3 个答案:

答案 0 :(得分:1)

  1. 右键单击要保护的工作表标签
  2. 查看代码
  3. 复制并粘贴以下代码
  4. 此代码在激活工作表时禁用工作表上的删除控件(但不能右键单击单元格)菜单。工作表取消激活时启用控件

    当取消激活工作表时,代码也会将工作表命名为“NameOfSheet”。这是一种防止重新命名工作表的解决方法

    Private Sub Worksheet_Activate()
    Application.CommandBars.FindControl(ID:=847).Enabled = False
    End Sub
    
    Private Sub Worksheet_Deactivate()
    Application.CommandBars.FindControl(ID:=847).Enabled = True
    Me.Name = "NameOfSheet"
    End Sub
    

    protect sheet1

答案 1 :(得分:0)

我认为你不能。您可以做什么,您可以使工作表成为一个非常隐藏的工作表(只能从VBA访问),如果是已删除的工作表,您可以复制它并使副本可见。

答案 2 :(得分:0)

这种方法有用吗?

  1. 选择工作表中的所有单元格,然后使用“锁定”对所有单元格进行UN锁定 单元格“(挂锁的黄色背景变白)。
  2. 在(固定或命名)单元格中写入工作表的名称,然后锁定 此单元格(“锁定单元格”,挂锁背景变为黄色)。
  3. 然后保护工作簿,但允许除第一个操作之外的所有操作 “选择锁定的单元格”。

    除了选择带有sheetname的单元格(并删除行/列)之外,用户可以执行所有操作。

  4. 现在编写一个VBA来比较实际的工作表名称和受保护的命名单元格中的数据(或固定引用,例如A1)。

  5. 在每次更改(可能太多)或至少关闭时运行此脚本 工作簿。
  6. 只要工作表名称始终位于同一单元格(例如A1)中,您就可以遍历所有工作表,将其名称与单元格A1中的数据进行比较,并在需要时更正工作表名称。