我对Excel很陌生,对这个论坛来说还是全新的。
我已经从下面的论坛中获取了代码并根据我的需要对其进行了修改。
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
问题是粘贴的值有源的格式化,我只想粘贴值。
有人可以帮我解决这个问题吗。
答案 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")