将变量传递到VBA中的VLOOKUP

时间:2013-07-18 16:27:52

标签: excel vba

我有这段代码:

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

但我需要将"string"替换为名为currName的VBA代码中的变量。我试过这个:

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

什么是合适的语法?当我使用变量尝试第二部分时,我得到的问题是它返回无效数据(就像我将其输入一个单元格,它是#NAME?)。 currName简单地等于“字符串”。它在第一个例子中没有使用变量就可以正常工作。

2 个答案:

答案 0 :(得分:3)

我之前没见过以这种方式使用的方括号。通常这些是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

答案 1 :(得分:1)

使用Evaluate功能。公式本身就是一个字符串,因此您必须将所有内容连接成一个字符串:

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