(我在法语中使用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函数返回正确的范围名称。
我错过了什么?或者是否有人有另一种想法来获得相同的行为(简言之:变量验证列表)