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)
这是我尝试过的:
代码更改:使用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)代码更改:将选择调整为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)On Error Resume Next声明.它忽略了错误消息,但也没有粘贴数据.我正在寻找一种方法来忽略此错误消息并继续粘贴.我们通常手动copy-paste或cut-paste在Excel工作表中得到此错误,我们可以选择忽略和粘贴数据.同样有什么方法可以在宏中忽略它吗?
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)