【问题标题】:Pass Range Cells for Copy-Paste: Excel VBA复制粘贴的传递范围单元格:Excel VBA
【发布时间】:2019-05-28 12:08:19
【问题描述】:

我必须将 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

有时我会收到类型不匹配错误,有时还会收到“400”错误。 预期输出是单元格 E1792 中存在的单元格值应以值和数字格式复制粘贴到 C1799。

任何解决此问题的帮助将不胜感激。

【问题讨论】:

  • 记住,你总是需要为每个范围对象指定工作簿和工作表

标签: excel vba


【解决方案1】:

由于 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

【讨论】:

    【解决方案2】:

    你可以试试:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2018-09-06
      • 2021-03-18
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多