存储命名范围信息的最佳做法是什么?
背景是:我们根据一些参数从Web服务检索数据,例如数据源,开始日期和结束日期。我们将数据检索到命名范围,例如A1:D10。用户可以稍后刷新命名范围,或与他的同事共享工作簿。
目前,我们将命名范围的名称和其他参数(例如数据源,开始日期和结束日期)存储到工作表自定义属性中。稍后再次打开工作簿时,我们会从自定义属性中读取命名范围的名称,数据源,开始日期和结束日期。因此,最终用户可以在需要时刷新命名范围的数据。
由于用户可能会插入/删除行/列,因此我们无法存储命名的范围地址(R1C1),因此将更改命名的范围地址。然后我们必须将命名范围的名称存储到自定义属性。
但问题是:命名范围的名称也可以更改。用户可以点击公式 - >名称管理员更改名称。目前我们必须教育我们的最终用户不要这样做。但绝对不是最佳解决方案。
你能给我一些建议吗?存储命名范围信息及其相关信息的最佳实践是什么?感谢。答案 0 :(得分:1)
根据您提供的内容......
我会考虑保护包含指定范围的工作表。保护工作表会更改用户无法使用的命名范围的名称。你可以做到这么多东西仍然可用:所有细胞都已解锁,能够插入行/列等等。
例如,考虑具有Sheet1的工作簿,该工作簿具有A1:A3调用Numb的命名范围。运行此宏后......
Sub test()
Dim mySht As Worksheet
Set mySht = Worksheets("Sheet1")
With mySht
.Unprotect
.Cells.Locked = False
.Protect UserInterfaceOnly:=True, AllowInsertingRows:=True, _
AllowDeletingRows:=True, AllowInsertingColumns:=True, _
AllowDeletingColumns:=True
End With
End Sub
“名称管理器”对话框如下所示(请注意“新建...”,“编辑...”和“删除”按钮显示为灰色)
因此无法更改命名范围。但是,仍然可以编辑所有单元格,并插入或删除行/列。
在消极方面,新的命名范围也不能添加到该工作表。
答案 1 :(得分:1)
在Google群组中,建议使用隐藏范围。从UX的角度来看,它似乎比锁定工作表更好。
请参阅https://groups.google.com/forum/#!topic/exceldna/U8qeOpHiuI8。
有任何评论吗?感谢。