循环完成有错误

时间:2014-04-23 23:25:16

标签: excel-vba vba excel

我需要查找包含短语"总"在其中,在其上方和下方插入行,格式化同一行内和周围的其他单元格,删除短语"总"从单元格开始,并对报表中的所有其他行重复此过程。

我发现的宏,一旦发现并取代了所有的实例。 Total",我得到运行时错误' 91&#39 ;:对象变量或With block变量未设置。

我想完成循环而不会出现错误,因为这必须在多张纸上执行。以下是代码的内容:

'EmployerSummariesAddedForRegionsOnTabs Macro
Dim FoundCell As Range, LastCell As Range
Dim FirstAddr As String
With Range("D3:D3000")
    Range("D3").Select
    Set LastCell = .Cells(.Cells.Count)
End With
Set FoundCell = Range("D1:D3000").Find(What:=" Total", After:=LastCell, LookIn:=xlValues, LookAt:=xlPart, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not FoundCell Is Nothing Then
    FirstAddr = FoundCell.Address
End If
Do Until FoundCell Is Nothing
    Set FoundCell = Range("D1:D3000").FindNext(After:=FoundCell)

    COLUMNS("D:D").Select
    Selection.Find(What:=" Total", After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Replace What:="Total", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
    SearchFormat:=False, ReplaceFormat:=False
    ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Activate
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown
    ActiveCell.Offset(3, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    .
    .
    .
    If FoundCell.Address = FirstAddr Then
        Exit Do
    End If
Loop
Range("A1").Select
End Sub

1 个答案:

答案 0 :(得分:0)

创建对象变量有两个步骤。首先,您必须声明对象变量。 发生此错误是因为您没有正确设置对象,如果您有编程经验,则它与null refrence异常完全相同。 我运行你的代码,它似乎根本没有做任何事情! 甚至不是错误!因此我认为您的错误必须是因为代码中的其他位置。 这条线的任何方式都可以替换活动工作表中的任何总数:

Cells.Replace What:=" Total", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False