我有以下代码来复制一系列单元格并粘贴到另一个工作表上的下一个可用行。我的问题是它粘贴公式而不是值。我需要改变什么?
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
先谢谢你们。
答案 0 :(得分:1)
这实质上是将行从一个工作表转换为另一个工作表。
使用循环,将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")
答案 1 :(得分:0)
而不是
ws1.Range("V1").Copy ws2.Range("A" & DestRow)
DO
ws1.Range("V1").Copy
ws2.Range("A" & DestRow).PasteSpecial Paste:=xlPasteValues
注意:现在必须是2行代码!
答案 2 :(得分:0)
尝试此选项仅复制值:
而不是
ws1.Range("V1").Copy ws2.Range("A" & DestRow)
使用
ws2.Range("A" & DestRow) = ws1.Range("V1")