EXCEL VBA - 查找日期不适用于2位数的月份

时间:2014-02-11 08:38:07

标签: excel date excel-vba find vba

我正在尝试查找某个范围内的日期。这适用于2位数(1月至9月)的月份,但在剩余的月份不起作用。我花了一些时间来隔离问题所以我建立了一个测试程序。

这是数据范围

12.01.2013  
12.02.2013
12.03.2013
12.04.2013
12.05.2013
12.06.2013
12.07.2013
12.08.2013
12.09.2013
12.10.2013
12.11.2013
12.12.2013

这是代码:

With wsData.Range("A1:A12")
For i= 1 To 12

    Set rReturn = .Find(What:=CDate("12." & i & ".2013"), LookIn:=xlValues, LookAt:=xlWhole)

Next i
End With

对于前9个循环,我得到rReturn的相应单元格。但是对于最后3个循环(10到12),返回值是“无”。

1 个答案:

答案 0 :(得分:0)

问题不在于日期。他们是字符串。您还需要格式化i,以便构建精确的搜索字符串。

试试这个

Set rreturn = .Find(What:="12." & Format(i, "00") & ".2013", _
                    LookIn:=xlValues, LookAt:=xlWhole)

尝试并经过测试

Sub Sample()
    Dim wsData As Worksheet
    Dim SearchString As String
    Dim i As Long

    Set wsData = ThisWorkbook.Sheets("Sheet1")

    With wsData.Range("A1:A12")
        For i = 1 To 12
            SearchString = "12." & Format(i, "00") & ".2013"
            Set rreturn = .Find(What:=SearchString, LookIn:=xlValues, LookAt:=xlWhole)

            If Not rreturn Is Nothing Then _
            Debug.Print SearchString & " found in " & rreturn.Address
        Next i
    End With
End Sub