繁体   English   中英

复制一个工作表中的单元格范围,并将其作为值而不是公式粘贴到另一个工作表中

[英]Copy cell range from one worksheet and paste in a different worksheet as a value rather than formula

我在下面有此代码,以复制一定范围的单元格并将其粘贴到其他工作表上的下一个可用行。 我的问题是,它粘贴的是公式而不是值。 我需要更改什么?

Private Sub CopyAuditData_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
    Dim DestRow As Long
    Set ws1 = Sheets("Call Audit Sheet")
    Set ws2 = Sheets("HiddenData")
    DestRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1
    ws1.Range("V1").Copy ws2.Range("A" & DestRow)
    ws1.Range("V2").Copy ws2.Range("B" & DestRow)
    ws1.Range("V3").Copy ws2.Range("C" & DestRow)
    ws1.Range("V4").Copy ws2.Range("D" & DestRow)
    ws1.Range("V5").Copy ws2.Range("E" & DestRow)
    ws1.Range("V6").Copy ws2.Range("F" & DestRow)
    ws1.Range("V7").Copy ws2.Range("G" & DestRow)
    ws1.Range("V8").Copy ws2.Range("H" & DestRow)
    ws1.Range("V9").Copy ws2.Range("I" & DestRow)
    ws1.Range("V10").Copy ws2.Range("J" & DestRow)
    ws1.Range("V11").Copy ws2.Range("K" & DestRow)
    ws1.Range("V12").Copy ws2.Range("L" & DestRow)
    ws1.Range("V13").Copy ws2.Range("M" & DestRow)
    ws1.Range("V14").Copy ws2.Range("N" & DestRow)
    ws1.Range("V15").Copy ws2.Range("O" & DestRow)
    ws1.Range("V16").Copy ws2.Range("P" & DestRow)
    ws1.Range("V17").Copy ws2.Range("Q" & DestRow)
    ws1.Range("V18").Copy ws2.Range("R" & DestRow)
    ws1.Range("V19").Copy ws2.Range("S" & DestRow)
    ws1.Range("V20").Copy ws2.Range("T" & DestRow)
    ws1.Range("V21").Copy ws2.Range("U" & DestRow)
    ws1.Range("V22").Copy ws2.Range("V" & DestRow)
    ws1.Range("V23").Copy ws2.Range("W" & DestRow)
    ws1.Range("V24").Copy ws2.Range("X" & DestRow)
    ws1.Range("V25").Copy ws2.Range("Y" & DestRow)
End Sub

在此先感谢大家。

这实质上是将行到列从一个工作表转换为另一工作表。

代替使用特定范围的许多行复制/粘贴,请使用循环,将25-50行减少为3。

在您的特定示例中使用,因为您碰巧将行转置为列。 行号恰好与您要粘贴的列号匹配,因此请使用循环将其包围。

Private Sub CopyAuditData_Click()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim DestRow As Long, lRow As Long

    Set ws1 = Sheets("Call Audit Sheet")
    Set ws2 = Sheets("HiddenData")
    DestRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1

    'CHANGES HERE
    For lRow = 1 To 25
        ws2.Cells(DestRow, lRow).Value = ws1.Cells(lRow, "V").Value 
    Next lRow

End Sub

分解如下:

其中lRow = 1将其用作源行和目标列。

ws2.Cells(DestRow, 1)ws2.Range("A" & DestRow)

ws1.Cells(lRow, "V")ws1.Range("V1")

代替

ws1.Range("V1").Copy ws2.Range("A" & DestRow)

ws1.Range("V1").Copy
ws2.Range("A" & DestRow).PasteSpecial Paste:=xlPasteValues

注意:现在必须是2行代码!

尝试此操作仅复制值:

代替

ws1.Range("V1").Copy ws2.Range("A" & DestRow)

采用

ws2.Range("A" & DestRow) = ws1.Range("V1")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM