Excel 如何在受保护的工作表中筛选行、隐藏/取消隐藏列?
我有一个小组协作的Excel工作表。它受密码保护 由于密码保护限制,我正在尝试编写VBA代码,以便其他用户在受保护的工作表中仍然可以筛选行、隐藏/取消隐藏列 它位于此工作簿中,如下所示:-Excel 如何在受保护的工作表中筛选行、隐藏/取消隐藏列?,excel,vba,Excel,Vba,我有一个小组协作的Excel工作表。它受密码保护 由于密码保护限制,我正在尝试编写VBA代码,以便其他用户在受保护的工作表中仍然可以筛选行、隐藏/取消隐藏列 它位于此工作簿中,如下所示:- Private Sub Workbook_Open() Dim wSheet As Worksheet For Each wSheet In Worksheets wSheet.Protect Password:="LoveisPatience", _ UserInterFaceOnly:
Private Sub Workbook_Open()
Dim wSheet As Worksheet
For Each wSheet In Worksheets
wSheet.Protect Password:="LoveisPatience", _
UserInterFaceOnly:=True
Next wSheet
With ActiveSheet
.Protect Password:="LoveisPatience", AllowFiltering:=True
.EnableSelection = xlUnlockedCells
End With
With ActiveSheet
.Protect Password:="LoveisPatience", AllowFormattingColumns:=True
.EnableSelection = xlUnlockedCells
End With
End Sub
使用上述代码,我可以隐藏以前使用“数据选项卡>组”完成的列,但我无法取消隐藏任何列
由于包含了这个“AllowFormattingColumns:”,行的“AllowFiltering”函数现在无法运行
如何使筛选行和隐藏/取消隐藏列无缝工作?以下代码适用于我:
Private Sub Workbook_Open()
Dim wSheet As Worksheet
For Each wSheet In Worksheets
wSheet.Protect Password:="password", UserInterFaceOnly:=True
Next wSheet
With ActiveSheet
.Protect Password:="password", AllowFiltering:=True, AllowFormattingColumns:=True
.EnableSelection = xlUnlockedCells
End With
问题似乎是这两种说法不一致。第二个with语句(格式化列)阻塞了第一个语句(筛选)。这有点奇怪,因为这些行本来应该是解锁的
对你有用吗
干杯我想你会在这里找到你需要的东西:。同时看看微软对你的话题有什么看法。你好,谢谢你的建议。您在上面展示的网站让我很好地理解了当Excel工作表受到保护时可以做什么。谢谢。每个工作表都有一个
保护
对象,它有许多属性,您可以修改,就像您可以修改范围
对象的每个属性一样ActiveSheet.Protect
为该工作表创建一个Protection
对象。任何工作表都不能有多个保护
对象。因此,下一个ActiveSheet.Protect
将删除现有对象并在其位置上建立另一个对象。这个过程给人的印象不是效率。更好的方法是修改现有的。或者至少删除现有的(取消保护
),以免混淆代码的无辜读者。嗨,Trib-RS25_uu,非常感谢。你的代码运行得很好。非常感谢。