vba - excel:带有 protected 工作表的高级过滤器

标签 vba excel

我在这张工作表中使用高级筛选器来搜索工作簿中另一个工作表中的信息。

此外,我想保护工作表,因为我在单元格上有一些人们不应该能够更改的公式,但我也有用户应该提供一些信息的单元格,然后我已经像您一样解锁了这些单元格可以看到下面:

enter image description here

问题是当我单击“过滤器”按钮时尝试运行高级过滤器时。我收到一条错误消息:

Advanced Filter can't run in Protected Sheet.

所以我将此代码关联到我的“过滤器”按钮:

Private Sub Filtrar_Click()

Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets
    wks.Unprotect "Password"
    Call LimparAntes
    wks.Protect "Password", UserInterfaceOnly:=True
Next

End Sub

LimparAntes子程序是调用高级过滤器的例程,但我仍然遇到同样的错误,所以我有疑问。代码如下:

Sub LimparAntes()
'
' LimparAntes Macro
'

'
Dim Lastrow As Long
Lastrow = Sheets("AUX").Range("A" & rows.Count).End(xlUp).Row

    Sheets("AUX").Range("A1:K" & Lastrow).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("CONSULTA").Range("D34:I35"), CopyToRange:=Sheets("CONSULTA").Range("B40:K40"), Unique:= _
        False
    Sheets("CONSULTA").Range("F37").Select

End Sub

这是正确的方法吗?我做了很多研究,但我找不到任何人与我有同样的高级过滤问题,所以我什至不知道是否有可能实现我想要的。

最佳答案

这是全部代码吗?

仅查看代码而不执行它,第一步应该是通过执行以下操作来解锁/取消保护所有工作表:

Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets
    wks.Unprotect "Password"
Next

完成后,您应该运行 LimparAntes()。然后,这将复制/过滤您需要的数据。最后你应该锁定床单。

Private Sub Filtrar_Click()

Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets
    wks.Unprotect "Password"    'Unprotect all sheets first
Next

Call LimparAntes     'Call filter sub

For Each wks In ActiveWorkbook.Worksheets
    wks.Protect "Password", UserInterfaceOnly:=True     'Re-Protect all sheets
Next

End Sub

尝试一下,看看是否可以消除错误。如果没有,我已经读到,在锁定工作表之前将自动过滤器属性设置为 True 可能会有所帮助。

关于vba - excel:带有 protected 工作表的高级过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44830886/

相关文章:

http - MSXML2.XMLHTTP 发送方法适用于早期绑定(bind),失败于后期绑定(bind)

excel - 搜索错误,填充数组并呈现类似数据透视的 View

r - 如何将 Excel 中的单元格格式(缩进)信息读入 R?

excel - 通过 Outlook 电子邮件发送 Excel 形状

excel - VBA删除事件工作表

VBA 返回#REF!粘贴值时

vba - Excel VBA设置变量以选择特定工作表中的一系列单元格

excel - 在 VBA 中将 300 个字符的字符串转换为唯一可识别的 8 个字符的字符串

excel - 查找 3 个输入的最大值 VBA

excel - 函数 optional 参数日期类型失败