在VBA中按ctrl + shift + down的代码

Moe*_*Moe 4 excel vba excel-vba

我怎样才能在excel vba上进行ctrl + shift + down.我还想知道然后将其粘贴为特殊值.我目前的代码就是这个

Sub CopyCol()

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

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

End Sub
Run Code Online (Sandbox Code Playgroud)

所以我要做的是复制B列中的所有内容,而不是整列本身.就像条目在第100行结束一样,它应该停在那里,就像ctrl + shift + end工作一样.然后复制那里的任何内容并将其粘贴在sheet14的b14中作为值,因为这是我需要的特定位置.我知道在(xldown)之后输入.select可以帮助我做到这一点但是它不会让我复制.粘贴到另一张纸也不起作用.

Sco*_*ner 8

您将使用的方法是:

Sheets("Sheet1").Range(Sheets("Sheet1").Range("B2"),Sheets("Sheet1").Range("B2").End(xlDown)).Copy
Run Code Online (Sandbox Code Playgroud)

Range()对象的工作方式如下 Range(Start Cell, End Cell)

所以你用第一个细胞锚定Sheets("Sheet1").Range("B2").

然后锚定End Cell Sheets("Sheet1").Range("B2").End(xlDown)).

现在另一种键入较少的方法是使用With块:

With Sheets("Sheet1")
    .Range(.Range("B2"),.Range("B2").End(xlDown)).Copy
End with
Run Code Online (Sandbox Code Playgroud)

  • @Moe - 这也许是学习使用 `With` 来减少重复的好时机,因为(IMO)当你有 `Sheets("Sheet1") // Sheets( "Sheet1").Range("B2")` 重复了很多。编辑:啊,斯科特在我输入评论时有了这个想法。快速问:如果你做了`With Sheets("Sheet1").Rnage("B2")`,那么你可以只做`.Range(,.End(xldown)).Copy`吗?或者你真的需要一些参考资料吗? (2认同)