2015-05-02 69 views
1

我正在使用以下代碼。此代碼將單元格公式複製到另一個工作表中。有誰知道我如何修改它只複製單元格值而不是公式?將單元格範圍的單元格複製到同一文件中的另一張表


sub copyRangeOver() 

    Dim i As Integer 
    i = 631 

    Dim copyRange As Range 
    Set copyRange = ThisWorkbook.Worksheets("Coupling xyz data").Range("J" & 1 & ":V" & i) 

    Dim countD As Integer 
    countD = 1 
    copyRange.Copy Destination:=Cells(countD, 1) 

    Dim j As Integer 
    j = 466 
    Set copyRange = ThisWorkbook.Worksheets("Spring xyz data").Range("J" & 1 & ":V" & j) 

    copyRange.Copy Destination:=Cells(i + 1, 1) 

End Sub 
+1

你需要指定此使用'xlValues'或'PasteSpecial的xlPasteValues' – AHC

回答

3

你可以做一個直接的價值轉移這比複製速度更快,選擇性粘貼,價值觀,不涉及剪貼板。

Sub copyRangeOver() 

    Dim i As Long, j As Long, countD As Long 
    Dim copyRange As Range 

    i = 631 
    countD = 1 

    With ThisWorkbook.Worksheets("Coupling xyz data") 
     Set copyRange = .Range("J" & 1 & ":V" & i) 
     Cells(countD, 1).Resize(copyRange.Rows.Count, copyRange.Columns.Count) = _ 
      copyRange.Value 
    End With 

    j = 466 

    With ThisWorkbook.Worksheets("Spring xyz data") 
     Set copyRange = .Range("J" & 1 & ":V" & j) 
     Cells(i + 1, 1).Resize(copyRange.Rows.Count, copyRange.Columns.Count) = _ 
      copyRange.Value 
    End With 

End Sub 

這複製了您以前的努力,儘管在我看來這些值的目的地存在一些不明確之處。對於一排接收值,您在第一個中使用i,在第一個中使用CountD,但它們之間似乎沒有關係。

+0

@Sushant - 如果* countD *將會大於* 1 *,我相信第二個目標應該是'Cells(i + countD,1).Resize(...),以便跳過第一個價值轉移 – Jeeped

+0

是的,比複製和粘貼更好的方法 – brettdj

0

您需要PasteSpecial的:

copyRange.Copy 
Cells(countD, 1).PasteSpecial Paste:=xlPasteValues 
+0

感謝你的回覆。它工作正常,但有一個問題。之前,在運行宏之後,活動單元將始終是最後一個選擇。現在使用修改的代碼(在運行宏之後),「Spring xyz數據」表中的內容保持高亮顯示,活動單元格爲A632。如何在運行更新的宏之後將A1作爲活動單元格? – Sushant

0

這通常是如何完成的。

copyRange.Copy 
    Cells(i + 1, 1).PasteSpecial xlPasteValues 
    application.cutcopymode=0 
相關問題