3

我对 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

4 回答 4

4

将 .Copy 与 .PasteSpecial 一起使用。代替:

SourceCells.Copy TargetSht.Cells(2, SourceCol)

做这个:

SourceCells.Copy
TargetSht.Cells(2, SourceCol).PasteSpecial xlPasteValues
于 2013-01-03T08:56:52.647 回答
2

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

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
于 2013-01-03T23:30:28.443 回答
2

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

rng.Value = rng.Value

或者

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

since .Value "返回或设置一个表示指定范围值的 Variant 值。"

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

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

于 2014-10-02T08:42:23.830 回答
0

右键单击单元格并选择特殊粘贴,然后您只能选择值

编辑:对于宏其相同的原则使用 .PasteSpecial xlPasteValues 像这里

Set rng6 = .Range("A3").End(xlDown).Offset(0, 41)
rng6.Copy
ActiveSheet.Paste Destination:=Worksheets("Positions").Range("W2")
于 2013-01-03T08:51:06.737 回答