2017-08-24 72 views
-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开发者应该在地狱里燃烧。

+0

是否检查'budgetItems(I)'是在查找范围内,但你有没有检查'budgetItemNames(i)'是否在查找范围内? (如果你没有在所有的代码模块中使用Option Explicit,学会这么做 - 你不会后悔的。) – YowE3K

+0

它是如何失败的?它会抛出一个错误吗?当你手动输入公式时它是否工作? – RealCheeseLord

+0

VLookup对数据类型很挑剔,而VBA中的相等运算符非常宽容。例如,如果一个单元格被格式化为一个字符串,而另一个整数VLookup将不会找到该值,即使它们在文本上相同。 –

回答

1

只是做一个小的测试用小查找表,列A和列B和单元格D1中查找值:

Public Sub TestVLookup() 

Dim wb As Workbook 
Dim rng As Range 

Set wb = Application.ThisWorkbook 
Set sht = Application.Sheets("Tabelle1") 

budgetItemValue = Application.VLookup(Cells.Range("D1"), sht.Range("A1:B5"), 2, False) 
Debug.Print "The Result is " & budgetItemValue 

End Sub