宏/私人子:同时在几张纸上设置类似的过滤器 [英] Macro/Private Sub: Set similar filter on several sheets simultaneously

查看:275
本文介绍了宏/私人子:同时在几张纸上设置类似的过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用名为Rev00,Rev01,Rev02等 - 在我的工作簿中的其他工作表。



这将是非常有帮助的(为了比较不同修订的子摘要)设置完全相同的多重过滤器(如在活动工作表中设置)仅在以Rev开头的所有页面。



此操作最希望通过双击 Range(A1)或某处(我不想要这个按钮)。



如果可能,下一个双点击范围(A1)应该重置过滤器。

  Sub Test()
Dim ws As Worksheet,str作为字符串
对于工作表中的每个ws
str = Left(ws.Name,3)
如果str =Rev然后
'将过滤器设置为active.sheet
结束如果
下一个ws
结束Sub

...和我我被卡住了。
会有人引导我在这个?

解决方案

是的,这是可能的。 :)这是一个关于它应该如何工作的基本示例。

  Sub Test()
Dim ws As Worksheet, str As String

对于每个ws在工作表
str = Left(ws.Name,3)
如果UCase(str)=REV然后
与ws
'~~>删除任何过滤器
.AutoFilterMode = False

带有< YOUR RANGE>
.AutoFilter字段:=< RELEVANT FIELD>,_
Criteria1:=<你的标准>

'
'~~>其余代码
'
结束

'~~>删除任何过滤器
'.AutoFilterMode = False
结束与
结束如果
下一个ws
结束Sub

这里你可以看到Autofilter在行动:)



要调用上面的代码通过点击范围 A1 ,您可以使用 Worksheet_BeforeDoubleClick 事件。




如果不相交(目标,范围(A1))没有,那么
'
'~~>你的代码到这里
'
取消= True
如果
结束Sub

关于将范围 A1 作为ON / OFF开关响应的查询,可以使用显示为 HERE


I work with sheets named; Rev00, Rev01, Rev02 etc - among other sheets in my workbook.

It would be very helpful (in order to compare the sub-summaries of different revisions) to set the exact same multiple-filter - as set in active sheet - in only all sheets beginning with "Rev".

This action should most wanted be activated by double Click in Range("A1") or somewhere like that (I dont want button on this one).

If possible next double Click in Range("A1") should reset filters.

Sub Test()
    Dim ws As Worksheet, str As String        
    For Each ws In Worksheets            
            str = Left(ws.Name, 3)                    
                If str = "Rev" Then                        
                    ' set filter as in active.sheet                    
                End If
     Next ws
End Sub

... and I am stuck .... will anyone guide me on this?

解决方案

Yes it is possible. :) Here is a basic sample on how it should work.

Sub Test()
    Dim ws As Worksheet, str As String

    For Each ws In Worksheets
        str = Left(ws.Name, 3)
        If UCase(str) = "REV" Then
            With ws
                '~~> Remove any filters
                .AutoFilterMode = False

                With <YOUR RANGE>
                    .AutoFilter Field:=<RELEVANT FIELD>, _
                                Criteria1:=<YOUR CRITERIA>

                    '
                    '~~> Rest of the code
                    '
                End With

                '~~> Remove any filters
                '.AutoFilterMode = False
            End With
        End If
    Next ws
End Sub

Here you can see Autofilter in action :)

To call the above code by clicking Range A1, you can use the Worksheet_BeforeDoubleClick event.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        '
        '~~> Your code goes here
        '
        Cancel = True
    End If
End Sub

Regarding your query about making Range A1 respond as an ON/OFF switch, you can use a boolean variable s shown HERE

这篇关于宏/私人子:同时在几张纸上设置类似的过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆