2016-07-08 18 views
0

変数の値に基づいてオートフィルタの範囲を作成しようとしていますが、機能しません。誰にも何か提案はありますか?可変範囲のVBAオートフィルタ

    Dim y, z As Integer 
        y = 5 
        z = 3 

        rows(z).Select 
        Selection.AutoFilter 
        ActiveWorkbook.Worksheets("Active Worksheet").AutoFilter.Sort.SortFields.Clear 
        **ActiveWorkbook.Worksheets("Active Worksheet").AutoFilter.Sort.SortFields.Add _ 
        Key:=Range(Cells(z, y)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ 
        :=xlSortNormal** 
        With ActiveWorkbook.Worksheets("Active Worksheet").AutoFilter.Sort 
         .Header = xlYes 
         .MatchCase = False 
         .Orientation = xlTopToBottom 
         .SortMethod = xlPinYin 
         .Apply 
        End With 
+0

エラーがアスタリスクで囲まれた部分にまで来ている - 感謝を! – reggie86

+0

どのようなエラーだったのですか? – BruceWayne

+0

メソッドオブジェクト '_Global'の 'Range'が失敗しました – reggie86

答えて

1

あなたの主な問題は、VBAの事を好きではない方法ですRange(Cells())を、使用しているです。範囲を使用する場合は、Range("A1")またはCells(1,1)のいずれかを指定します。 Rangeを使用する場合は、Range(Cells(1,1),Cells(1,1))を使用する必要があります。が必要です。

エラーの行で、Key:=Cells(z,y)またはRange(Cells(z,y),Cells(z,y))にキーを変更します。

しかし、またhighly recommend avoiding using .Select/.Active I:

Sub whatever() 
Dim y As Integer, z As Integer 
Dim mainWB As Workbook 
Dim activeWS As Worksheet 

Set mainWB = ActiveWorkbook 
Set activeWS = mainWB.Worksheets("Active Worksheet") 

y = 5 
z = 3 

With activeWS 
    .Rows(z).AutoFilter 
    .AutoFilter.Sort.SortFields.Clear 
    .AutoFilter.Sort.SortFields.Add Key:=.Cells(z, y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With .AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End With 
End Sub