在VBA验证列表中包含Excel对象名称

时间:2017-07-03 19:08:53

标签: excel-vba validation excel-2010 vba excel

在回答另一个问题时,我看到了一个建议的验证列表条目示例:

 With rng.Validation
     .Delete 'delete previous validation
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
     Formula1:="='" & ws.Name & "'!" & range1.Address
 End With

这很好但是,如果可能的话,不是在Formula1中包含工作表的名称,而是包括Excel对象名称(例如Sheet1,Sheet2等)。这样,如果有人选择重命名工作表,那么宏仍然可以未经编辑工作。

这是可能的,如果是这样,那么将它包含在Formula1中的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

只需使用,我建议所有情况,范围的地址包括工作表的名称​​含蓄地

Formula1:="=" & range1.Address(External:=True)

External:=True将在引用中包含父表,无论它现在是什么,然后它会在以后更改。

P.S。工作表的名称将出现在公式中,但如果用户更改工作表名称,Excel将自动更新引用它的所有公式,除非在INDIRECT函数内。所以你担心的问题不是一个实际问题。

将此视为仅建议设置外部引用的方法。