2017-08-24 80 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