我自学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
答案 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