首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宏运行速度极慢

宏运行速度极慢
EN

Stack Overflow用户
提问于 2013-04-10 16:28:46
回答 2查看 617关注 0票数 1

我一直在写一个宏,它为一个新的新兵在假日工作表中插入一个新的行,现在它工作得很好,但是现在它已经停止了,并且需要大量的时间来插入一个新的行。以下是受影响的代码:

代码语言:javascript
复制
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,所以没有很大的数字需要滚动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-10 16:58:31

根据我上面的评论,这是你想要做的吗?

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-04-10 17:01:50

试试下面的

代码语言:javascript
复制
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

菲利普

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15920695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档