[英]Pass Range Cells for Copy-Paste: Excel VBA
我必須將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。
修復此問題的任何幫助將不勝感激。
由於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
您可以嘗試:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.