2011-12-15 76 views
2

我需要防止如何保护工作表名称不是整个工作表?

  • 工作表名称的任何变化,或
  • 被删除的表保护工作表名称。

必须这样做而不保护使用Protect SheetProtect Workbook选项的整个片材。

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

+0

恐怕你不能因为每一个表或工作簿时我曾尝试在这些情况下 – JMax 2011-12-15 15:26:58

+0

不会被触发也许解释你正在努力做,有人可能会提供帮助。工作簿中的每张工作表都有一个唯一的CodeName,您可以以这种方式参考工作表吗?至于防止工作表删除,没有太多的阻止它,但你可能会阻止保存该工作簿 – datatoo 2011-12-15 15:49:20

回答

1
  1. 右键单击您想要保护
  2. 查看代码
  3. 复制并粘贴到下面的代码

此代码禁用表上删除控制工作表标签(但当表单被激活时,不要右键单击单元格)。当工作表被禁用时,该控件被启用

当工作表被禁用时,代码还将命名工作表“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

0

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

0

此方法是否有效?

  1. 在片材选择所有细胞,然后UN-锁定所有细胞与“锁定 细胞”(挂锁的黄色背景变白)。
  2. 在(固定或命名)单元格中写入工作表的名称,然后锁定该单元格(“锁定单元格”,挂锁背景变为黄色) 。
  3. 然后保护工作簿,但允许除第一个以外的任何操作 “选择锁定的单元格”。

    用户可以做所有事情,除了使用图纸名选择单元格(以及删除行/列)。

  4. 现在编写一个VBA,将实际图纸名称与受保护的命名单元格中的数据(或固定引用,例如A1)中的数据进行比较。

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

谢谢大家。我的查询是如何避免表单的重命名。禁用右键单击删除选项。 – user1049518 2011-12-16 06:30:06