VBA如何在表中添加空白行

问题描述

我已经困扰这个问题了几个小时了,很明显我错过了一些重要的事情。 我正在尝试根据条件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

enter image description here

感谢您的帮助

尼克。

解决方法

如果要在范围的中间添加行,还应该向后循环。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...