Excel VBA:Range.Match不会返回任何内容

时间:2016-12-15 21:52:35

标签: excel vba excel-vba

我真的试图自己解决这个错误,但我似乎无法弄明白。我有一系列的单元格,我试图找到一个特定的值,它不会返回任何东西,即使我知道值是那里,我知道搜索值匹配范围内的值。

Dim targetDate As Date
Dim rng As Range

targetDate = Sheet1.Cells(3,3).Value 
'the Year(targetDate) evaluates to 2015 and the search range has values 2015 at C1 and value 2016 at O1
'All the other cells are blank, unformatted, and the two values in the range are in general format 
Set rng = Sheet2.Range("A1:Z1").Find(What:=Year(targetDate), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)

到目前为止我尝试过的所有事情都会导致一切都没有。我知道Find的一些输入值会转移到下一个调用,所以我在这次调用中重置它们以确保我得到正确的设置。我已经尝试设置if来比较Year(targetDate)和Range(“C1”)。Value并将其评估为true。最奇怪的是,这段代码至少为我运行了几次宏,现在拒绝工作。我已经用尽了所有关于解决方案的想法,我知道这个问题非常具体,但希望有人可以提供帮助。如果您需要更多信息,请询问。

谢谢

1 个答案:

答案 0 :(得分:0)

此代码改编自:http://www.rondebruin.nl/win/s9/win006.htm

Sub Test()
    Dim FindString As String
    Dim rng As Range

    FindString = Format(Sheet1.Cells(3, 3).Value, "YYYY")
    With Sheets("Sheet1").Range("A1:Z1")
        Set rng = .Find(What:=FindString, _
                        LookIn:=xlValues, _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not rng Is Nothing Then
            Application.Goto rng, True
        Else
            MsgBox "Nothing found"
        End If
    End With

End Sub