0

我有这个代码:

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

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

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

什么是合适的语法?当我尝试使用变量的第二部分时,我遇到的问题是它返回了无效数据(就像我将它输入回单元格一样,它是#NAME?)。currName只是等于“字符串”。在没有使用变量的情况下,它在第一个示例中运行良好。

4

2 回答 2

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
于 2013-07-18T17:13:24.437 回答
1

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

cellNum = Evaluate("VLOOKUP(""" & currName & """, '2012'!A:M, 13, FALSE)")
于 2013-07-18T17:12:01.333 回答