小编pau*_*hax的帖子

excel:带有受保护工作表的高级过滤器

我有这张表,我使用高级过滤器来搜索工作簿中另一张表内的信息.

另外,我想要保护工作表,因为我在单元格上有一些人们不应该改变的公式,但我也有用户应该提供一些信息的单元格然后我已经解锁了这些单元格,如下所示:

在此输入图像描述

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

高级筛选器无法在受保护的工作表中运行.

所以我将此代码与我的"过滤器"按钮相关联:

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

excel vba excel-vba

6
推荐指数
1
解决办法
800
查看次数

excel:运行宏后取消选择范围

我想有一个简单的方法可以解决这个问题,但我看不清楚。

\n\n

每次我更改工作表中的任何单元格时,都会触发以下代码:

\n\n
Private Sub Worksheet_Change(ByVal Target As Range)\nIf Not Intersect(Target, Target.Worksheet.Range("A:S")) Is Nothing Then \ncopy_column\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

这段代码运行我的copy_column宏(将某些列从原始工作表复制到另一个)。第一个代码之所以发生,是因为我想在原始工作表更改时自动更新目标工作表。

\n\n
Sub copy_column()\n\nSet origem = Sheets("FUNCION\xc3\x81RIOS").Range("A4:C1040000")\nSet destino = Sheets("BASE_TOTAL").Range("A2")\norigem.Copy\ndestino.PasteSpecial Paste:=xlPasteValues\n\nSet origem_subs = Sheets("FUNCION\xc3\x81RIOS").Range("S4:S1040000")\nSet destino_subs = Sheets("BASE_TOTAL").Range("J2")\norigem_subs.Copy\ndestino_subs.PasteSpecial Paste:=xlPasteValues\n\nSet origem_ini_fer = Sheets("FUNCION\xc3\x81RIOS").Range("L4:L1040000")\nSet destino_ini_fer = Sheets("BASE_TOTAL").Range("H2")\norigem_ini_fer.Copy\ndestino_ini_fer.PasteSpecial Paste:=xlPasteValues\n\nSet origem_fim_fer = Sheets("FUNCION\xc3\x81RIOS").Range("P4:P1040000")\nSet destino_fim_fer = Sheets("BASE_TOTAL").Range("I2")\norigem_fim_fer.Copy\ndestino_fim_fer.PasteSpecial Paste:=xlPasteValues\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我的宏完成时,它会选择最后复制的列,如下所示:

\n\n

在此输入图像描述

\n\n

有什么办法可以在最后取消选择此列吗?

\n

excel vba

3
推荐指数
1
解决办法
3万
查看次数

标签 统计

excel ×2

vba ×2

excel-vba ×1