如何只粘贴excel中的值

时间:2013-01-03 08:49:13

标签: excel vba

我对Excel很陌生,对这个论坛来说还是全新的。

我已经从下面的论坛中获取了代码并根据我的需要对其进行了修改。

http://pressf1.pcworld.co.nz/showthread.php?90122-Creating-Macro-to-copy-and-paste-data-into-the-next-empty-column

Sub copyTotals()
    Dim TargetSht As Worksheet, SourceSht As Worksheet, SourceRow As Integer, SourceCells As Range
    Set SourceSht = ThisWorkbook.Sheets("DUN - Jan")
    Set TargetSht = ThisWorkbook.Sheets("DUN Jan - Jan,Feb,Mar,Apr")
    Set SourceCells = SourceSht.Range("L36,N36")
    If TargetSht.Range("C11").Value = "" Then
        SourceRow = 1
    ElseIf TargetSht.Range("C41") <> "" Then
        MsgBox ("The sheet is full, you need to create a new sheet")
    Else
        SourceRow = TargetSht.Range("C41").End(xlUp).Row + 1
    End If

    SourceCells.Copy TargetSht.Cells(SourceRow, 3)
End Sub

问题是粘贴的值有源的格式化,我只想粘贴值。

有人可以帮我解决这个问题吗。

4 个答案:

答案 0 :(得分:4)

将.Copy与.PasteSpecial一起使用。而不是:

SourceCells.Copy TargetSht.Cells(2, SourceCol)

这样做:

SourceCells.Copy
TargetSht.Cells(2, SourceCol).PasteSpecial xlPasteValues

答案 1 :(得分:2)

使用宏录制器会产生这种情况。卡住后我经常使用它。

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

答案 2 :(得分:2)

您不需要复制和粘贴来执行此操作(至少在Excel 2010及更高版本中,我认为)。您只需将范围的.Value设置为相等。例如:

rng.Value = rng.Value

Sheet1.Range("A1:A10").Value = Sheet1.Range("A1:A10").Value

因为.Value“返回或设置一个表示指定范围值的Variant值。”

请注意,这仅适用于值,而非格式。

http://msdn.microsoft.com/en-us/library/office/ff195193(v=office.15).aspx

答案 3 :(得分:0)

右键单击单元格并选择paste special,然后您只能选择值

编辑:对于宏它的原理相同 使用 .PasteSpecial xlPasteValues 喜欢这里

Set rng6 = .Range("A3").End(xlDown).Offset(0, 41)
rng6.Copy
ActiveSheet.Paste Destination:=Worksheets("Positions").Range("W2")