vba设置自动筛选模式可以使用AutoFilter,如果想要在指定位置加自动筛选(有的工作表筛选只需要在范围区域,不需整个工作表所有列,或者不需要首行),可以在加自动筛选前,先将单元格定位到字段标题处,然后使用Selection.AutoFilter。
使用Selection.AutoFilter要注意以下几点:
如果当前选定单元格区域为单个单元格,使用Selection.AutoFilter筛选按钮会设置在工作表首行所有列
如果当前选定单元格区域为单元格连续区域,使用Selection.AutoFilter筛选按钮会设置在当前所选单元格连续区域的首行
如果当前选定单元格区域为单元格非连续区域(多重区域),则Selection.AutoFilter会设置失败(不能对多重选择区域设置AutoFilter)
如果不想通过选定单元格来添加自动筛选,那也可以将Selection改成行、列、单元格区域来指定单元格区域添加自动筛选状态,比如以下代码:
Rows(1).AutoFilter '所有列首行设置自动筛选
Rows(2).AutoFilter '所有列第二行设置自动筛选
Rows("3:5").AutoFilter '所有列第三行设置自动筛选
columns(2).AutoFilter '第二列首行设置自动筛选
columns("E").AutoFilter '第“E”列首行设置自动筛选
columns("E:F").AutoFilter '第“E”到“F”列首行设置自动筛选
Range("E2:F5").AutoFilter '第“E”到“F”列第二行设置自动筛选
以上例子可以看到,自动筛选按钮的位置均是在所定义单元格区域的首行,也就是自动筛选按钮的位置只受所定义单元格区域的所有列和起始行影响,跟所定义单元格区域的最大行无关,如果列位置未设定则会默认设置给工作表所有已激活列。
另外还要注意的是,以上AutoFilter语句的设置在确定表格未处于自动筛选状态时可直接使用,但如果表内已存在自动筛选状态(不管你准备设置的单元格区域是否包含在内),使用AutoFilter语句则只会取消表内的自动筛选状态而不会添加,所以在表格未知是否处于自动筛选状态时,可以先用AutoFilterMode判断表格是否已处于自动筛选状态,是则先取消自动筛选状态再重新设置,比如以下代码:
Sub 设置自动筛选模式() If ActiveSheet.AutoFilterMode = True Then '为“True”则为表格处于自动筛选状态,“False”则为未处于自动筛选状态 ActiveSheet.AutoFilterMode = False '取消自动筛选模式 End If ActiveSheet.Rows(2).AutoFilter '所有列第二行设置自动筛选 End Sub
以上内容对您有帮助可以分享或转藏,避免以后找不到。想要了解更多VBA相关知识,欢迎到http://moqingyan.360doc.com我的个人图书馆查看。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。- 2024/10/14玄真神剑门·玄冥神掌
- 2024/10/14武当·九宫铁头功
- 2024/09/09国家服饰搭配师证书什么时候考 服饰搭配师证哪里可以报名
- 2024/09/09开箱验取石榴裙:华丽之美的传世之作
- 2024/09/02瑞可达: 关于向不特定对象发行可转换公司债券决议及授权有效期到期失效的公告