当单元格的值在单元格范围内时,我需要一个宏来复制并在现有行的下方插入一行,在宏下插入空白行而不应对单元格值,
更具体地说,我需要填写范围副本中的一个单元格,并使用此新的单元格值在其下方插入某一行
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
答案 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
Select
是一种不好的做法,会使您的代码运行缓慢,因此强烈建议您避免使用它。