2013-03-06 243 views
2

我有一个表单,它有一个项目清单,根据表单选择取消隐藏相关的项目表。由于项目名称的长度,每个项目都分配了一个ID。 vlookup函数旨在根据另一个工作表中名称的匹配检索相关ID。Excel中VBA的vLookup错误

代码如下。

传入的fundName值是“AX - Arnold Xchange Securities(USD)”。 fundID位于正在搜索的数组的第5列。 基金ID肯定存在

这里的问题是,它给我一个运行时错误,它无法获得函数类的vLookup属性。错误1004

Private Sub FundLookupImage_Click() 

Dim fundName As String 
Dim fundSheetName As String 
Dim ws As Worksheet 

Set ws = Worksheets("DownloadTable") 
MsgBox ws.UsedRange.EntireRow.Count 

fundName = Me.FundList.Value 
fundName = """" & fundName & """" 
MsgBox fundName 

fundSheetName = CStr(Application.WorksheetFunction.VLookup(fundName, ws.Range("A:F"), 5, True)) 
MsgBox fundSheetName 

Unload Me 
End Sub 

我测试过用Excel本身的VLOOKUP方法,它获取正确的ID

+0

你的vlookup看起来是正确的(如果你确定列表是有序的 - 如果不删除'True')。你确定你需要把'fundName'放在引号中吗?尝试删除'fundName =“”“”&fundName&“”“”'... – 2013-03-06 08:55:48

回答

1

使用VLOOKUP让我总是疯狂的时候我不得不使用它,请试试这个:

DIM searchResult AS variant 
    searchResult = 0 
    On Error Resume Next 
    searchResult = Application.WorksheetFunction.VLookup(fundName, ws.Range("A:F"), 5, 0) 
    fundSheetName = CStr(searchResult) 
+0

嗨!它适用于该错误恢复。猜猜我现在必须首先隔离它。谢谢!!! – 2013-03-06 09:51:33