问题描述
我已经困扰这个问题了几个小时了,很明显我错过了一些重要的事情。 我正在尝试根据条件ID在Excel表中添加一些空白行。
这是我的代码,但是不知何故,它会在ID 102之后无限循环地结束。我知道您必须自下而上删除行,但不确定是否要添加行。
Sub AddBlnkRow()
Dim Tbl As ListObject,TblID As Range,c As Range
Set Tbl = ActiveSheet.ListObjects("TblState")
Set TblID = Tbl.ListColumns(1).DataBodyRange
For Each c In TblID 'Step -1
If c = 200 Or c = 300 Or c = 400 Then Tbl.ListRows.Add (c.Row - 2)
Next
End Sub
感谢您的帮助
尼克。
解决方法
如果要在范围的中间添加行,还应该向后循环。
Sub AddBlnkRow()
Dim Tbl As ListObject
Dim i As Long
Set Tbl = ActiveSheet.ListObjects("TblState")
With Tbl.ListColumns(1).DataBodyRange
'* Count down to 2 as you don't want a blank line
'* in the first row
For i = .Rows.Count To 2 Step -1
'* Use Mod to check if value is multiple of 100
If .Cells(i,1) Mod 100 = 0 And Len(.Cells(i,1)) > 0 Then
Tbl.ListRows.Add i
End If
Next i
End With
End Sub
,
一种快速的解决方法(添加了skipRow
来绕过之前已经添加了空行的单元格):
Sub AddBlnkRow()
Dim Tbl As ListObject,TblID As Range,c As Range
Dim skipRow As Boolean
Set Tbl = ActiveSheet.ListObjects("TblState")
Set TblID = Tbl.ListColumns(1).DataBodyRange
For Each c In TblID
If (c = 200 Or c = 300 Or c = 400) And skipRow = False Then
Tbl.ListRows.Add (c.Row - 2)
skipRow = True
Else
skipRow = False
End If
Next
End Sub