仅粘贴值,Excel VBA
我有这个脚本,我已经有帮助,但现在来了一个问题。我试图将单元格中的值而不是公式粘贴到另一个单元格中 我认为将.Value放在公式末尾会告诉脚本只粘贴值。。。似乎不是。有人能给我一个关于如何使这项工作的建议吗仅粘贴值,Excel VBA,vba,excel,Vba,Excel,我有这个脚本,我已经有帮助,但现在来了一个问题。我试图将单元格中的值而不是公式粘贴到另一个单元格中 我认为将.Value放在公式末尾会告诉脚本只粘贴值。。。似乎不是。有人能给我一个关于如何使这项工作的建议吗 Option Explicit Sub ONJL() Dim lastrow As Long Dim wsPAR As Worksheet 'PAERTO Dim wsRD As Worksheet 'Raw Data
Option Explicit
Sub ONJL()
Dim lastrow As Long
Dim wsPAR As Worksheet 'PAERTO
Dim wsRD As Worksheet 'Raw Data
Dim wsTEM As Worksheet 'Archive
Set wsPAR = Sheets("PAERTO")
Set wsRD = Sheets("Raw Data")
Set wsTEM = Sheets("Template")
With wsRD
Application.ScreenUpdating = False
lastrow = .Range("J" & .Rows.Count).End(xlUp).Row
wsRD.Range("J" & lastrow + 1).Formula = Date
wsRD.Range("B2").Copy wsRD.Range("K" & lastrow + 1).Value
wsRD.Range("B3").Copy wsRD.Range("L" & lastrow + 1).Value
wsRD.Range("E2").Copy wsRD.Range("M" & lastrow + 1).Value
wsRD.Range("E3").Copy wsRD.Range("N" & lastrow + 1).Value
wsRD.Range("H2").Copy wsRD.Range("O" & lastrow + 1).Value
wsRD.Range("H3").Copy wsRD.Range("P" & lastrow + 1).Value
wsRD.Range("Q1:T1").Copy wsRD.Range("Q" & lastrow + 1)
Application.ScreenUpdating = False
End With
End Sub
您可以在不实际使用的情况下“复制”。复制如下:
Sub CopyWithoutCopying()
Dim wsRD As Worksheet
Dim lastrow As Long
Set wsRD = Sheets("Raw Data")
With wsRD
lastrow = .Range("J" & .Rows.Count).End(xlUp).Row
.Range("K" & lastrow + 1).Value = .Range("B2").Value
.Range("L" & lastrow + 1).Value = .Range("B3").Value
' etc...
End With
End Sub
这种方法不使用剪贴板,性能更好,并且不选择任何内容。正如Jimmy指出的,在With
块中不需要wsRD前缀。您可以在不实际使用的情况下“复制”。复制如下:
Sub CopyWithoutCopying()
Dim wsRD As Worksheet
Dim lastrow As Long
Set wsRD = Sheets("Raw Data")
With wsRD
lastrow = .Range("J" & .Rows.Count).End(xlUp).Row
.Range("K" & lastrow + 1).Value = .Range("B2").Value
.Range("L" & lastrow + 1).Value = .Range("B3").Value
' etc...
End With
End Sub
这种方法不使用剪贴板,性能更好,并且不选择任何内容。正如Jimmy所指出的,在With
块中不需要wsRD前缀。+1但是由于代码在With块中,所以不需要语句的wsRD
部分。由于这两个原因,我只需要将wsRD作为冗余,我知道是否将其取出并不重要,但这正是我学习的方式。。。更多的事实是以防万一;)我知道我是否取出它并不重要
从技术上讲,这并不重要,但我可以很容易地看到这种方法会导致形成编码习惯,从而更难发现错误。+1但由于代码位于With块中,您不需要语句的wsRD
部分。多亏了这两种方法,我只是把wsRD作为一种冗余,我知道我是否去掉它并不重要,但这只是我学习的方式。。。更多的事实是以防万一;)我知道我是否取出它并不重要
从技术上讲,这并不重要,但我可以很容易地看到这种方法导致了编码习惯的形成,这使得识别错误变得更加困难。根据您之前的问题和答案,因为代码位于带有
的块中,您应该从With
块中的每条语句中删除wsRD
引用。根据您之前的问题及其答案,由于代码位于With
块中,因此您应该从With
块中的每条语句中删除wsRD
引用。