Tenho uma tabela do Excel dentro de uma planilha protegida. Estou tentando fazer os seguintes passos:
- Adicione uma nova coluna chamada "decisão"
- desbloquear as células dentro da coluna "decisão"
- Filtrar a tabela com base nos valores de outra coluna "vendido" (se uma linha apresentar erro, mantenha-a visível e oculte todas as outras)
- Aplique a validação de dados a todas as células visíveis para permitir apenas 2 valores "excluir" ou "classificar"
Tenho o seguinte código abaixo. Quando o executo, não recebo nenhum erro, mas não há validação nas células esperadas e as células não são desbloqueadas. Além disso, estou pensando que o desbloqueio provavelmente deve vir depois da filtragem, mas estou aberto a ideias.
Private Sub HandleErrors()
Dim ws, wsList As Worksheet
Dim importTable As ListObject
Dim DecisionColumn As ListColumn
Dim listRange, valRange, cell As Range
Dim listOptions As String
Set ws = Worksheets("Sales Import")
Set importTable = ws.ListObjects("Table_SalesImport")
Set wsList = ThisWorkbook.Worksheets("Lists")
Set listRange = wsList.Range("A1:A2")
Set cell = ws.Range("W2")
listOptions = "Delete, Classify"
ws.Unprotect Password:=PassW
With importTable
ws.Unprotect Password:=PassW
Set DecisionColumn = importTable.ListColumns.Add
DecisionColumn.Name = "Select Decision"
Range("W2").Select
Set valRange = Range(cell, cell.End(xlDown))
valRange.Locked = False
valRange.Locked = False
If .Parent.FilterMode Then .Range.AutoFilter
.Range.AutoFilter Field:=22, Criteria1:="Error"
With valRange.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=listOptions
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
Application.Run "Protect"
End With
End Sub