[英]Unable to paste in to filtered cells, error message "you can't paste this here because the Copy area and paste area aren't the same size"
[英]VBA You can't paste this here because the Copy and paste area aren't the same size - error
以下代碼應該(除其他外)在工作表中選擇不相鄰的列,選擇所有包含數據的行,將它們復制到另一個工作表並粘貼。 不幸的是,我收到“您無法在此處粘貼此內容,因為復制和粘貼區域的大小不同..”消息:
Sub Macro2()
'
' Macro2 Macro
Sheets("Share Registry Transactions").Select
Range("A1:AA2").EntireRow.Select
Selection.UnMerge
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Range("D1").Select
ActiveCell.FormulaR1C1 = "=WORKDAY(RC[-1],3)"
Range("D1").Select
Selection.Copy
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2").Select
Range("C2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2").Select
Range("D2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2").Select
Range("E2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2").Select
Range("G2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2:G4,H2").Select
Range("H2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2:G4,H2:H4,I2").Select
Range("I2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2:G4,H2:H4,I2:I4,J2").Select
Range("J2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2:G4,H2:H4,I2:I4,J2:J4,L2").Select
Range("L2").Activate
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A4,C2:C4,D2:D4,E2:E4,G2:G4,H2:H4,I2:I4,J2:J4,L2:L4,M2").Select
Range("M2").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Daily Recon").Select
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
End Sub
非常感謝任何幫助。
因此,正如已經評論過的那樣,如果沒有選擇和激活,這段代碼會更容易通過(盡管我假設你對此很陌生,所以歡迎!)。 在每一行停止此代碼也表明它誠實地做了一些奇怪的事情,在每一行中,您選擇了第 2 到第 4 行的多個范圍以及僅第 2 行中的一個(即 A2:A4、C2:C4、D2)。 然后選擇 xlDown 選擇 A 列第 2 行到表的末尾(即 A2:A8 例如),然后代碼重復添加另一個范圍以選擇第 2 到 4 行,但仍然返回選擇它出現的 A 列。
我相信你想要的是:
Sub test()
Set ws = ActiveWorkbook.Sheets("Share Registry Transactions")
ws.Range("1:2").EntireRow.UnMerge
ws.Rows("1:2").Delete Shift:=xlUp
lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
ws.Range("D2:D" & lastRow).FormulaR1C1 = "=WORKDAY(RC[-1],3)"
ws.Range("A2:A" & lastRow & ",C2:C" & lastRow & ",D2:D" & lastRow & ",E2:E" & lastRow & ",G2:G" & lastRow & ",H2:H" & lastRow & ",I2:I" & lastRow & ",J2:J" & lastRow & ",L2:L" & lastRow & ",M2:M" & lastRow).Copy
'Sheets("Daily Recon").Select
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
End Sub
這將從第 2 行選擇列 a、c、d、e、g、h、i、j、l 和 m 到填充在 A 列中的最后一行(注意:如果任何其他列填充在 A 列中的最后一行之后值將丟失。無論如何,這些值將在下次運行代碼時被覆蓋,因為最后三行如何分配將傳入數據粘貼到工作表“Daily Recon”中的位置)。
它還將使用您的最后一點代碼將它們放在您想要它們的位置(使用 select 會導致效率低下。但老實說,這段代碼應該運行得相對較快,所以除非您打算多次循環它,否則我不會擔心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.