当单元格的值在单元格范围内时,插入新行

时间:2018-09-05 09:21:52

标签: excel vba

当单元格的值在单元格范围内时,我需要一个宏来复制并在现有行的下方插入一行,在宏下插入空白行而不应对单元格值,

更具体地说,我需要填写范围副本中的一个单元格,并使用此新的单元格值在其下方插入某一行

Sub new-macro()
    Dim rng As Range
    Dim cell As Range

    Set rng = Range("F2:F12")

    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            ActiveCell.Offset(1, 0).Select
            ActiveCell.EntireRow.Insert
            ActiveCell.Offset(1, 0).Select
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next
End Sub

我找到了这个脚本,但是它给了我“下标超出范围”的意思,为什么要这样?

Sub insertRowFormatFromAbove() 

Worksheets("Insert row").Rows(27).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromLeftOrAbove 

End Sub

1 个答案:

答案 0 :(得分:0)

要在更改F2:F12范围内的值时添加(复制和插入)特定行,必须使用Worksheet_Change事件。

您可能必须将Rows(1).Copy调整为要复制的行号。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F2:F12")) Is Nothing Then 'if changed cell is within the range
        If Not IsEmpty(Target) Then
            Rows(1).Copy 'copy row number 1
            Application.EnableEvents = False 'prevent the following line to trigger the change event again
            Target.Offset(RowOffset:=1).EntireRow.Insert Shift:=xlShiftDown 'insert copied row
            Application.EnableEvents = True 're enable events
        End If
    End If
End Sub