【发布时间】:2014-10-21 09:54:20
【问题描述】:
我想在 VBA 代码中使用 VLookup 从不同的工作簿 (Excel 2010 VBA) 中查找值。我在下面代码的最后一行收到上述错误:
Sub GetFundValues(Source As String, Target As String, wb As Workbook)
Dim nIdx As Integer
Dim SourceSheet As Worksheet
Dim SourceFile As Workbook
Dim s2 As String
Dim s3 As String
Dim rng As Range
s2 = wb.Sheets(Target).Range("C2").Value
Set SourceFile = Application.Workbooks.Open("D:\Mydocs\Finance\inv.xls")
Set SourceSheet = SourceFile.Worksheets(Source)
s3 = SourceSheet.Range("A3").Value
Set rng = SourceSheet.Range("A3:A30")
nIdx = 3
With wb.Sheets(Target)
While wb.Sheets(Target).Range("H" & nIdx).Value <> ""
s2 = wb.Sheets(Target).Range("H" & nIdx).Value
wb.Sheets(Target).Range("B" & nIdx).Value = Application.WorksheetFunction.VLookup(s2, rng, 3, False)
s2、s3 和 rng 变量的值设置正确(它们用于调试目的),并且 Vlookup 中的值列(第 3 列)包含有效值。
我想不出 VLookup 中的其他问题可能会导致此问题。有什么想法吗??
【问题讨论】:
-
您已将 s2 声明为字符串,您是否正在查找数字?如果是这样,请尝试将 s2 声明为数值数据类型。
-
查找搜索项为字符串,返回值为数字。那么想必这段代码就OK了?