在VBA中,您可以在剪切和粘贴后直接进行复制和粘贴。我问,因为if循环中的语句需要剪切一行数据,然后直接复制下面的行。当我运行代码时,它执行剪切但从不复制。我在网上看了这个,我唯一能想到的就是清理剪贴板。可悲的是,这没有用:(。
这是我的代码:
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来搜索其他单词,但上面的代码是有问题的代码。
重申一下,剪切/粘贴有效。复制/粘贴没有。
感谢。
答案 0 :(得分:1)
我真的无法复制您遇到的问题,但您可以尝试更改这三行:
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))
注意:很少需要激活,Select
或其他"点击"您需要使用的范围对象。这是一个很好的解释: