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 。