如何设置当前所选单元格的范围

我试图设置一系列已经被选中的单元格,有没有办法做到这一点?

Range("e2").Select Range(Selection.End(xlToRight), Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Range(Selection, Selection.End(xlToRight)).Select Set temprange = activeselection 

我不得不select这种方式,因为在工作表中没有数据总是在所有的列,但在E它必须和数据从第2行开始工作正常,但我需要设置它作为一个范围在其他通过一个filter在上面。

Activeselection太容易了,所以我应该知道,它不会这样工作..什么是正确的方法来做到这一点? 谢谢

如果您想引用已经select的单元格,请使用“select”参考:

 Set temprange = Selection 

请注意,通常最好避免使用VBA中的select,并尽量使用范围。 你可能会重写代码,而不能使用select:

 Set temprange = Range(Range("E2").End(xlToRight), Range("E2").End(xlDown)) Set temprange = Range(temprange, temprange.End(xlToLeft)) Set temprange = Range(temprange, temprange.End(xlToRight)) 

你可能也可以进一步简化这个使用偏移自动包括2个额外的列在右边。 有关如何在VBA中引用范围的更多详细信息,请参阅下面的文章:

https://msdn.microsoft.com/en-us/library/office/gg192736(v=office.14).aspx

一个选项是提供这个select来为用户select一个范围,当前的select已经填充为默认值:

 Sub GetRng() Dim rng1 As Range On Error Resume Next Set rng1 = Application.InputBox("pls select range", "Set Range", Selection.Address, , , , , 8) On Error GoTo 0 If rng1 Is Nothing Then MsgBox "User cancelled", vbCritical End Sub