剪切,复制和粘贴excel

在VBA中,您可以在剪切和粘贴后直接进行复制和粘贴。 我问,因为如果语句内的一个for循环,需要切割一行数据,然后直接复制下面的行。 当我运行代码时,它执行那个剪切,但从来没有复制。 我看着这个在线,我唯一能想出来的就是清除剪贴板。 可悲的是这没有帮助:(。

这是我的代码:

im r As Range Dim i As Long, i2 As Long, i4 As Long i = 2 i2 = 15 i3 = 70 i4 = 3 For Each r In ActiveSheet.UsedRange v = r.Value If InStr(v, "ION") > 0 And InStr(v, "Dog") > 0 Then Range(Cells(r.Row, r.Column), Cells(r.Row, r.Column + 2)).Cut Range(Cells(i, 8), Cells(i, 10)).Select ActiveSheet.Paste Application.CutCopyMode = False Range(Cells(r.Row + 1, r.Column), Cells(r.Row + 1, r.Column + 2)).Copy Range(Cells(i4, 8), Cells(i4, 10)).Select ActiveSheet.Paste Application.CutCopyMode = False i = i + 2 i4 = i4 + 2 

然后有更多的代码使用elseif来search其他单词,但上面的代码是有问题的代码。

重申,剪切/粘贴作品。 复制/粘贴不。

谢谢。

我真的不能复制你遇到的问题,但你可以尝试改变这三行:

 Range(Cells(r.Row + 1, r.Column), Cells(r.Row + 1, r.Column + 2)).Copy Range(Cells(i4, 8), Cells(i4, 10)).Select ActiveSheet.Paste 

对此:

 Range(Cells(r.Row + 1, r.Column), Cells(r.Row + 1, r.Column + 2)).Copy _ Range(Cells(i4, 8), Cells(i4, 10)) 

你可以用.Cut方法做同样的事情:

 Range(Cells(r.Row, r.Column), Cells(r.Row, r.Column + 2)).Cut _ Range(Cells(i, 8), Cells(i, 10)) 

注意:很less有必要激活, Select或以其他方式“单击”您需要使用的范围对象。 这是一个很好的解释:

如何避免在Excel VBAmacros中使用select