如标题中所述,我需要在活动单元格下方添加一行,然后从活动行的E-J列中复制单元格并将其粘贴到新插入的行中。
我是VBA的初学者,我编写的当前代码如下:
Sub Addrow()
ActiveCell.Offset(1).EntireRow.Insert
Range(Cells(ActiveCell.Row, "E"), Cells(ActiveCell.Row, "F"), Cells(ActiveCell.Row, "G"), Cells(ActiveCell.Row, "H"), Cells(ActiveCell.Row, "I"), Cells(ActiveCell.Row, "J")).Select
Selection.Copy
Range(Cells(ActiveCell.Offset(1), "E")).Select
ActiveSheet.Paste
End Sub
代码无法正常工作,我相信问题是在插入新行之后选择单元格范围时,尽管代码很乱,我不确定还有一种更有效的编写方法,我仍然不能弄清楚为什么它不起作用。
如果有人能够发现错误的根源,那将是真的!
答案 0 :(得分:0)
问题之一可能是您不能为 [((1, 2, 3),),
((1,), (2, 3)),
((2,), (1, 3)),
((3,), (1, 2)),
((1,), (2,), (3,))]
函数提供两个以上的参数。
此外,您通常希望避免在代码运行时依赖工作表或范围处于活动状态(因为> pip install more_itertools
或Range
可能会更改,这可能会使您的代码行为异常/不确定。 )。
ActiveSheet
是一个函数,它将返回其所有参数共享的范围。在这种情况下,它返回范围ActiveCell
和范围Intersect
公用的单元格。
columns E to J
接受一个row of the Active cell
参数,因此您可以直接将目标范围传递给它。
Range.Copy
我确实测试了代码,它似乎按照您的描述进行了操作(即从选定的行复制并粘贴到其下面新插入的行)。