Excel .Range(“…”).Find生成对象变量或未设置块变量
我想找到一个关键字,然后对它执行一个操作Excel .Range(“…”).Find生成对象变量或未设置块变量,excel,vba,Excel,Vba,我想找到一个关键字,然后对它执行一个操作 Dim ws as Worksheet Dim LastRow As Long Dim NextRow as Long Set ws = ActiveWorkbook.ActiveSheet LastRow = ws.Range("A:A").Find(What:="", After:=Range("A10")).Row NextRow = ws.Range("A:K").Find(What:="This City Is:").Row ws.Ce
Dim ws as Worksheet
Dim LastRow As Long
Dim NextRow as Long
Set ws = ActiveWorkbook.ActiveSheet
LastRow = ws.Range("A:A").Find(What:="", After:=Range("A10")).Row
NextRow = ws.Range("A:K").Find(What:="This City Is:").Row
ws.Cells(LastRow, 1) = Me.tbTextbox1.Value
ws.Cells(LastRow, 2) = Me.tbTextbox1.Value
ws.Cells(LastRow, 3) = Me.tbTextbox3.Value
ws.Cells(NextRow, 4) = "This City is: " + Me.tbTextbox4.Value
End Sub
我遇到问题的部分是NextRow
NextRow = ws.Range("A:K").Find(What:="This City Is:").Row
它在说
“未设置对象变量或带块变量”
我试图让Textbox4行在文本“This City Is:”所在的位置相等。因为有时候如果我决定在某处插入一行,我仍然希望代码遵循这个术语
您假设Range.Find
将找到它要查找的内容。。。但事实并非如此
因此.Row
成员调用与Nothing
相反,因为Range.Find
在未找到所需内容时返回Nothing
。任何针对Nothing
的成员调用都将引发错误91
永远不要使用范围的返回值。未经验证就查找。捕获范围中的返回值
参考:
Dim result As Range
Set result = ws.Range("...").Find(...)
然后确保它不是无
:
If Not result Is Nothing Then
NextRow = result.Row
...
End If
请注意,(我管理的免费开源VBIDE外接程序项目)警告了这种(以及许多其他)情况:
您假设Range.Find
将找到它要查找的内容。。。但事实并非如此
因此.Row
成员调用与Nothing
相反,因为Range.Find
在未找到所需内容时返回Nothing
。任何针对Nothing
的成员调用都将引发错误91
永远不要使用范围的返回值。未经验证就查找。捕获范围中的返回值
参考:
Dim result As Range
Set result = ws.Range("...").Find(...)
然后确保它不是无
:
If Not result Is Nothing Then
NextRow = result.Row
...
End If
请注意,(我管理的免费开源VBIDE外接程序项目)警告了这种(以及许多其他)情况:
NextRow
应该声明为Long
,而不是String
@DarrellH true,但不太可能这里的问题NextRow
应该声明为Long
,而不是String
@DarrellH true,但不太可能是这里的问题谢谢你,这帮了很多忙,这帮了很多忙