如何设置在那一刻选择的单元格的范围
How to set a range of the cells selected in that moment
我正在尝试设置已经 selected 的单元格范围,有什么办法吗?
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 因为在 sheet 中并非所有列中总是有数据但在 E 中它必须如此并且数据从第 2 行开始它工作正常但我需要将其设置为其他范围以通过过滤器。
Activeselection 太简单了所以我应该知道它不会那样工作..
正确的做法是什么?谢谢
如果您想引用已选中的单元格,只需使用选择引用:
Set temprange = Selection
请注意,通常最好避免使用 VBA 中的选择并尽可能简单地使用范围。您可以重写代码以完全不使用选择:
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 范围的选择,当前 selection 已经作为默认填充:
代码
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
我正在尝试设置已经 selected 的单元格范围,有什么办法吗?
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 因为在 sheet 中并非所有列中总是有数据但在 E 中它必须如此并且数据从第 2 行开始它工作正常但我需要将其设置为其他范围以通过过滤器。
Activeselection 太简单了所以我应该知道它不会那样工作.. 正确的做法是什么?谢谢
如果您想引用已选中的单元格,只需使用选择引用:
Set temprange = Selection
请注意,通常最好避免使用 VBA 中的选择并尽可能简单地使用范围。您可以重写代码以完全不使用选择:
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 范围的选择,当前 selection 已经作为默认填充:
代码
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