2016-12-29 2 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 

Gibt es eine Möglichkeit, diesen Code zu minimieren? Ich habe versucht mit Range ("AE: AG" & j). Wählen, aber es zeigt einen Fehler.Paste Spezialcode

+0

Verstehe ich richtig, dass Sie Zellen kopieren und den kopierten Wert in dieselben Zellen einfügen? Wenn ja, denke ich, dass Sie nur für das Format der Zelle ändern. Ist das korrekt? – FDavidov

Antwort

1

Ja, ist es. Wenn Sie nur Werte einfügen möchten, können Sie Bereiche Werte gleich. Aber Sie müssen Zellen und genaues Blattobjekt verwenden. Zum Beispiel

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

Es ist immer am besten Select, Copy und Paste zu vermeiden, mit. Sie können fast immer .Value = ... an ihrer Stelle verwenden.

Angenommen, dies ist das, was Sie tun wollen (es ist nicht allzu klar, aus Ihrer Frage ist), wenn Sie jemals eine formulierte Zelle mit seinen Wert ersetzen möchten Sie können nur seinen Wert auf sich selbst:

Sub RemoveFormulas() 

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

End Sub