[英]VBA Find Function not working
我正在尝试使用 vba 代码在另一张表中搜索一个值并返回行号,以便可以用字符串填充相邻的单元格。 问题是“findrow”返回空白。 当我尝试运行并将鼠标悬停在该部分上时,“.find(findrng) 显示为 14/01/17。
如果我将 Findrng 更改为诸如“Home”之类的单词并将其输入文件中,则代码将返回正确的行号,因此问题一定出在日期上。 任何人都可以帮助使用 .Find 日期吗?
Private Sub Enter_Click()
Dim FindWor As Range
Dim Findrng As String
Dim FindRowNumber As Long
Findrng = Me.Date1
With Worksheets("Data").Range("$A:$A")
Set FindWor = .Find(what:=Findrng)
FindRowNumber = FindWor.Row
.Cells(FindRowNumber, 2).Value = Me.Event1
End With
End Sub
谢谢
史蒂文
Find
方法具有许多可选参数,它们没有预定义的默认值,而是通过代码或Excel用户界面默认为最后使用的值。 您应该明确声明所有参数,以便获得一致且预期的行为 。
Range.Find
方法定义为:
Function Find(What, Optional After, Optional LookIn, Optional LookAt, Optional SearchOrder, Optional SearchDirection As XlSearchDirection = xlNext, Optional MatchCase, Optional MatchByte, Optional SearchFormat) As Range
您需要为所有这些参数提供值,即使它们被标记为“ Optional
如果Find
匹配项, Find
方法也可以返回Nothing
引用,因此您需要在检查Row
属性之前测试Nothing
。 例如:
Set FindRow = .Find(Find)
If Not FindRow Is Nothing Then
FindRowNumber = FindRow.Row
End If
你必须Dim
FindRowNumber如龙
这个 :
Set FindWor = .Find(what:=Findrng)
Findrng是一个字符串,并且数据中有date,因此它绝对不会返回任何内容。
如果不确定您的代码将搜索天气字符串或日期的内容,请首先以字符串形式找到该值,如果找不到,则将其转换为日期,然后再次进行搜索
Set FindWor = .Find(what:=Findrng)
if FindWor is nothing then
Set FindWor = .Find(what:=cdate(Findrng))
end if
我有 2 张工作表,它们都带有用于查找值的连接字符串,并且 .Find 仅在我指定 LookIn:=xlValues 选项后才对这些工作表起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.