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

Excel 当单元格的值在单元格范围内时插入新行,excel,vba,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(c

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

更具体地说,当我在一个范围内填充一个单元格时,我需要复制并用这个新的单元格值插入它下面的某一行

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
要在更改F2:F12范围内的值时添加(复制和插入)特定行,必须使用
工作表\u change
事件

您可能必须调整
行(1)。将
复制到要复制的行号

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
  • 我建议你读书。使用
    Select
    是一种不好的做法,会使代码运行缓慢,因此强烈建议避免使用它

事实上,我是通过网络获得该脚本的,我不是VBA的专家或任何接近者:)如果你知道我想要得到什么,请告诉我plz?@Ahmed请阅读并更新你的原始问题,而不是在评论中(使用问题下方的编辑按钮)。所有问题和代码都需要在问题部分。我还远远不了解你的实际问题是什么,你的目标是什么,因为现在你的要求完全不同了。请非常明确和具体地说明你的目标和困难。