首页 > 解决方案 > 自动添加行

问题描述

我是 VBA 的新手,当 B 列的单元格中有一些内容时,我有下面的代码自动添加一行。但是,我想修改公式,以便如果我更改单元格中的内容已经有内容或删除单元格中的内容并稍后在同一单元格中重写某些内容它不会添加额外的行。非常感谢!

Private Sub Worksheet_Change(ByVal Target As Range)

'Test if change is in column B and only one cell changed
If Not Intersect(Target, Me.Columns("B")) Is Nothing And _
        Target.Cells.Count = 1 Then

    If len(Target)>0 then
          Target.Offset(1, 0).EntireRow.Insert Shift:=xlDown      'Insert row below data entry
         'Target.EntireRow.Insert Shift:=xlDown       'Insert row above data entry
    End If
End If

End Sub


标签: excelvba

解决方案


假设您要在下方插入一行以整理文档并使其更易于读取数据(一个空白行,将始终保持空白),那么您可以在插入该行之前使用 CountA 添加一个简单的逻辑检查以查看是否目标单元格下方已经有一个空白行。如果有一个空白行,它不会添加一个,如果没有,那么它会添加一个:

Private Sub Worksheet_Change(ByVal Target As Range)

'Test if change is in column B and only one cell changed
If Not Intersect(Target, Me.Columns("B")) Is Nothing And _
        Target.Cells.Count = 1 Then

    If Len(Target) > 0 And Application.CountA(Rows(Target.Offset(1).Row)) <> 0 Then 'New condition added here
          Target.Offset(1, 0).EntireRow.Insert Shift:=xlDown      'Insert row below data entry
         'Target.EntireRow.Insert Shift:=xlDown       'Insert row above data entry
    End If
End If

End Sub

推荐阅读