簡體   English   中英

通過范圍單元格進行復制粘貼:Excel VBA

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM