存储命名范围信息的最佳方法是什么?

时间:2016-05-09 03:38:33

标签: excel vba excel-vba

存储命名范围信息的最佳做法是什么?

背景是:我们根据一些参数从Web服务检索数据,例如数据源,开始日期和结束日期。我们将数据检索到命名范围,例如A1:D10。用户可以稍后刷新命名范围,或与他的同事共享工作簿。

目前,我们将命名范围的名称和其他参数(例如数据源,开始日期和结束日期)存储到工作表自定义属性中。稍后再次打开工作簿时,我们会从自定义属性中读取命名范围的名称,数据源,开始日期和结束日期。因此,最终用户可以在需要时刷新命名范围的数据。

由于用户可能会插入/删除行/列,因此我们无法存储命名的范围地址(R1C1),因此将更改命名的范围地址。然后我们必须将命名范围的名称存储到自定义属性。

但问题是:命名范围的名称也可以更改。用户可以点击公式 - >名称管理员更改名称。目前我们必须教育我们的最终用户不要这样做。但绝对不是最佳解决方案。

你能给我一些建议吗?存储命名范围信息及其相关信息的最佳实践是什么?感谢。

2 个答案:

答案 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

“名称管理器”对话框如下所示(请注意“新建...”,“编辑...”和“删除”按钮显示为灰色)

enter image description here

因此无法更改命名范围。但是,仍然可以编辑所有单元格,并插入或删除行/列。

在消极方面,新的命名范围也不能添加到该工作表。

答案 1 :(得分:1)

在Google群组中,建议使用隐藏范围。从UX的角度来看,它似乎比锁定工作表更好。

请参阅https://groups.google.com/forum/#!topic/exceldna/U8qeOpHiuI8

有任何评论吗?感谢。