首页 文章

剪切,复制和粘贴excel

提问于
浏览
1

在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来搜索其他单词,但上面的代码是有问题的代码 .

重申一下,剪切/粘贴有效 . 复制/粘贴没有 .

谢谢 .

1 回答

  • 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 或其他"click" . 这是一个很好的解释:

    How to avoid using Select in Excel VBA macros

相关问题