如何使用VBA代码插入一行单元格

我的代码如下。 我在我的循环macrosRng设置为一个范围,这是它的一个子集。 如果满足某个条件,则调用以下子项:

 Sub FKCutandPaste(Rng As Range) Rng.Resize(, 9).Cut Rng.Offset(, 19).Insert Shift:=xlDown Rng.Resize(, 9).Delete Shift:=xlUp 

我想这样删除一部分数据,然后粘贴它离开活动列。 然而,macros观似乎只是切断了所需的细胞,但没有移动到第二行。

我在这里错过了很小的东西吗?

我不能告诉你,如果你有任何具体的问题。 这个代码在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 

我添加了“select”位,因为这通常对testing有帮助 – 在select上放一下,运行到它,然后F8行; 然后看看select了什么。 如果在那里出现错误,那么rng.offset(,19)会出错。 如果成功并select了(某些东西),那么你可以看到它认为应该插入数据的地方。

编辑:注释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 

将“剪切”更改为“复制”,并改变行为。 您可能只想简单地做 – 将其更改为复制 – 无论如何您都要删除原始单元格。