2014-02-27 92 views
1

我正在編寫一個代碼來執行「K」列上的公式,更改其格式,然後將其複製並粘貼到列「A」中。複製和粘貼特殊?

我也在嘗試將列「I」複製並粘貼到列「B」。 「我」決定了細胞在B列

這裏是我的代碼至今numebr:

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 
+0

你看到了什麼意外的結果?一個錯誤?沒有結果?錯誤的格式?其他? – ARich

+0

在該行的範圍之前刪除句點'.Range(「A3:A」&i).PasteSpecial xlPasteFormats'和'.Range(「B3:B」&i).PasteSpecial xlPasteFormats'。當在範圍之前使用'.'時,你可以得到'Range(「K3:K」&i).Range(「A3:A」&i)'',就像'offset' +'resize'一樣工作。你可以在這裏閱讀更多關於'Range.Range'的行爲:http://stackoverflow.com/questions/21417748/range1-range2-returns-strange-addresses/21424687#21424687 –

+0

謝謝simoco,它複製並粘貼。唯一的問題是,在A欄中,日期未被正確轉移。我會在問題的編輯中解釋。 – JC11

回答

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