我有一个贯穿所有行的For循环(它也合并了插入的行)...我遇到的路障是在经过我插入行的行时将其抛弃。
示例:
在A之后添加5行而不是转到B,它将转到A。
下的其中一行初看
First Pass在A。
下添加5个空白行第二遍继续在A之后增加更多空间而不是跳到B。
For Each x In wksProd.Range("A3", "A" & iRow)
If x <> "0" Then
Rows(x.Row).EntireRow.Offset(1).Resize(5).Insert
With Range(x.Address, ConvertToLetter(x.Column) & x.Row + 5)
.Merge
.VerticalAlignment = xlCenter
End With
With Range(ConvertToLetter(x.Column + 1) & x.Row, ConvertToLetter(x.Column + 1) & x.Row + 5)
.Merge
.VerticalAlignment = xlCenter
End With
<-- some other formatting code here -->
End If
Next x
答案 0 :(得分:0)
您已在工作表wksProd
上循环,但对任何工作表进行处理恰好是ActiveSheet
。
我已使用*stars*
突出显示了对活动工作表的隐式引用:
For Each x In wksProd.Range("A3", "A" & iRow)
If x <> "0" Then
*Rows*(x.Row).EntireRow.Offset(1).Resize(5).Insert
With *Range*(x.Address, ConvertToLetter(x.Column) & x.Row + 5)
.Merge
.VerticalAlignment = xlCenter
End With
With *Range*(ConvertToLetter(x.Column + 1) & x.Row, ConvertToLetter(x.Column + 1) & x.Row + 5)
.Merge
.VerticalAlignment = xlCenter
End With
<-- some other formatting code here -->
End If
Next x
你可能还有更多。确保您使用wksProd
- 它可能是也可能不是活动表。如果不是,那么您在错误的工作表中插入行。如果是的话,那么当你正在迭代它时 修改一个集合 - 并且这绝不是一个好主意。
Rows(x.Row).EntireRow.Offset(1).Resize(5).Insert
答案 1 :(得分:0)
Thx Mat's Mug - 这解决了它(使用For with Step vs For Each。
For x = 3 To ((iRow + 2) * 5) Step 6
wksProd.Rows(x).EntireRow.Offset(1).Resize(5).Insert
With wksProd.Range("A" & x, "A" & x + 5)
.Merge
.VerticalAlignment = xlCenter
End With
With wksProd.Range("B" & x, "B" & x + 5)
.Merge
.VerticalAlignment = xlCenter
End With
<-- some other formatting code here -->
Next x