excel - VBA粘贴范围

标签 excel vba range paste

我想复制一个范围并将其粘贴到另一个电子表格中。下面的代码获取副本,但不粘贴:

Sub Normalize()

    Dim Ticker As Range
    Sheets("Sheet1").Activate
    Set Ticker = Range(Cells(2, 1), Cells(65, 1))
    Ticker.Copy
    
    Sheets("Sheet2").Select
    Cells(1, 1).Activate
    Ticker.PasteSpecial xlPasteAll
    
End Sub

如何将副本粘贴到另一张纸上?

最佳答案

要从字面上修复您的示例,您可以使用以下内容:

Sub Normalize()


    Dim Ticker As Range
    Sheets("Sheet1").Activate
    Set Ticker = Range(Cells(2, 1), Cells(65, 1))
    Ticker.Copy

    Sheets("Sheet2").Select
    Cells(1, 1).PasteSpecial xlPasteAll



End Sub

要对其进行轻微改进,请去掉“选择”和“激活”:

Sub Normalize()
    With Sheets("Sheet1")
        .Range(.Cells(2, 1), .Cells(65, 1)).Copy Sheets("Sheet2").Cells(1, 1)
    End With
End Sub

但是使用剪贴板需要时间和资源,因此最好的方法是避免复制和粘贴,只需将值设置为您想要的值。

Sub Normalize()
Dim CopyFrom As Range

Set CopyFrom = Sheets("Sheet1").Range("A2", [A65])
Sheets("Sheet2").Range("A1").Resize(CopyFrom.Rows.Count).Value = CopyFrom.Value

End Sub

要定义CopyFrom,您可以使用任何您想要定义范围的内容,您可以使用Range("A2:A65"), Range("A2",[A65])Range("A2", "A65") 全部都是有效条目。另外,如果 A2:A65 永远不会改变,代码可以进一步简化为:

Sub Normalize()

Sheets("Sheet2").Range("A1:A65").Value = Sheets("Sheet1").Range("A2:A66").Value

End Sub

我添加了“从范围复制”和“调整大小”属性,以使其更加动态,以防您将来想要使用其他范围。

关于excel - VBA粘贴范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968856/

相关文章:

vba - 使用行号和列号更新单元格值,以根据选择的单元格在间接函数中使用

excel - 数组公式中的 IFERROR =""未输入空白

html - VBA - 查找前面的 html 标记

VBA字表复制丢失数据

c++ - C++标准在哪里定义了float类型的取值范围?

html - 如何使用 Excel VBA 在 Web 表单上显示灰显的文本字段?

VBA AddDataField CubeFields - 错误 1004

javascript - 具有交错上/下台阶的 jQuery UI 范围 slider

Excel VBA - 仅在顶部和底部添加边框的总行

excel - 是否可以将多个单元格合并为一个单元格,同时省略空单元格?