-1
我有两个工作簿:一个是宏,另一个是数据。我试图用数据在工作簿中查找值,但它不起作用。在到达VLookup
的代码后,它停止,并且之后的所有内容都不会执行。VLookup无法正常工作
我检查了所有我能想到的东西,但找不到错误的根源。我检查了是否可以访问数据工作簿中的某个随机单元格:MsgBox (budgetWorkbook.Sheets("sheet 1").Range("E16").Value)
,它工作正常。
我检查了我的搜索值是否与数据工作簿的A列中的相应值相等,它的工作原理 - 它是msgboxes“Equals”。
Dim i As Integer
Dim budgetItemSheetName As String
i = 1
Dim budgetItemValue As Long
MsgBox (budgetWorkbook.Sheets("sheet 1").Range("E16").Value) 'shows up
If budgetItemNames(i) = budgetWorkbook.Sheets("sheet
1".Range("A16").Value) Then
MsgBox("Equals") 'shows up
End If
budgetItemValue = Application.VLookup(budgetItemNames(i), _
budgetWorkbook.Sheets("sheet 1").Range("A:B"), _
2, False) 'fails, but it should find the search value in A16 cell and give B16 cell's value
resultArray(i) = budgetItemValue 'doesn't work
MsgBox (budgetItemValue) 'doesn't show up
有人可以告诉我我在做什么错吗?
编辑:看起来像VLookup
非常糟糕。将不得不使用自定义搜索功能。 VLookup
开发者应该在地狱里燃烧。
是否检查'budgetItems(I)'是在查找范围内,但你有没有检查'budgetItemNames(i)'是否在查找范围内? (如果你没有在所有的代码模块中使用Option Explicit,学会这么做 - 你不会后悔的。) – YowE3K
它是如何失败的?它会抛出一个错误吗?当你手动输入公式时它是否工作? – RealCheeseLord
VLookup对数据类型很挑剔,而VBA中的相等运算符非常宽容。例如,如果一个单元格被格式化为一个字符串,而另一个整数VLookup将不会找到该值,即使它们在文本上相同。 –