2

誰かが私がここで間違っているかもしれないことをほのめかしてくれますか?今のところ、vbaのデータブロックですべて選択を実行するためにCtrl-Aコマンドを効果的に実行しようとしています。次に、後で使用できるように、その選択範囲を範囲として保存します。

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....  //<----

最後の行は私にrun-time error '1004': Method 'Range' of object 'Global' failed

私が次のようにそれをするとき、それは働きます

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

しかし、この方法でそれを行うのは面倒です。なぜなら、ここでその範囲を再度使用する必要があるからです。

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

指している線は私に同じエラーを与えます。

4

2 に答える 2

2

Range(rngAdData)範囲を範囲にフィードしています。使うだけrngAdData.AdvancedFilter

2番目の問題についても同じ考えです。代わりにこの構文を使用してください。

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

Selectそうは言っても、 orSelectionステートメントを使用する以外に、目的の範囲を取得する別の手段を使用する必要があります。このようなものがうまくいくはずです

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
于 2013-02-28T16:47:16.100 に答える
1

以下のコードを試してください:

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
于 2013-02-28T16:42:32.260 に答える