2013-11-21 44 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

相关问题