2016-02-22 400 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按照你的评论打字。 –

相关问题