2016-12-07 112 views
1

我正在使用它將訂單從新訂單頁面移動到以前的訂單頁面,但是當我嘗試運行它時遇到標題錯誤。我看了幾個不同的地方試圖讓它起作用,我發現他們應該可以工作,但我的不是。VBA:粘貼Paste類的特殊方法失敗

Sheets("New_Orders").Range("B3:E29").Cut 

Sheets("Previous_Orders").Range("B31").PasteSpecial Paste:=xlPasteValues 

這是應該做的是不工作或者

Sheets("New_Orders").Select 
Range("B3:E29").Select 
Selection.Cut 
Sheets("Previous_Orders").Select 
Range("B:B").Find("").Select 
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

我試圖Selection.Copy以及同樣的事情,更多的代碼。它給出了相同的錯誤

+3

您只能粘貼全部或插入剪切。 –

+3

[必須。閱讀。](http://stackoverflow.com/q/10714251/1188513) –

+0

必須觀看:[Excel VBA簡介](https://www.youtube.com/playlist?list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5)。這是相關視頻:[Excel VBA簡介第5部分 - 選擇單元格(範圍,單元格,活動單元格,結束,偏移)](https://www.youtube.com/watch?v=c8reU-H1PKQ&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index= 5&t = 3072s) –

回答

2

如上面在評論中所述,您只能在使用Cut時粘貼所有內容。如果只需要值,則直接賦值,然後清除範圍。

Sub foo() 
Dim rng As Range 
Dim lastRow As Long 

Set rng = Sheets("New_Orders").Range("B3:E29") 
With Sheets("Previous_Orders") 
    lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 
    .Cells(lastRow, 2).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value 
End With 
rng.Clear 
End Sub 
+1

但是這並不能解釋編輯到問題中的註釋,也就是'我也嘗試過Selection.Copy。它給出了同樣的錯誤(但我無法得到'ActiveSheet.PasteSpecial'工作 - 我會認爲它需要'ActiveCell.PasteSpecial' - 所以我不太確定'相同'錯誤「的評論是)。 – YowE3K

+0

剛剛輸入相同的,當我看到你的編輯@ YowE3K它應該與ActiveCell和複製。 –

+0

當我運行它時,它給了我運行時錯誤'1004':應用程序定義或對象定義的錯誤。 –