VBA:不使用剪贴板进行复制粘贴

5
有没有一种方法可以在不使用剪贴板的情况下作为一行复制/粘贴完成这个任务呢?将一个范围的行复制到另一个工作表并粘贴整个行范围。我需要的是值,而不是公式。
 Sheets("Data").Select 
 ActiveCell.EntireRow.Copy

 Sheets("TSP").Select
 ActiveCell.PasteSpecial Paste:=xlPasteValues

你只想复制粘贴数值吗?还是要复制粘贴格式化的单元格? - Shai Alon
请按照这里的说明操作 ==> http://excelexperts.com/copy-values-vba - Jon Crowell
2个回答

12

这段代码复制的是数值(而非公式)。

Sub a()
  Worksheets("Sheet2").Range("TS").Value=Worksheets("Sheet1").Range("1:1").Value
End Sub  

"TS"是一个范围的名称(一行)。

这是否是您想要实现的目标?

编辑

要将活动行复制到Sheet2.Row2(例如),您可以尝试:

Sub a()
 Dim myrow As Integer
 myrow = ActiveWindow.RangeSelection.Row
 Worksheets("Sheet2").Range("2:2").Value = Worksheets("Sheet1").Rows(myrow).Value
End Sub

祝好运!


我尝试了以下代码但失败了: Sub a() Dim TS As Range Set TS = Worksheets("Sheet2").Range("2:2") Worksheets("Sheet2").Range("TS").Value = Worksheets("Sheet1").Range("1:1").Value End Sub - Merlin
第一步将在Sheet1中,范围为1:1查找活动单元格?另外,在Sheet2上如何设置整个行的活动单元格范围.... - Merlin
你的复制源是什么?当前行?还是特定预定义行? - Dr. belisarius
如果源范围包含以等号“=”开头的值,则此方法无法正常工作,将其视为公式。 - Nickolay

0
某种原因,确实没有。 PasteSpecial 是关于剪贴板的全部内容。
如果你只需要值,可以使用 For 循环进行复制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接