使用vba和命名范围创建条件列表

使用vba和命名范围创建条件列表,vba,list,conditional-statements,Vba,List,Conditional Statements,用于创建动态列表的公式(使用命名范围MDES,M01DES,…)不起作用: Range("Tableau1[Code DES d''affectation]").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1

用于创建动态列表的公式(使用命名范围
MDES
M01DES
,…)不起作用:

Range("Tableau1[Code DES d''affectation]").Select
    With Selection.Validation
        .Delete
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "=si(B2=""M"",MDES,si(B2=""M01"",M01DES,si(B2=""P"",PDES,si(B2=""P01"",P01DES,si(B2=""P02"",P02DES,si(B2=""M01"",M01DES,si(B2=""O01"",O01DES)))))))"
你能帮我解决这个问题吗


谢谢

正确的公式是

范围(“表1[做作代码]”)。选择 Selection.FormatConditions.Add类型:=xlExpression,公式1:=_
“=SI(B2=”“P02”“;NB.SI(P02DES;W2)=0;SI(B2=”“O01”“;NB.SI(O01DES;W2)=0;SI(B2=”“P01”“;NB.SI(P01DES;W2)=0;SI(B2=”“M”“;NB.SI(MDES;W2)=0;SI(B2=”“M01”“;NB.SI(M01DES;W2)=0;SI(B2 ODES;NB=“”);NB.SI(W2=“”)”)编码是否意味着

?或者这是自定义功能?是的。我也试过用英文“=if(B2=”“M)”,MDES,if(B2=”“M01“”,M01DES;”“)”对我来说,最后一个

if()
不包含
else
部分。。。因此,您必须将:
si(B2=”“M01“”、M01DES、si(B2=”“O01“”、O01DES))
替换为
si(B2=”“M01“”、M01DES、O01DES)
。让我知道它是否有用。不,它不起作用:它不显示列表,但显示公式