【发布时间】:2017-10-06 11:41:37
【问题描述】:
我需要一段 VBA 编码来帮助我完成一个项目。我对 VBA 的了解非常基础,所以我很挣扎。由于我已经阅读了类似的请求,但仍然未能完成代码,因此我提供了尽可能多的详细信息。
我有一系列“两列”(Pattern 和 Desks)(x7),代表星期天 - 星期六一周的 7 天。每天的左栏代表轮班模式,每天的右栏代表分配给每个人的办公桌。有一些空白列,所以我正在使用名称范围。
移位模式列 x7 位于左侧,并定义为名为“模式”的范围。办公桌列位于每个班次列的右侧,并定义了一个名为 Desks 的范围。这些列大约有 25 个单元格。但这因工作簿而异。因此使用命名范围。
我想锁定名为“Desks”的命名范围中的每个单元格,其中未填充名称范围“Pattern”中左侧的单元格 -1 列。
工作表已被选中且未受保护,并且名为 Desks 的范围已解锁。
Sheets("Assign Desks").Select
ActiveSheet.Unprotect
Application.Goto Reference:="Desks"
Selection.ClearContents
'Unlock Cells
Selection.Locked = False
在锁定单元格的代码之后,工作表受到保护,功能区隐藏,屏幕拆分以显示到工作表。这工作正常。
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
其他信息 Pattern 列包含一个公式,该公式在刷新数据(粘贴到工作簿的另一工作表)时显示模式。两列都包含条件格式,以便在填充后格式化单元格。
刷新后,用户需要为每个班次分配办公桌(这不能自动化,因为需要人工决策。)但是我希望用户能够从可用列表中选择需要分配办公桌的单元格剩余的可用办公桌。我希望单元格没有被跳过(因此被锁定)。 Part of worksheet
【问题讨论】: