1

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

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

我禁用了屏幕更新,禁用了启用事件并将计算设置为手动,因此通常的嫌疑人不会在这里工作。这也是一个如此简单的过程,我不明白为什么需要几分钟来计算。NewRow 是要粘贴的行,并且 worksheets.count = 5 所以没有大量的数字可以滚动。

4

2 回答 2

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 具有数字值。

于 2013-04-10T08:58:31.450 回答
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 之前无需选择单元格

另外,如果您知道wearksheet 的名称无需循环,只需通过集合直接引用即可

高温高压

菲利普

于 2013-04-10T09:01:49.687 回答