VBA实用小程序22:查找工作表中含有指定日期的所有单元格

微信公众号:

excelperfect

 

有时候,我们想要知道工作表中含有某日期的单元格有哪些,那么,下面的代码可以帮助你实现。

VBA实用小程序22:查找工作表中含有指定日期的所有单元格

厕所英雄

主演:阿克谢·库玛尔 / 布米·佩德卡尔 / 阿努潘·凯尔

猫眼电影演出

广告

购买

在标准模块中输入下面的代码:



Function FindDates(ByRef FindDate As Date, Optional LookInRange As Range)As Range

    "

声明变量

    Dim rngTarget As Range,strFirstAddr As String

    Dim rngFind As Range,rngLastCell As Range

   

    "

如果没有指定区域

,

则设置为工作表中当前已使用区域

    If LookInRange Is Nothing Then

        Set LookInRange =ActiveSheet.UsedRange

    End If

     

    With LookInRange

        "

获取查找区域的最后一个单元格

        Set rngLastCell =.Cells(.Cells.Count)

       

        "

从最后一个单元格开始向前查找

        Set rngTarget =.Find(What:=FindDate, _

                           After:=rngLastCell, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows)

                           

        "

如果找到单元格

        If Not rngTarget Is NothingThen

            Set rngFind = rngTarget

            strFirstAddr = rngTarget.Address

            Do

               "

将找到的单元格合并

                Set rngFind =Union(rngFind, rngTarget)

               "

查找下一个单元格

                Set rngTarget =.FindNext(After:=rngTarget)

            "

如果找不到单元格了或者找到的单元格是最先找到的单元格

,

则退出循环

            Loop Until rngTarget IsNothing Or rngTarget.Address = strFirstAddr

        End If

    End With

   

    "

返回值

    If rngFind Is Nothing Then

        Set FindDates = Nothing

    Else

        Set FindDates = rngFind

    End If

   

    Set LookInRange = Nothing

    Set rngTarget = Nothing

    Set rngFind = Nothing

    Set rngLastCell = Nothing

End Function

 

给上述自定义函数传递要查找的日期以及单元格区域,将返回单元格区域中所有含有该日期的单元格。如果没有指定单元格区域,那么使用当前工作表中已使用的区域。

 

欢迎分享本文,转载请注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。