EXCEL VBA实现工作簿中每个sheet的首行添加数据筛选和窗格冻结

发布时间 2023-08-10 13:06:49作者: 蓝光水母

为什么发这篇博客嘞,因为昨天在搞数据模板校验的时候,测试前辈姐姐让我们检查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

目前的操作只能实现一次性操作,也就是保存了宏之后,关闭再打开,宏就会消失,就要再添加一下,因为满足了目前的需求,就没再深究了,要是有更优解希望可以交流交流

希望可以帮助到有同样困惑的小伙伴