2015-07-13 72 views
0

我目前正在嘗試使用VBA將某些單元格從一個位置複製到另一個位置,因爲我是VBA新手我在想如果任何人都可以幫我讓我的代碼稍微有點兒更高效我知道必須有一種方法來複制到一個單元格,而不必選擇單元格然後複製到它複製到單元格而不必先選擇它們

For i = 1 To dataSheet.Range("A" & dataSheet.Rows.Count).End(xlUp).Row 
    dataSheet.Range("A" & i & ":" & "CT" & i).Copy 
    Set rCell = dataSheet.Range("C" & i) 
    pasteSheet.Activate 
    If rCell = condition1 Then 
     With ActiveSheet 
      .Range("CU" & rowLoop2).Select 
      ActiveSheet.paste 
     End With 
+0

閱讀本 - > https://msdn.microsoft.com/en-us/library/office/ff837760.aspx – Dawid

+0

你可以通過移動獲得一些效率在你的「If」裏面「複製」行。或者,不是檢查每一行以查看它是否滿足條件1,而只是執行復制和粘貼(如果是),則可以(如上建議)複製整個範圍,然後刪除pasteSheet中不滿足條件。 –

+0

你可能會在這裏找到一些指針:http://www.excelitems.com/2010/12/optimize-vba-code-for-faster-macros.html –

回答

0

您有2個選項。您可以使用.PasteSpecial方法,也可以只引用原始範圍並將新範圍設置爲其值。

.Range("CU" & rowLoop2).PasteSpecial Paste:=xlPasteAll 

使用設置值選項,您必須定義值應該填充的整個範圍。

Range("A3:E3").Value = Range("A1:E1").Value 

如果你只是使用只有細胞A3將被填充,並會採取個值從細胞A1。希望這可以幫助。

編輯:值得注意的是,您不必更改工作表即可粘貼。你的代碼可以修改爲以下:

With dataSheet 
    For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row 
     .Range("A" & i & ":" & "CT" & i).Copy 
     Set rCell = .Range("C" & i) 
     If rCell = condition1 Then 
      pasteSheet.Range("CU" & rowLoop2).PasteSpecial Paste:=xlPasteAll 
     End If 
    Next i 
End With 
+0

這正是我非常感謝的答案 – tombat7112

相關問題