簡體   English   中英

VBA 您不能在此處粘貼此內容,因為復制和粘貼區域的大小不同 - 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM