VBA查找最后一次出现的string

我一直试图解决这个问题几天,现在我不能得到我的头。 我已经search了多个网站(甚至在这里几次),我看到很多人问这个问题,但解决scheme不适合我。

我想查找范围中最后一次出现的string,并将地址存储在variables中,并显示一条消息告诉我它在哪里。

到目前为止,我有这个

Private Sub CmdBtnClockIt_Click() Dim job As String Dim searchTerm as Range job = CmbBoxJob.Value searchTerm = Range("A1:A999").find(what:=job, searchorder:=xlByColumns, searchdirection:=xlPrevious).Column MsgBox "last cell is " & searchTerm.Address End Sub 

我似乎得到的是“无效限定符”或“对象variables或块variables未设置”

任何帮助表示赞赏

第一个问题是searchTerm被定义为一个Range对象。 您必须使用Set关键字设置对象分配。 所以赋值变为Set searchTerm = Range("A1:A999")...

其次,如果searchTerm没有find,你会打错误信息,因为searchTerm将被赋值为Nothing 。 我们可以通过使用一个简单的条件来检查job被发现来避免这个问题。

因此,您更新的Sub可能看起来像这样:

 Private Sub CmdBtnClockIt_Click() Dim job As String Dim searchTerm As Range job = CmbBoxJob.Value Set searchTerm = Range("A1:A999").Find(what:=job, searchorder:=xlByColumns, searchdirection:=xlPrevious) If searchTerm Is Nothing Then MsgBox "Text was not found" Else MsgBox "Last cell is " & searchTerm.Address End If End Sub 

怎么样:

 Sub dural() Dim job As String Dim searchTerm As Range job = "Happiness" Set searchTerm = Range("A1:A999").Find(what:=job, after:=Range("A1"), searchorder:=xlByColumns, searchdirection:=xlPrevious) MsgBox "last cell is " & searchTerm.Address End Sub 

在这里输入图像说明

注意我使用了Set