评估()不工作

我是新来evaluate 。 所以如果下面的代码工作

 If Evaluate("=NOT(ISERROR(MATCH(" & temp & ",C:C,0)))") Then 

为什么这下面没有?

 If Evaluate("=NOT(ISERROR(MATCH(" & c & ",sal,0)))") Then 

temp是一个string,而c是一个数组中的一个元素,它也被看作是一个string。 C:C是活动页面上的范围。 萨尔是一个单独的工作表范围。

 Set wsSal = ThisWorkbook.Worksheets("Sal Sum") Set sal = wsSal.Range("C17:C50") 

我努力了

 If Evaluate("=NOT(ISERROR(MATCH(c ,sal,0)))") Then 

这给我一个运行时错误13types不匹配。

如果不工作,前者进入if语句,后者则不行。

sal定义为对象variables并将其设置为范围,您可以创build名为sal的定义名称。

从工作表中打开名称pipe理器。

input名字“sal”

Refers To字段中,input='Sal Sum'!$C$17:$C$50

确认名称。

现在,您可以按照您所描述的方式使用Evaluate()。

UPDATE

这是另一种方法,你可能会觉得更容易维护。

使wsSal成为模块级variables。

使sal_模块级常量:

 Const sal = "C17:C50" 

做一个function:

 Function sal() sal = wsSal.Range(sal_) End Function 

现在,您可以按照您所描述的方式使用Evaluate()。