2013-11-21 41 views
1

我正在創建一個工作表,該工作表需要應用程序搜索Excel表格以獲取保存在變量中的值。
我正在使用「.Find」功能。
我的問題是,當它被存儲在一個變量名稱中時,無法找到正在搜索的值,儘管它在我輸入實際值時起作用。VBA查找函數不能與變量一起工作

例如:

這個作品

Dim cellersd, celltid, ersdcol, tidcol 
Set cellersd = book.Worksheets(mon & yer).Range("5:5").Find("28/08/2013") 
Set celltid = book.Worksheets(mon1 & yer1).Range("5:5").Find("30/09/2013") 

If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 

這並不工作

rsd = Worksheets("workload").Range("p4").Value 
tid = Worksheets("workload").Range("p3").Value 
... 

Dim cellersd, celltid, ersdcol, tidcol 
Set cellersd = book.Worksheets(mon & yer).Range("5:5").Find(rsd) 
Set celltid = book.Worksheets(mon1 & yer1).Range("5:5").Find(tid) 

If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 

的...代碼只是表明我有插圖中,其執行不同的操作

其他代碼

你能發現我的錯誤嗎? 我也樂於接受其他可以同樣工作的搜索方法的建議。 非常感謝。

+0

你試圖找到一個字符串變量或日期變量? –

+0

在這行'tid =工作表(「工作量」)。範圍(「p3」).value'之後,鍵入這個並告訴我你是怎麼得到的'Msgbox rsd&「和」&len(rsd)' –

+0

@SiddharthRout i得到的日期人物的長度 – ChiomaJenni

回答

1

也許嘗試

rsd = Worksheets("workload").Range("p4").Text 
tid = Worksheets("workload").Range("p3").Text 

,或者如果你想保留.Value.Text不工作,你chould嘗試轉換爲字符串:

rsd = str(rsd) 
tid = str(tid) 

相信.Value返回的日期,而不是串。而工作代碼正在使用一個字符串。

+0

好吧我會盡力感謝 – ChiomaJenni

+1

工作就像一個魅力@ hessr17謝謝 – ChiomaJenni

+1

我轉換爲字符串,它的工作 – ChiomaJenni

1

這應該工作

使用What:=rsd,如果它是變量,使用What:="something"如果它是在「」確切的詞。

如果你需要找到變量變量然後使用:

Set find1 = variable1.Find(What:=variable2, LookIn:=xlValues) 

'Both work 
rsd = Worksheets("workload").Range("P4") 
tid = Sheets("workload").Range("P3") 
... 

Dim ersdcol, tidcol 
Dim cellersd As Object 
Dim celltid As Object 

Set cellersd = Sheets("mon & yer").Range("5:5").Find(What:=rsd, LookIn:=xlValues) 
Set celltid = Sheets("mon1 & yer1").Range("5:5").Find(What:=tid, LookIn:=xlValues) 


If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 
+1

它爲什麼工作?說明。另外,請格式化您的文章,以便正確縮進代碼。看看這篇文章的更多細節:http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks – rayryeng

相關問題