我正在尝试过滤一个表,并使用VBA

时间:2016-06-24 16:10:21

标签: vba excel-vba excel

我有一张桌子,我想自动制作一个过滤器,并采取一些我目前不需要的名称。示例

姓名年龄 路易斯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

1 个答案:

答案 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()"因为它让我烦恼:)