VBA如何在没有.Select的情况下复制单元格的内容

时间:2013-05-22 18:00:56

标签: excel excel-vba excel-2003 vba

我正在编写一个方法,可以使用Target并将单元格精确粘贴到另一个单元格。该单元格是一个带有一些花式结构的运输标签。我有办法吗?

原来我有这个:

Worksheets("Label").Range("A1").Value = Worksheets("Get Address").Range("A28").Value

它适用于纯文本。然而,我失去了我创造的造型,它们是不同的,因为在第一行之后,风格是不同的:

  

enter image description here

我还尝试使用Macro Recorder,我使用.Select获得了一个解决方案,并且我read this question尽可能不使用它。我该怎么办?

' Created by the Macro Recorder
Range("A28:A33").Select
Range("A33").Activate
Selection.Copy
Sheets("Label").Select
Range("A1").Select
ActiveSheet.Paste

3 个答案:

答案 0 :(得分:19)

Worksheets("Get Address").Range("A33").Copy _
       Destination := Worksheets("Label").Range("A1")

答案 1 :(得分:6)

仅复制和粘贴值,然后使用以下

Worksheets("Label").Range("A1").value = _
   Worksheets("Get Address").Range("A33").value

此声明不会使用剪贴板

答案 2 :(得分:0)

您可以遍历范围内的每个单元格,以在目标位置复制并设置每个单元格的值,注释等。 这是一个例子。

Sub CopySpecial(p_RangeFrom As String, p_OffsetRow As Integer, p_OffsetColumn As Integer)

    Dim l_Row As Integer
    Dim l_Column As Integer
    Dim thisCell As Range
    Dim l_TargetCell As Range

    l_Row = Range(p_RangeFrom).Row
    l_Column = Range(p_RangeFrom).Column

    For Each thisCell In Range(p_RangeFrom)

        Set l_TargetCell = Range(Cells(thisCell.Row + p_OffsetRow, thisCell.Column + p_OffsetColumn).Address)

        ' Copy the text
        l_TargetCell.Value = thisCell.Value

        ' Copy the comment only if we have a comment to copy
        If Not thisCell.Comment Is Nothing Then

            ' Delete any existing comment in the target cell, if any.
            ' If you don't to this the .AddComment Method below will fail.
            If Not l_TargetCell.Comment Is Nothing Then l_TargetCell.Comment.Delete
            Call l_TargetCell.AddComment(thisCell.Comment.Text)

        End If

        ' Add more items to copy here, such as color, etc.

    Next

End Sub

Sub TestCall()
    Call CopySpecial("A1:B2", 3, 3)
End Sub