2016-02-22 367 views
2

如何在excel vba上按ctrl + shift + down。我也想知道,然後將其粘貼爲特殊值。我的代碼目前已經是這個在VBA中ctrl + shift + down的代碼

Sub CopyCol() 

    Sheets("Sheet1").Range("B2").End(xlDown).Select.Copy 

    Sheets("Sheet2").Range("B14").PasteSpecial xlPasteValues 

End Sub 

那麼什麼,我試圖做的就是複製一切都在B列而不是整個列本身。就像如果條目在第100行結束,它應該停在那裏幾乎如何按Ctrl + Shift +結束工作。然後複製任何內容並將其粘貼爲b14中的sheet2中的值,因爲這是我需要的特定位置。我知道在(xldown)之後放入.select會幫助我做到這一點,但不會讓我複製。也粘貼到另一張紙也不起作用。

+1

錄製宏,然後查看源代碼的Excel生成。它應該給你你需要的一切。 –

+0

此外,這不是你的問題,但你可以通過簡單地設置兩個範圍的值相等來跳過複製/粘貼(從而避免剪貼板)。 (當你只需要這些值時,這個效果很好)。即您的帖子中的代碼也可以寫爲'[您想要填寫的範圍] = [您想要複製的值的範圍]'或者'表格(「Sheet2」)。Range(「B14」)。Value = Sheets (「Sheet1」)。Range(「B2」)。Value' – BruceWayne

回答

7

你會使用的方法是這樣的:

Sheets("Sheet1").Range(Sheets("Sheet1").Range("B2"),Sheets("Sheet1").Range("B2").End(xlDown)).Copy 

範圍()對象的工作原理是這樣Range(Start Cell, End Cell)

所以你錨定第一個單元格與Sheets("Sheet1").Range("B2")

並將終止單元與Sheets("Sheet1").Range("B2").End(xlDown))固定在一起。

現在具有較少的打字的另一種方法是使用帶塊:

With Sheets("Sheet1") 
    .Range(.Range("B2"),.Range("B2").End(xlDown)).Copy 
End with 
+1

@Moe - 這是一個很好的時間,也許也學會用'With'來減少重複,因爲(IMO)會讓它變得有點困難當你有'Sheets(「Sheet1」)// Sheets(「Sheet1」)。Range(「B2」)'重複這麼多。編輯:啊,斯科特有我的想法,因爲我鍵入我的意見。快速q:如果你使用Sheets(「Sheet1」),Rnage(「B2」)',那麼你可以只用'.Range(,.End(xldown))。或者你真的需要一些參考嗎? – BruceWayne

+1

完美!我添加了第二個代碼以便粘貼,並且完美運行!謝謝! – Moe

+1

@BruceWayne yup按照你的評論打字。 –

相關問題