繁体   English   中英

VBA查找功能不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM