宏运行速度极慢

时间:2013-04-10 08:28:46

标签: performance excel-vba vba excel

我一直在写一个宏,在一个新招募的假期表中插入一个新行,现在它工作正常,但现在它已经停止并需要花费大量时间来插入一个新行。以下是受影响的代码:

For f = 1 To Worksheets.Count - 1

    Worksheets(f).Select

    Range("A1").Select

    If Worksheets(f).Name = "FLEXI" Then

        Range("A1").Select
        N = Range("A2").Value
        Range("A" & NewRow).Select
        Selection.EntireRow.Insert
        Range("A" & NewRow + N + 1).Select
        Selection.EntireRow.Insert
        GoTo flexidivert
    End If

Range("A" & NewRow).Select
Selection.EntireRow.Insert

flexidivert:
Next f

我禁用了screenupdating,禁用了启用事件,并将计算设置为手动,因此通常的嫌疑人不在这里工作。它也是如此简单的程序,我无法理解为什么计算需要几分钟。 NewRow是要粘贴的行,而worksheets.count = 5,因此没有可以滚动的大数字。

2 个答案:

答案 0 :(得分:1)

继上面的评论之后,这是你想要做的吗?

For f = 1 To Worksheets.Count - 1
    With Worksheets(f)
        .Range("A" & NewRow).EntireRow.Insert

        If .Name = "FLEXI" Then
            N = .Range("A2").Value
            .Range("A" & NewRow + N + 1).EntireRow.Insert
        End If
    End With
Next f

我假设您已正确声明所有变量,而单元格A2具有数字值。

答案 1 :(得分:0)

尝试下面的

Worksheets("FLEXI").select
N = Range("A2").Value
Range("A" & NewRow).EntireRow.Insert shift:=xldown 
Range("A" & NewRow + N + 1).EntireRow.Insert shift:=xldown
Range("A" & NewRow).EntireRow.Insert shift:=xldown

在使用INSERT

之前无需选择单元格

另外,如果您知道woreksheet的名称不需要循环,只需通过集合直接引用它

HTH

菲利普

相关问题