我一直试图解决这个问题几天,我只是无法理解它。我搜索了多个网站(甚至在这里几次),我看到很多人都问过这个问题,但解决方案对我不起作用。
我想找到一个范围内最后一个字符串,并将地址存储在变量中并显示一条消息,告诉我它在哪里。
到目前为止,我有这个
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
我似乎得到的是“无效限定符”或“对象变量或未设置块变量”
感谢任何帮助
答案 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
注意我使用了设置 。