将variables传递到VBA中的VLOOKUP

我有这个代码:

currName = "string" 'unused cellNum = [VLOOKUP("string", '2012'!A:M, 13, FALSE)] 

但我需要用名为currName的VBA代码中的variablesreplace"string" 。 我试过这个:

 currName = "string" 'used cellNum = [VLOOKUP(currName, '2012'!A:M, 13, FALSE)] 

什么是适当的语法? 当我尝试使用variables的第二部分时,我得到的问题是它返回无效的数据(就像我input回到单元格,它是#NAME? )。 currName只是等于“string”。 在没有使用variables的情况下,它在第一个例子中工作正常。

之前我还没有看过方括号。 通常这些是Range对象的快捷方式。 我能够复制你的错误条件。

你可以使用这样的东西,而不是。 这两个分配到cellNum没有错误的工作:

 Sub Test2() Dim wsFunc As WorksheetFunction: Set wsFunc = Application.WorksheetFunction Dim ws As Worksheet: Set ws = Sheets("Sheet1") Dim rngLook As Range: Set rngLook = ws.Range("A:M") Dim cellNum As Range Dim currName As String currName = "string" 'unused Set cellNum = ActiveCell cellNum = wsFunc.VLookup("string", rngLook, 2, False) cellNum = wsFunc.VLookup(currName, rngLook, 2, False) End Sub 

使用Evaluatefunction。 公式本身就是一个string,所以你必须把所有东西连接成一个string:

 cellNum = Evaluate("VLOOKUP(""" & currName & """, '2012'!A:M, 13, FALSE)")