Excel VBA - 选择剪切粘贴错误

San*_*wah 3 excel vba copy-paste excel-vba

我正在创建一个宏但我被困在这个剪切粘贴语句中,从昨天起就无法继续.

这是问题:我选择"D2到F2"列中的所有行并将其粘贴到"A1".这是它的代码:

Range("D2:F2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut

Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste    
Run Code Online (Sandbox Code Playgroud)

得到此错误:
错误

这是我尝试过的:

  1. 代码更改:使用PasteSpecial而不是简单Paste.

    Range("D2:F2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    'ActiveSheet.Paste  ' insted of this using paste special.
    ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    
    Run Code Online (Sandbox Code Playgroud)

收到以下错误:
在此输入图像描述

  1. 代码更改:将选择调整为3列.

    Range("D2:F2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Resize(1, 3).Select
    'ActiveSheet.Paste
    
    Run Code Online (Sandbox Code Playgroud)

得到此错误:
在此输入图像描述

  1. 试过的On Error Resume Next声明.它忽略了错误消息,但也没有粘贴数据.

我正在寻找一种方法来忽略此错误消息并继续粘贴.我们通常手动copy-pastecut-paste在Excel工作表中得到此错误,我们可以选择忽略和粘贴数据.同样有什么方法可以在宏中忽略它吗?

Dav*_*ens 6

Select不惜一切代价避免.尝试这样的事情

Sub foo()
Dim rng
Set rng = Range("D2:F" & GetLastRow(4))

rng.Cut
Application.Goto Range("A1").Offset(GetLastRow(1))
ActiveSheet.Paste

End Sub

Function GetLastRow(col As Long)
' modified from:
' https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba

If Application.WorksheetFunction.CountA(Columns(col)) <> 0 Then
    GetLastRow = Columns(col).Find(What:="*", _
                  After:=Cells(Rows.Count, col), _
                  Lookat:=xlPart, _
                  LookIn:=xlFormulas, _
                  SearchOrder:=xlByRows, _
                  SearchDirection:=xlPrevious, _
                  MatchCase:=False).Row
Else
    GetLastRow = 1
End If

End Function
Run Code Online (Sandbox Code Playgroud)