这是我第一次回答时根据您的 cmets 更新的代码。此代码适用于预先选择的范围,并要求您输入要应用代码的第 4 列值。
Sub codeForMike()
Dim rowX As Integer
Dim rangeSize As Integer
Dim col4 As Integer
col4 = InputBox("Insert rows where column 4 =", "Enter Number:")
rangeSize = Selection.Rows.Count
Selection.Cells(1).Select
rowX = ActiveCell.Row
rangeSize = rowX + rangeSize
Do
If Cells(rowX, 4).Value <> col4 Then
rowX = rowX + 1
Else
Range(Cells(rowX + 1, 1), Cells(rowX + 1, 13)).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(rowX + 1, 1).Value = Cells(rowX, 1).Value
Cells(rowX + 1, 2).Value = Cells(rowX, 2).Value
Cells(rowX + 1, 3).Value = Cells(rowX, 3).Value
Cells(rowX + 1, 6).Value = Cells(rowX, 6).Value
Cells(rowX + 1, 7).Value = Cells(rowX, 7).Value
Cells(rowX + 1, 8).Value = Cells(rowX, 8).Value
Cells(rowX + 1, 9).Value = Cells(rowX, 9).Value
Cells(rowX + 1, 10).Value = "0"
Cells(rowX + 1, 11).Value = "0"
Cells(rowX + 1, 12).Value = "0"
Cells(rowX + 1, 13).Value = "0"
rowX = rowX + 2
rangeSize = rangeSize + 1
End If
Loop Until rowX = rangeSize
Range(Cells(rowX - 2, 1), Cells(rowX - 2, 13)).Copy
Cells(rowX - 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub