VBA查找功能不适用于变量

时间:2013-11-21 15:49:41

标签: excel vba variables excel-vba find

我正在创建一个工作表,需要应用程序在excel工作表中搜索保存在变量中的值。
我正在使用“.Find”功能。
我的问题是,当它存储在变量名中时,找不到要搜索的值,尽管它在我输入实际值时起作用。

例如:

这是有效的

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

代码中的......只显示我在其间有其他代码执行不同的操作

你能发现我的错误吗? 我也对其他可以同样有效的搜索方法提出建议。 非常感谢。

2 个答案:

答案 0 :(得分:1)

也许试试

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

或者如果您希望保持.Value.Text不起作用,您可以尝试转换为字符串:

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

我相信.Value会返回日期而不是字符串。并且工作代码使用字符串。

答案 1 :(得分: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}}