EXCEL VBA实现工作簿中每个sheet的首行添加数据筛选和窗格冻结
为什么发这篇博客嘞,因为昨天在搞数据模板校验的时候,测试前辈姐姐让我们检查excel模板中的每个sheet的第一行都要设置数据筛选和窗格冻结,为了便于同事们之后更简易的工作吧
我起初也是一个一个sheet的看,有遗漏的手动补上,数量一多,我就感觉像机器一样,于是懒驱使着我,想着有没有自动化的操作可以实现
我于是上网搜索,找到了一个叫VBA的excel开发工具
我现在浅薄的理解来解释,这东西就是excel中的代码编译器,可以通过在宏中设置代码,然后执行宏,来完成想要的操作
具体让我解释vba和宏我也解释不完善,所以还是引大佬的链接吧Excel VBA宏
具体操作就是要在excel中开启开发工具,开启宏,excel文件后缀就会变为xlsx,然后使用ALT+F11快捷键进去vba开发界面,在目标工作簿中插入模块,放入代码,保存,关闭界面,在开发工具---宏中,选中保存好的函数,执行就完事了
1.开启开发工具
2.开启宏
3.添加模块
4. 添加代码
5. 保存
会弹出这东西,点是就行不用管
6.关闭VBA界面
7.执行宏
然后点执行就完了
最后附上操作代码:
Sub AddFilterToFirstRowIfNeeded()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.Activate
' 检查是否已有数据筛选
If Not ws.AutoFilterMode Then
' 如果没有数据筛选,则添加数据筛选
ws.Rows(1).AutoFilter
Else
' 如果已有数据筛选,则进行两次数据筛选操作
ws.Rows(1).AutoFilter
ws.Rows(1).AutoFilter
End If
' 冻结首行窗格
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Next ws
End Sub
目前的操作只能实现一次性操作,也就是保存了宏之后,关闭再打开,宏就会消失,就要再添加一下,因为满足了目前的需求,就没再深究了,要是有更优解希望可以交流交流
希望可以帮助到有同样困惑的小伙伴