VBA:对现有的自动筛选器范围进行筛选和排序

时间:2019-02-27 17:29:31

标签: excel vba

说我有一个Excel工作表,其中包含有关我的音乐收藏的信息。我编写了2个宏:第一个按艺术家,专辑和曲目号对列表进行排序,第二个按流派和歌曲名称对列表进行排序。宏如下所示:

ThisWorkbook.Sheets("Music").ShowAllData
With ThisWorkbook.Sheets("Music").AutoFilter.Sort
    .SortFields.Clear
    .SortFields.Add Range("A:A"), xlSortOnValues, xlAscending, , xlSortNormal
    .SortFields.Add Range("B:B"), xlSortOnValues, xlAscending, , xlSortNormal
    .SortFields.Add Range("C:C"), xlSortOnValues, xlAscending, , xlSortNormal
    .Header = xlYes
    .MatchCase = False
    .SortMethod = xlPinYin
    .Apply
End With

我想添加一条过滤特定类型的行,如下所示:

ThisWorkbook.Sheets("Music").AutoFilter Field:=5, Criteria1:="Rock"

此行不起作用,因为Worksheet.AutoFilter方法不接受与Range.Autofilter方法相同的参数。有没有人知道解决此问题的方法,而不涉及关闭过滤器,弄清楚数据范围,应用新的过滤器然后进行排序?

1 个答案:

答案 0 :(得分:1)

您可以使用任何单元格范围,甚至可以使用没有已定义的自动过滤器范围的单元格。

 $IdArticle=$_POST['YourName'];
 $sql = "SELECT * FROM newsarticle WHERE articleId =".$IdArticle;