【问题标题】:Paste copied values with .PasteSpecial使用 .PasteSpecial 粘贴复制的值
【发布时间】:2017-06-25 21:40:55
【问题描述】:

请帮我解决这个问题:

我从这个link使用这个vba:

Sub test()
 Dim rng1 As Range, rng2 As Range, rngName As Range, i As Integer, j As Integer
    For i = 1 To Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Row
        Set rng1 = Sheets("Sheet2").Range("B" & i)
        For j = 1 To Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
            Set rng2 = Sheets("Sheet1").Range("C" & j)
            Set rngName = Sheets("Sheet1").Range("B" & j)
            If rng1.Value = rng2.Value Then
                rngName.Copy Destination:=Worksheets("Sheet2").Range("E" & i)
            End If

        Set rng2 = Nothing
    Next j
    Set rng1 = Nothing
 Next i
End Sub

有人可以告诉我如何将rngName.Copy

Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

我想赚,rngName.Copy 只复制文本,因为我在单元格中有特殊的颜色、文本格式、注释等,vba 粘贴更改的值,我想保留这些。

【问题讨论】:

    标签: vba range copy-paste


    【解决方案1】:

    你是这个意思吗?

    rngName.Copy
    Worksheets("Sheet2").Range("E" & i).PasteSpecial Paste:=xlPasteFormulas, _
      Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    

    您可能还需要xlPasteValues 而不是xlPasteFormulas。在这种情况下,一种更简单更好的方法是在不使用复制/粘贴的情况下取值:

    Worksheets("Sheet2").Range("E" & i).Value = rngName.Value
    

    上述所有方法都保留了目标的格式。

    【讨论】:

    • 哇。第二个更容易,但很好的解决方案是两者兼而有之!现在我记住,需要将 xlPaste 添加到下一行。谢谢你 A.S.H.我是初学者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多