我一直在写一个宏,它为一个新的新兵在假日工作表中插入一个新的行,现在它工作得很好,但是现在它已经停止了,并且需要大量的时间来插入一个新的行。以下是受影响的代码:
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,所以没有很大的数字需要滚动。
发布于 2013-04-10 16:58:31
根据我上面的评论,这是你想要做的吗?
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-10 17:01:50
试试下面的
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
菲利普
https://stackoverflow.com/questions/15920695
复制相似问题