我是evaluate
的新手。因此,如果以下代码有效
If Evaluate("=NOT(ISERROR(MATCH(" & temp & ",C:C,0)))") Then
为什么下面没有这个?
If Evaluate("=NOT(ISERROR(MATCH(" & c & ",sal,0)))") Then
temp是一个字符串,c是数组中的一个元素,它也看起来也是一个字符串。 C:C是活动表上的范围。 sal是单独表格上的范围。
Set wsSal = ThisWorkbook.Worksheets("Sal Sum")
Set sal = wsSal.Range("C17:C50")
我试过了
If Evaluate("=NOT(ISERROR(MATCH(c ,sal,0)))") Then
这给我一个运行时错误13类型不匹配。
通过不工作,前者输入if语句,后者不输入。
答案 0 :(得分:2)
您可以创建一个名为sal
的已定义名称,而不是将sal
定义为对象变量并将其设置为范围。
从工作表中打开名称管理器。
输入姓名' sal`
在Refers To
字段中,输入='Sal Sum'!$C$17:$C$50
确认姓名。
现在,您可以按照您所描述的方式使用Evaluate()和sal
。
<强>更新强>
这是您可以更容易维护的另一种方式。
使wsSal
成为模块级变量。
使sal_
成为模块级常量:
Const sal = "C17:C50"
创建一个功能:
Function sal()
sal = wsSal.Range(sal_)
End Function
现在,您可以按照您所描述的方式使用Evaluate()和sal
。