VBA查找最后一次出现的字符串

时间:2015-07-08 18:07:34

标签: excel vba excel-vba

我一直试图解决这个问题几天,我只是无法理解它。我搜索了多个网站(甚至在这里几次),我看到很多人都问过这个问题,但解决方案对我不起作用。

我想找到一个范围内最后一个字符串,并将地址存储在变量中并显示一条消息,告诉我它在哪里。

到目前为止,我有这个

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

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

感谢任何帮助

2 个答案:

答案 0 :(得分:5)

第一个问题是searchTerm被定义为Range个对象。您必须使用Set keyword设置对象分配。因此,作业变为Set searchTerm = Range("A1:A999")...

其次,如果找不到searchTerm,您会看到错误消息,因为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

答案 1 :(得分:2)

怎么样:

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

enter image description here

注意我使用了设置