用variables评估匹配function

我想通过VBA使用这个 –

=MATCH("PlanA",A:A,0) 

EVALUATE

 Sub Test() Dim SectionStartRow As Integer Dim planname As String planname = "PlanA" SectionStartRow = [MATCH(planname,A:A,0)] 'Error 2029 /// Type mismatch '13 End Sub 

我已经试过了:

 SectionStartRow = Evaluate("MATCH(planname,A:A,0)") 'Error 2029 /// Type mismatch '13 

 SectionStartRow = Evaluate("MATCH(" & planname & ",A:A,0)") 

但似乎没有任何工作。 请注意, plannamevariables被一组很长的函数拒绝。

问题在于planname需要用string引号来包装。 等价的excel =MATCH("PlanA",A:A,0) ,传递给Evaluate的string应该与下面的一样:

 SectionStartRow = Evaluate("=MATCH( " & Chr(34) & planname & Chr(34) & ",A:A,0)") 

行得通(用Excel 2010testing)

Chr(34)代表ASCII编号中的符号。

另一种方法是定义

 planname = Chr(34) & "PlanA" & Chr(34) 

然后执行SectionStartRow = Evaluate("=MATCH( " & planname & ",A:A,0)")

顺便说一下,我将SectionStartRow定义为Long而不是Integer ,因为如果匹配的行在32,767之后, Integer将会抛出一个错误。

还要注意,在这种情况下, Evaluate (即方括号[] )的简写forms将不起作用。 它只在括号内的所有内容是常量而不是variables时才起作用。

我希望这有帮助!