Сначала вы можете выправить свой код, используя
Rows(rowNum).Insert Shift:= xlDown
Предполагая, что вы хотите копировать форматы и формулы (не константы), и не обращайте внимания на другие свойства, такие как проверки, чтобы их можно было скопировать, а также использовать (Iпрокомментировал оператор On Error Resume Next
- по крайней мере, во время тестирования).
Редактировать 1:
Dim rowNum As Long
'On Error Resume Next
rowNum = Application.InputBox(Prompt:="Enter Row Number where you want to add a row:", _
Title:="Kutools for excel", Type:=1)
If rowNum < 1 Then Exit Sub
With Rows(rowNum)
.Copy
.Offset(1, 0).Insert
.Offset(1, 0).SpecialCells(xlConstants).ClearContents
End With
Если вы хотите избежать копирования / вставки в коде, вы можете использовать:
Dim rowNum As Long
Dim cl As Range
'On Error Resume Next
rowNum = Application.InputBox(Prompt:="Enter Row Number where you want to add a row:", _
Title:="Kutools for excel", Type:=1)
If rowNum < 1 Then Exit Sub 'This code will fail if you act on rownum 1 - you could also show an error message to the user
With Rows(rowNum)
.Offset(1, 0).Insert
For Each cl In .SpecialCells(xlFormulas)
cl.Offset(1, 0).Formula = cl.Formula
Next cl
End With
End Sub