Setting Selection as Range

十年热恋 提交于 2020-06-26 07:26:27

问题


Can someone please hint at what i might be doing wrong here? For now I am effectively trying to do a Ctrl-A command to do a select all on a block of data in vba. Then i want that selection to be saved as a range, so that I can use it later.

Dim rngAdData As Range
.....
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

Set rngAdData = Selection
Range(rngAdData).AdvancedFilter Action:=xlFilterInPla....  //<----

The last line gives me a run-time error '1004': Method 'Range' of object 'Global' failed

When I do it the following way, it works

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).AdvancedFilter Action:=xlFilterInPla....

But doing it this way is cumbersome because I need to use that range again here

With ActiveWorkbook.Worksheets("....").Sort
    .SetRange Range(Selection) //<---

The line being pointed to gives me that same error.


回答1:


Range(rngAdData) is feeding a range to a range. Just use rngAdData.AdvancedFilter

It's the same idea on your second problem. Use this syntax instead.

With ActiveWorkbook.Worksheets("....").Sort
    .SetRange Selection

With that said you should be using another means of getting your desired range other than using Select or Selection statements. Something like this should work better

Dim rngAdData As Range
Dim sht As Worksheet, bottomMostRow As Long, rightMostColumn As Long
Set sht = ActiveSheet
With sht
    bottomMostRow = .Cells(1, 1).End(xlDown).Row
    rightMostColumn = .Cells(1, 1).End(xlToRight).Column
    Set rngAdData = .Range(.Cells(1, 1), .Cells(bottomMostRow, rightMostColumn))
End With



回答2:


Try below code :

Sub sample()
    Dim rng As Range
    Range("A1").Select
    Set rng = Range("A1").CurrentRegion
    rng.AdvancedFilter xlFilterInPlace, Sheets("sheet1").Range("E7:H8"), False
End Sub


来源:https://stackoverflow.com/questions/15140786/setting-selection-as-range

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!