我必须将2个单元格(引用或值)从一个子传递到另一个子,以便将第一个单元格中的值复制并粘贴到另一个单元格。 由于需要多个单元格组合,因此我想通过将单元格(引用或值)从一个子例程传递到另一个子例程来完成它。
我尝试了以下代码,并将其与Byref和ByVal选项结合使用。但是无法获得预期的结果。 本质上,在下面的代码中,单元格E1792中存在的任何值都应以“值”和“数字”格式复制粘贴到C1799。
Private Sub Copy_Val(ByRef CopyFrom As Range, ByRef PasteTo As Range)
Application.ScreenUpdating = False
Range(CopyFrom).Select
Selection.Copy
Range(PasteTo).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Sub Apply_Filter()
Dim CpFrm As Range
Dim PstTo As Range
Set CpFrm = Range("E1792")
Set PstTo = Range("C1799")
Call Copy_Val(CpFrm, PstTo)
End Sub
有时我会遇到Type Mismatch错误,有时会出现“ 400”错误。 预期的输出是,应将E1792单元格中存在的单元格值以“值”和“数字”格式复制粘贴到C1799。
在解决此问题方面的任何帮助将不胜感激。
答案 0 :(得分:3)
由于CopyFrom和PasteTo是Range
对象,因此不需要使用Range()
。您还可以消除Select
部分,并大大简化您的功能:
Private Sub Copy_Val(ByRef CopyFrom As Range, ByRef PasteTo As Range)
Application.ScreenUpdating = False
CopyFrom.Copy
PasteTo.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub
答案 1 :(得分:1)
您可以尝试:
Option Explicit
Public Sub Copy_Val(ByVal CopyFrom As Range, ByVal PasteTo As Range)
Application.ScreenUpdating = False
CopyFrom.Copy
PasteTo.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
End Sub
Sub Apply_Filter()
With ThisWorkbook.Sheets("Sheet1")
Call Copy_Val(.Range("E1792"), .Range("C1799"))
End With
End Sub