代码中的对象变量错误

时间:2014-02-19 23:18:58

标签: vba excel-vba excel-2010 excel

运行宏时,我收到了一个对象变量错误。

Object Variable or with block variable not set

第二次运行宏时会发生这种情况。以下是导致错误的代码:

' Select the first Junk Row and use it to delete all rows afterward
     With ActiveSheet
        LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
    End With

    With Columns("F")
        .Find(What:="Total", After:=.Cells(1, 1), LookIn:=xlValues).Activate - **Error occurs here.**
    End With
    A = ActiveCell.Row
    Range(A & ":" & LastRow).Delete

任何建议都将不胜感激。如果我关闭程序,它下次运行正常。

谢谢, 斯科特

3 个答案:

答案 0 :(得分:1)

首次运行代码时,会删除底部行,包括包含“总计”的行。第二次运行代码失败,因为第一次传递删除了“Total”

答案 1 :(得分:0)

在激活单元格之前。检查.find是否找到了这个单元格是好的。下面就是一个例子。

<强>测试

Sub testing()
Dim rng As Range
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
    End With

    With Columns("F")
      Set rng = .Find(What:="Total", After:=.Cells(1, 1), LookIn:=xlValues) 
    End With

    If Not rng Is Nothing Then

    A = rng.Row

    Range(A & ":" & LastRow).Delete

    Else

    MsgBox ("Total not found")

    End If

End Sub

答案 2 :(得分:0)

尝试并替换

.find (...).activate  

由:

.find (...).select

即使我不同意使用select / activate。

最简单的是

A= .find (....) .row  
'might return 0 or <nothing> or error , if no match ( .match is faster by the way)