Mac版Excel VBA启用AutoFilter时1004报错的解决方案
解决Mac版Excel VBA设置自动筛选+工作表保护的1004错误
你的代码报错是因为Mac版Excel的VBA不允许对未激活工作表的单元格执行Select操作,而且完全没必要用Select来开启自动筛选,直接操作单元格范围的AutoFilter属性就行。
修正后的代码如下:
For Each ws In ThisWorkbook.Worksheets ' 直接给表头行开启自动筛选,这里用第一行,可根据实际表头范围调整 ws.Rows(1).AutoFilter ' 设置工作表保护,替换为你的实际密码 ws.Protect "password" Next ws
补充说明:
- 如果你的表头是特定单元格范围(比如A1:C1),可以改成
ws.Range("A1:C1").AutoFilter - 去掉Select和Selection的操作,不仅解决Mac版兼容性问题,还能提升代码执行效率
- 若要确保自动筛选处于开启状态(避免重复执行导致切换状态),可添加判断:
If Not ws.AutoFilterMode Then ws.Rows(1).AutoFilter End If
内容的提问来源于stack exchange,提问作者Anna Glover
相关产品推荐
相关产品推荐

