【问题标题】:How to paste VALUES ONLY in excel VBA? [duplicate]如何仅在 excel VBA 中粘贴 VALUES? [复制]
【发布时间】:2021-10-06 02:43:13
【问题描述】:

所以我只需要将一系列数据的值粘贴到工作表“MasterList”中。我一直在寻找这样做的方法并发现了这个:

.PasteSpecial Paste:=xlPasteValues

我应该如何更改我的代码以便可以使用 .PasteSpecial Paste:=xlPasteValues 函数?我想我需要两行代码来完成这个,但我无法弄清楚语法......

Dim Lastrow As Integer

Lastrow = Cells(15, 3).Value + 3

Dim Copyrange As String

Startrow = 3
Let Copyrange = "I" & Startrow & ":" & "K" & Lastrow
Range(Copyrange).Select
Selection.Copy

Sheets.Add.Name = "MasterList"
**ActiveSheet.Paste Destination:=Range("A1")**
ActiveSheet.Move

【问题讨论】:

  • ActiveSheet.Range("A1").PasteSpecial xlPasteValues.
  • 是的...修复了它...谢谢!!
  • 这是我第一次看到Let 被明确包含在内。 VBA 不需要您编写它,而且没有人真正这样做过。来自 MSDN:“可选。显式使用 Let 关键字是一种风格问题,但通常会被省略。”

标签: excel vba range selection paste


【解决方案1】:

您应该避免使用 select,但也要避免使用剪贴板,因为它很慢:

With ActiveSheet 'should put the actual sheet here
    Dim Lastrow As Long
    Lastrow = .Cells(15, 3).Value + 3
    
    Dim startrow As Long
    startrow = 3
    
    Dim Copyrange As String
    Copyrange = "I" & startrow & ":" & "K" & Lastrow
    
    Dim rng As Range
    Set rng = .Range(Copyrange)
    
    Dim mstlt As Worksheet
    Set mstlt = Worksheets.Add
    
    mstlt.Name = "MasterList"
    
    mstlt.Range("A1").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多