I have this sheet where I use Advanced Filter to search for informations inside another sheet in my workbook.
In addition, I want to protect sheet because I have some formulas on cells that people shouldn't be able to change but I also have cells that the user should come with some information then I've already unlocked these cells as you can see below:
The problem is when I try to run my Advanced Filter when I click my "Filter" button. I get an error message that says:
Advanced Filter can't run in Protected Sheet.
So I associated this code to my "Filter" button:
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
The LimparAntes sub is the routine that calls Advanced Filter, but I still get the same mistake so I'm in doubt. The code is below:
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
Is that the correct way to do that? I've made a lot of research but I couldn't find anyone with the same problem with Advanced Filter as I so I don't even know if it's possible to achieve what I want.
Is this all of the code?
Just from looking at the code without executing it, the first steps should be to unlock/unprotect ALL sheets by doing:
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect "Password"
Next
Then upon completion, you should run LimparAntes(). That will then copy/filter the data you need. And then finally you should lock the sheets.
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
Try this and see if it removes the error. If not, I have read that setting the autofilter property to True prior to locking the sheet may be beneficial.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With