用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)")
但似乎没有任何工作。 请注意, planname
variables被一组很长的函数拒绝。
问题在于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时才起作用。
我希望这有帮助!