2015-05-12 75 views
0

當我參考下面的vlookup VBA代碼中的特定單元格時,我可以得到代碼以返回正確的答案。Vlook代碼Vlookup

Application.VLookup(Sheets("Setup").Cells(2, 1), 
Sheets("Download").Range("A:G"), 7, 0) 

但是,如果我有一個變量(VLDate)替換代碼,然後我得到一個錯誤

Application.VLookup(VLDate, Sheets("Download").Range("A:G"), 7, 0) 

我試圖讓昏暗VLDate作爲字符串但這並沒有工作過。

有什麼建議嗎?

+0

你是什麼意思的'沒有工作'?你有錯誤信息嗎?它沒有找到任何東西嗎?你將「VLookup」的結果返回給什麼人?提供更多的代碼和更多的上下文,以便我們爲您提供幫助。 – FreeMan

回答

0

在你的例子中Sheets("Setup").Cells(2,1)不是一個字符串。

Cells返回範圍。

Dim VLDate As Range 
Set VLDate = Sheet("Setup").Cells(2,1) 

如果你的第一個例子工作,使用上面的代碼來設置VLDate的值應該讓你的第二個例子也工作。

編輯 可能有人誤解了你的問題,所以雖然上面是真的,但它可能沒有幫助!

您能否提供VLDate的示例值,以及單元格格式類型和其查找範圍中的示例值?

+0

根據MSDN:https://msdn.microsoft.com/en-us/library/office/ff196273.aspx – NickSlash

+0

Bah!你是對的,我的壞... – FreeMan

0

我想我知道問題是什麼。 vlookup的第一個輸入必須與您要查找的數據類型相同。例如,如果在搜索的單元格中只有數字,則嘗試將VLDate標註爲數字,如果嘗試將其變暗爲字符串,則不會找到匹配項,並會給您類型不匹配錯誤。

可以將VLDate調暗爲variant,這很容易,但如果要查找數字,請不要使用引號。

嘗試加入,進行調試,線路

MsgBox(CStr(Application.VLookup(Sheets("Setup").Cells(2, 1), Sheets("Download").Range("A:G"), 7, 0)) 

,如果你惱火一個MsgBox與Error 2042它menas它無法找到匹配,因此,你應該使用了錯誤的數據類型。

使用字符串的唯一情況是目標單元格在其公式中包含=「21」之類的內容,因爲它是一個字符串。

希望它有幫助