2017-10-24 6 views
0

私は独学のVBAユーザーです。以下のコードをもっと柔軟にするためにはうまくいきますが、すべての行(新しい行/行ごとにマクロ)フィルタはy37の範囲に基づいていますが、ユーザはlist(z37-z59)から選択し、フィルタxを(y37-59)から対応する値に設定したいと思います。つまり、z37-z59すなわちJoeブログからリストを取得し、yの値にフィルタの範囲を設定します。ExcelのVBAリストボックスの選択フィルタ

PS使いやすさのために小さなコードを投稿しました 私はこの記事を気軽に投稿しています。他のビット。

Set filterx = Range("y37") 
    Sheets("DATA").Select 
    ActiveSheet.ShowAllData 
    ActiveSheet.Range("$A$1:$BL$300000").AutoFilter Field:=10, Criteria1:= _ 
     filterx 
+0

どのようなボタンを使用していますか? –

答えて

0

あなたがフォームのボタンを使用している場合は、ボタンから呼び出されたマクロがApplication.Callerを使用して、ボタンの形状の名前を取得することができます。それを使用してボタン自体への参照を取得し、そのTopLeftCellプロパティを使用して、その行に移動します。

未テストですが、途中であなたを取得する必要があります。すべてのボタンをこのサブにリンクします。

Sub DoFilter() 

    Dim filterx As Range 

    Set filterx = Activesheet.Shapes(Application.Caller). _ 
            TopLeftCell.EntireRow.Cells(1,"Y") 
    With Sheets("DATA") 
     .Select 
     .ShowAllData 
     .Range("$A$1:$BL$300000").AutoFilter Field:=10, _ 
              Criteria1:= filterx 
    End with 

End Sub 
関連する問題