如何在vba中解决运行时错误'6'溢出问题

时间:2016-02-22 01:57:09

标签: excel vba

当B列中的任何一行单元格值都包含“NEW”时,我试图使列A和列B都为空。我在C列中总共有278005行,运行代码时出现溢出错误。有人可以帮忙吗?提前谢谢。

Sub dltnew()
    Dim i As Double
    Dim lrow As Double
    lrow = Sheets("today").Range("C" & Rows.Count).End(xlUp).Row

    For i = 2 To lrow
      If Sheets("today").Cells(i, 2).Value = "NEW" Then
        Sheets("today").Cells(i, 2).Value = ""
        Sheets("today").Cells(i, 1).Value = ""
      End If
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

任何形式的批量操作都比循环细胞的cuurent方法更有效。 AutoFilter method似乎有可能加快速度。

Sub dltnew()

    On Error Goto bm_Safe_Exit
    appTGGL bTGGL:=False

    With Worksheets("today")
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            .AutoFilter field:=2, Criteria1:="new"
            With .Resize(.Rows.Count - 1, 2).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    .Cells.ClearContents
                End If
            End With
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With

bm_Safe_Exit:        
    appTGGL

End Sub

Sub appTGGL(Optional bTGGL As Boolean = True)
    With Application
        .ScreenUpdating = bTGGL
        .EnableEvents = bTGGL
        .DisplayAlerts = bTGGL
        .Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual)
    End With
End Sub

通过关闭屏幕更新,计算,事件处理等可以获得额外的效率。我已经将他们的代码移动到一个小辅助子,而不是在主子代中重复两次。