VBA搜索日期后选择偏移单元格报对象变量未设置错误如何解决?

报错根因
代码里的4个问题直接触发了该报错:
- Range对象赋值必须使用
Set关键字,你给fromlist赋值时缺少Set - 日期类型变量错误声明为
String,导致和B列的日期格式无法匹配,Find返回空对象 LookIn参数拼写错误,正确取值为xlValues,你写的xlValue是无效参数- 没有对
Find的返回结果做非空校验,一旦未找到匹配值,直接调用Select方法就会抛出对象未设置的错误
修复后可直接运行的代码
Private Sub btngo_Click() Dim thedate As Date Dim fromlist As Range Dim resRng As Range thedate = Range("E2").Value Set fromlist = Range("B6:B370") Set resRng = fromlist.Find(what:=thedate, after:=Range("B5"), LookIn:=xlValues, _ lookat:=xlWhole, searchorder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False) If Not resRng Is Nothing Then resRng.Offset(0, 1).Select Else MsgBox "未找到匹配的日期值", vbInformation End If End Sub
功能说明
- 自动读取E2单元格的日期作为搜索目标,格式和B列存储的日期完全匹配
- 搜索范围固定为B6到B370区域
- 找到匹配日期后自动选中该行右侧相邻的单元格
- 未搜索到匹配内容时弹出提示,不会出现运行时报错
内容的提问来源于stack exchange,提问作者ahmad
相关产品推荐
相关产品推荐

