我有一张桌子,我想自动制作一个过滤器,并采取一些我目前不需要的名称。示例
姓名年龄 路易斯11 卡洛斯12 jose 13
我想给我一张那张桌子的过滤器,取下卡洛斯和jose的名字。这是我的代码,但它不起作用。我得到错误应用程序已定义或遵循已定义的错误
'Naming a range
Sub sbCreatTable()
'Create Table in Excel VBA
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A5:g35"), , xlYes).Name = "myTable1"
Call sbFilterTable
End Sub
Sub sbFilterTable()
ActiveWorkbook.Sheets("0000_UK").ListObjects("myTable1").Range.AutoFilter field:=1, Criteria1:="france"
End Sub
答案 0 :(得分:0)
这应该有效:
Option Explicit
Sub sbCreateTable()
Dim ws As Worksheet
Dim tbl As ListObject
Set ws = ActiveSheet
Set tbl = ws.ListObjects.Add(xlSrcRange, Range("F1:G4"), , xlYes) '"A5:g35"), , xlYes)
tbl.Name = "myTable1"
sbFilterTable tbl
End Sub
Sub sbFilterTable(tbl As ListObject)
tbl.Range.AutoFilter Field:=1, Criteria1:="Luis"
End Sub
假设您的表位于ActiveSheet
。如果您的表始终在Sheets("0000_UK")
,则只需使用Set ws = Sheets("0000_UK")
。
注意:我更改了" sbCreatTable()"到" sbCreateTable()"因为它让我烦恼:)