用于在多个工作表上过滤的vba代码

时间:2015-10-26 12:34:48

标签: excel-vba vba excel

我的工作簿中每个工作表中有多个工作表和相同数量的列。工作簿中添加了每日新工作表。

可以通过运行vba代码将第一张纸上的过滤数据转移到后续纸张吗?

此致

1 个答案:

答案 0 :(得分:1)

您可以使用

访问第一张工作表的过滤器和相应的过滤范围
Id

有关过滤器的所有信息都存储在AutoFilter对象的过滤器集合中

Sub showLinked(tbl As String)
'tbl is the name of an existing local linked table (SQL Server)'
    Dim db As DAO.Database, rs As DAO.Recordset
    Dim qd As QueryDef
    Set db = CurrentDb

    With db.TableDefs(tbl)
        Debug.Print .Name, .SourceTableName, .Connect
        Set qd = db.CreateQueryDef("")
        qd.Connect = .Connect
        qd.SQL = "select 1 xxx from " & .SourceTableName
        qd.ReturnsRecords = True
        Set rs = qd.OpenRecordset()     'breaks here: error 3146 - "ODBC--call failed"
        Debug.Print "test connection:", rs.Fields(0)
    End With
End Sub

此集合中的每个项目代表过滤范围中的一列。以下Statement将为您提供第一列的条件1:

You forgot an @ in your email address.

您可以在要转移的其他表格上使用获取的信息。通过范围对象(Documentation

的AutoFilter方法执行此操作

如果列与您说的相同,则可以使用地址属性轻松获得目标范围:

    Dim rng As Range
    With Sheets(1)     
      .AutoFilter
    Set rng = .AutoFilter.Range
    End With