保护某些单元格的内容而不保护工作表

保护某些单元格的内容而不保护工作表

我们有一个包含多个选项卡的 Excel 2016 工作簿,每个选项卡专用于一个特定的销售人员。每个销售人员都从表单登录,并且他的(只有他的)工作表已解锁并允许编辑。

有一个表格显示了他的过去数据。他可以更新或更改表格中的大部分数据。他更新特定单元格,保存并关闭工作簿。工作簿关闭过程会重新锁定他的工作表。在他离开之前,他可以查看其他销售人员的工作表,但无法编辑,因为它们已被锁定。

现在问题来了。在每张销售人员的工作表上,某些列(所有销售人员都一样)包含管理员输入的数据。这些数据必须可供销售人员查看,但不得更改。

关于如何保护某些列免受未受保护的工作表上的现有内容更改的影响的任何想法。

答案1

如果不查看 VBA 代码,很难确定锁定/解锁是如何发生的。我假设它是通过设置locked单元格的属性以及使用工作表保护和取消保护功能来完成的。

您需要做的是选择所有允许编辑的销售,然后为它们创建自定义范围。我手边没有 Excel,但我相信它有Data>Define Custom Range您可以从同一位置选择一个范围,它将自动选择 Excel 中的单元格。

除了使用自定义范围之外,您还可以选择必要的列,前提是管理数据不在同一列。这样就可以了activesheet.range("K:L").select

在 VBA 代码中,解锁工作表后,必须选择此范围并更改locked这些单元格的设置,然后再次保护工作表。退出时必须执行相反的操作(取消保护、设置全部锁定、保护)。

要找出正确的 VBA 代码,请在录制宏时手动执行操作并复制代码。

答案2

LPChip 让我走上了正确的道路,非常感谢。我使用的流程如下:

  1. 在销售人员表上,将整个表的锁定属性设置为 false
  2. 在该销售人员的表上,将整个表的锁定属性设置为 true
  3. 根据 LPChip 的建议,我们创建了一个自定义范围,其中包含所有我们不想让任何人编辑的列。手动执行此操作并分配一个范围名称 (LockedColumns)。
  4. 然后保护该表,这是该表以及所有其他销售表的起始条件。

  5. 销售人员登录后,凭借正确的凭证,进入他/她的工作表,后台的 vba 代码中发生以下情况:

    • 我们选择表并将锁属性设置为 false
    • 我们选择 Range.("LockedColumns").select 并将锁定属性设置为 true
    • 我们保护工作表。

这样,授权的销售人员就可以将数据输入到我们允许的单元格中,并阻止他们更改我们不希望更改的单元格中的数据。销售人员可以查看其他销售选项卡,但不能修改。当销售人员注销或工作簿关闭时,我们会在关闭前进行捕获,并在 vba 代码中执行以下操作:1. 再次选择完整表格,将锁定属性设置为 true,然后保护工作表。我们保存,然后重定向回菜单选项卡以供下一个用户使用。

我当时很困惑,LP 让我大开眼界。再次感谢你。

相关内容