使用间接命名范围进行验证

时间:2014-12-23 13:32:19

标签: excel vba validation excel-vba

(我在法语中使用Excel)

我正在使用验证下拉列表更新和清理工作表。

这些下拉列表中的值来自工作表的32个命名范围之一(ListeOP,Liste1000,Liste2000等),具体取决于其他单元格。

目前,细胞验证是:
- 授权:列表
- 来源(展开):

=INDIRECT(
  SI(
    ET(A8<>"";A8=B8);
    "ListeOP";
    SI(
      A7<>"";
      CONCATENER(
        "Liste";
        A7
      );
      SI(
        A8=B8;
        "ListeOP";
        CONCATENER(
          "Liste";
          A8
        )
      )
    )
  )
)

这项工作但实际上难以理解且难以维护。我想创建一个VBA函数来确定要使用的命名范围。

Public Function GetActivityComboBox(activity As Integer, family As Integer, familyTop As Integer) As String
    If (family > 0 And activity = family) Then
        GetActivityComboBox = "ListeOP"
    ElseIf (familyTop > 0) Then
        GetActivityComboBox = "Liste" & familyTop
    ElseIf (family = activity Or family = 0) Then
        GetActivityComboBox = "ListeOP"
    Else
        GetActivityComboBox = "Liste" & family
    End If
End Function

新的验证来源:

=INDIRECT(GetActivityComboBox(B8;A8;A7))

但我收到错误:无法找到您指定的指定范围(翻译)

我已经检查过我的VBA函数返回正确的范围名称。

我错过了什么?或者是否有人有另一种想法来获得相同的行为(简言之:变量验证列表)

0 个答案:

没有答案