我一直在写一个宏,在一个新招募的假期表中插入一个新行,现在它工作正常,但现在它已经停止并需要花费大量时间来插入一个新行。以下是受影响的代码:
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,因此没有可以滚动的大数字。
答案 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
菲利普