首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一旦工作表受到保护,VBA就停止工作。

一旦工作表受到保护,VBA就停止工作。
EN

Stack Overflow用户
提问于 2022-10-14 00:20:14
回答 1查看 29关注 0票数 0

我有一张带过滤器的桌子。我编写了简单的VBA,以便当用户选择不同的选项时,VBA将选择过滤器并自动对表进行排序。它工作得很完美。然后,我隐藏、锁定和保护工作表,使其保持简单,并防止用户更改公式。但是,一旦工作表受到保护(我勾选并授予了所有操作的权限),VBA仍然无法运行。如果我换回“不受保护”,一切都会恢复正常。我被困住了,希望各位专家能给我建议。非常感谢!

简单的VBA如下:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
   If Range("BF1").Value = "Highest $" Then
        Range("A5:CK288").Sort Key1:=Range("BG5:BG288"), Order1:=xlDescending
   End If
   If Range("BF1").Value = "Nearest end" Then
        Range("A5:CK288").Sort Key1:=Range("BC5:BC288"), Order1:=xlAscending
   End If
   If Range("BF1").Value = "Customer" Then
        Range("A5:CK288").Sort Key1:=Range("BE5:BE288"), Order1:=xlDescending
   End If
   If Range("BF1").Value = "Country" Then
        Range("A5:CK288").Sort Key1:=Range("BD5:BD288"), Order1:=xlDescending
   End If
   If Target.Address = Range("BF2").Address Then
        If Range("BF2") = "All" Then
            Range("A5").AutoFilter Field:=56
        Else
            Range("A5").AutoFilter Field:=56, Criteria1:=Range("BF2").Value
        End If
   End If
   If Target.Address = Range("BF3").Address Then
        If Range("BF3") = "All" Then
            Range("A5").AutoFilter Field:=54
        Else
            Range("A3").AutoFilter Field:=54, Criteria1:=Range("BF3").Value
        End If
   End If
End Sub
EN

回答 1

Stack Overflow用户

发布于 2022-10-14 07:19:52

保护工作表时,有允许筛选器的选项。勾选“自动筛选”复选框。还可以设置单个单元格的保护。我的英文翻译可能是关闭的,但右击单元格,选择格式单元格(?),然后在“保护”选项卡上取消勾选“锁定”。请参阅此链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74063102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档