如果您有任何具体问题,我无法告诉您。这段代码对我来说很好,在 Excel 2010 中使用带有数据的任意表格(并作为其自己的子表格):
Sub test()
Dim rng As Range
Set rng = Cells(6, 2)
rng.Resize(, 9).Cut
rng.Offset(, 19).Select
Selection.Insert Shift:=xlDown
rng.Resize(, 9).Delete Shift:=xlUp
End Sub
我添加了“选择”位,因为这通常对测试很有帮助——在选择上放一个中断,运行到它,然后 F8 行;然后看看选择了什么。如果它在那里出错,那么 rng.offset(,19) 有问题。如果它成功并选择了(某些东西),那么您可以看到它认为应该在哪里插入数据。
编辑:注释掉 rng.Resize(,9).Delete 似乎可以解决问题 - 它正在删除新插入的单元格。当您使用 rng.cut,然后将单元格粘贴进去时,这似乎改变了 rng 的当前位置。看到这个:
Sub test()
Dim rng As Range
Set rng = Cells(6, 2)
MsgBox (rng.Address)
rng.Resize(, 9).Cut
MsgBox (rng.Address)
rng.Offset(, 19).Insert Shift:=xlDown
MsgBox (rng.Address)
rng.Resize(, 9).Delete Shift:=xlUp
End Sub
将“剪切”更改为“复制”,行为就会发生变化。您可能只想这样做 - 将其更改为复制 - 因为无论如何您都删除了原始单元格。