查找函数,基础日期值

时间:2016-04-20 11:32:41

标签: excel vba excel-vba

所以我一直坚持在我的工作表中找到最后一个问题。我的工作表中的月份是由EOMONTH公式组成的。因此,我想找到每个月的潜在价值,因此我可以忽略格式化问题。

Function Last_Day_Of_the_Month()

Dim WrkMonths As Integer
Dim StartDate As Date
Dim EndDate As Long

StartDate = Now
EndDate = WorksheetFunction.EoMonth(StartDate, -1)


Cells.Find(What:=EndDate, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


End Function

这只返回错误91,它找不到值。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

Abit尴尬,因为我可以发誓这段代码之前没有用...但我解决了我的问题,这是我用过的代码,如果有人需要的话。

Sub lastdayofthemonth()


      Dim StartDate As Date
      Dim EndDate As Date

    StartDate = Now
    EndDate = WorksheetFunction.EoMonth(StartDate, -1)


    Cells.Find(What:=Format(EndDate, "MMMM YYYY"), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Select

答案 1 :(得分:0)

如果您将EndDate变量设置为Date而不是Long,那么它应该可以正常工作,前提是该值在活动工作表上。
如果不是你仍然会得到错误91.为了避免这种情况,设置一个变量来存储找到的日期,并在激活之前检查它是否包含任何内容。

Sub Last_Day_Of_the_Month()

    Dim WrkMonths As Integer
    Dim StartDate As Date
    Dim EndDate As Date
    Dim rFound As Range

    StartDate = Now
    EndDate = WorksheetFunction.EoMonth(StartDate, -1)

    Set rFound = Cells.Find(What:=EndDate, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False)

    If Not rFound Is Nothing Then
        rFound.Activate
    End If

 End Sub