2016-12-29 5 views
-2
Public Sub CopyPaste() 

Dim j As Long 

For j = 2 To 52 
     Range("AE" & j).Select 
     Selection.Copy 
     Range("AE" & j).Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

     Range("AF" & j).Select 
     Selection.Copy 
     Range("AF" & j).Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

     Range("AG" & j).Select 
     Selection.Copy 
     Range("AG" & j).Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

     Application.CutCopyMode = False 
    End If 
Next j 

End Sub 

このコードを最小限にする方法はありますか? Range( "AE:AG" & j)を使用してみました。選択してくださいが、何らかのエラーが表示されています。ペースト特殊コード

+0

セルをコピーしてコピーした値を同じセルに貼り付けることを正しく理解していますか?はいの場合は、セルの書式を変更するだけです。あれは正しいですか? – FDavidov

答えて

1

はい、そうです。 値のみを貼り付ける場合は、範囲の値と同じにすることができます。しかし、セルと正確なシートオブジェクトを使用する必要があります。例

Public Sub CopyPaste() 
    Dim ws As Worksheet 

    Set ws = ActiveSheet 

    ws.Range(ws.Cells(2, 31), ws.Cells(52, 34)).Values = _ 
    ws.Range(ws.Cells(2, 31), ws.Cells(52, 34)).Values 

    Set ws = Nothing 
End Sub 
0

ことがSelectCopyPasteを使用しないように、常に最善です。あなたはほとんどいつでもその場所に.Value = ...を使用することができます。

あなたはその値と調合セルを交換したい場合は、単に自分自身にその値を設定することができ、(それはあなたの質問からあまり明確ではないが)、これはあなたが何をしたいと仮定すると:

Sub RemoveFormulas() 

With ActiveSheet 
    .Range(.Cells(2, 31), .Cells(52, 34)).Value = _ 
    .Range(.Cells(2, 31), .Cells(52, 34)).Value 
End With 

End Sub