我正在创建一个工作表,需要应用程序在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
代码中的......只显示我在其间有其他代码执行不同的操作
你能发现我的错误吗? 我也对其他可以同样有效的搜索方法提出建议。 非常感谢。
答案 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}}