VBA编译报错:Object variable or with block variable not set 求助排查
解决VBA错误:Object variable or with block variable not set
你遇到的这个错误,核心原因是代码里存在未正确初始化的对象变量,或者调用了返回空值的对象属性,以下是具体问题和修复方案:
Wsh对象未初始化
代码里直接使用了Wsh工作表对象,但没有给它指定具体指向的工作表。必须先定义并赋值:Dim Wsh As Worksheet Set Wsh = ThisWorkbook.Worksheets("你的工作表名称") ' 替换成实际工作表名称不做这一步的话,
Wsh属于未设置的对象变量,调用它的任何属性都会触发错误。AccountColumn变量未定义/赋值
AccountColumn用来指定目标列,但代码里既没定义这个变量,也没给它赋值。先补充定义和赋值:Dim AccountColumn As Long AccountColumn = 3 ' 示例:指定第3列(C列),替换成实际列号否则
Wsh.Columns(AccountColumn)会因参数无效,导致Col对象无法正确创建。Find方法可能返回空值
如果Col.Find找不到内容为???????的单元格,会返回Nothing,这时直接访问.Row就会报错。必须先判断查找结果是否存在:Dim findResult As Range Set findResult = Col.Find(What:="???????", _ After:=Wsh.Cells(MovementRow, AccountColumn), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows) If Not findResult Is Nothing Then Start = findResult.Row Else ' 处理找不到的情况,比如提示或设置默认值 MsgBox "未找到指定标识内容" Start = MovementRow ' 或其他合理默认行号 End If另外注意
MovementRow也要确保已经定义并赋值,否则Wsh.Cells(MovementRow, AccountColumn)也会引发问题。
内容的提问来源于stack exchange,提问作者Masum
相关产品推荐
相关产品推荐

