Excel VBA列表框选择过滤器

时间:2017-10-24 23:20:58

标签: excel excel-vba vba

我自学VBA用户,试图让下面的代码更灵活,它工作正常,但我为每一行复制它(每行中的新按钮/宏),下面的代码过滤器基于范围y37,但是我希望用户从列表中选择(z37-z59),然后将filterx设置为(y37-59)中的相应值,即用户从z37-z59填充的列表中选择,即列表中的Joe博客和然后将filterx范围设置为y值jblogs01

PS我只发布了一小段代码以方便使用 我也是这样做的,所以请随时提供反馈。

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

1 个答案:

答案 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