复制和粘贴特别?

时间:2014-02-27 17:27:03

标签: excel-vba vba excel

我正在编写代码来执行“K”列的公式,更改其格式,然后将其复制并粘贴到“A”列中。

我也在尝试将列“I”复制并粘贴到“B”列。 “i”确定B列中单元格的数量。

到目前为止,这是我的代码:

Sub Test()
   Dim i As Long
   i = Sheet1.Cells(Rows.Count, 2).End(xlUp).Row
   With Range("K3:K" & i)
        .Formula = "=DATE(A3,G3,H3)"
        .NumberFormat = "ddmmmyyyy"
        .Copy
        Range("A3:A" & i).PasteSpecial xlPasteFormats
   End With
   With Range("I3:I" & i)
        .Copy
        Range("B3:B" & i).PasteSpecial xlPasteFormats
   End With

End Sub

我出错的任何想法?我是VBA的新手,所以这很可能是我忽略的一个小错误。

编辑:调整后的公式正在将列I正确复制到列B,但是列K到列A是错误的。

让我们说列K有日期:

29Apr1921
08May1922
21Oct1923

A栏现在有:

04Apr1905
05Apr1905
06Apr1905

1 个答案:

答案 0 :(得分:1)

问题是它缺少粘贴值并且只粘贴了格式。在执行Date公式后,它还需要自己的With语句。

Sub Test()
   Dim i As Long
   i = Sheet1.Cells(Rows.Count, 2).End(xlUp).Row
   With Range("K3:K" & i)
        .Formula = "=DATE(A3,G3,H3)"
        .NumberFormat = "ddmmmyyyy"
End With
   With Range("K3:K" & i)
   .Copy
    Range("A3:A" & i).PasteSpecial xlPasteValues
    Range("A3:A" & i).PasteSpecial xlPasteFormats
   End With

   With Range("I3:I" & i)
        .Copy
        Range("B3:B" & i).PasteSpecial

   End With

End Sub