Utilize essa sessão para postar e solucionar desafios de Excel, matemáticos, lógicos, etc...
Avatar do usuário
Por JairJunior2 25 Jun 2018 às 16:51
Membro 1 Estrela
Mensagens: 36
Reputação: 3
#34242
Boa tarde!

Preciso de um código VBA que faça a seguinte Ordem:

Desbloquear a planilha com a senha "1234"
Fazer o filtro de status “ativos”
Bloquear a planilha com a senha "1234"

Duvidas estou à disposição.
Apenas usuários registrados podem ver ou baixar anexos.
Por babdallas 25 Jun 2018 às 17:14
Membro 5 Estrelas
Mensagens: 2279
Reputação: 992
#34244
Veja se esta dica do Tomás Vasquez ajuda.

http://www.tomasvasquez.com.br/forum/viewtopic.php?t=268
Avatar do usuário
Por JairJunior2 25 Jun 2018 às 21:01
Membro 1 Estrela
Mensagens: 36
Reputação: 3
#34264
babdallas escreveu:Veja se esta dica do Tomás Vasquez ajuda.

http://www.tomasvasquez.com.br/forum/viewtopic.php?t=268

Eu usei o ActiveSheet.unprotect e ActiveSheet.protect mas na hora de executar da erro ai eu não entendi o que foi o erro :?:
Por osvaldomp 25 Jun 2018 às 21:33
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#34267
Experimente:

Código: Selecionar todosSub AplicaAutoFiltro()
 With ActiveSheet
  .Unprotect "1234"
  .AutoFilterMode = False
  .Range("A2:D2").AutoFilter Field:=4, Criteria1:="Ativo"
  .Protect "1234"
 End With
End Sub
Avatar do usuário
Por JairJunior2 26 Jun 2018 às 18:53
Membro 1 Estrela
Mensagens: 36
Reputação: 3
#34293
osvaldomp escreveu:Experimente:

Código: Selecionar todosSub AplicaAutoFiltro()
 With ActiveSheet
  .Unprotect "1234"
  .AutoFilterMode = False
  .Range("A2:D2").AutoFilter Field:=4, Criteria1:="Ativo"
  .Protect "1234"
 End With
End Sub


A idéia é esta mesmo, so que preciso que a linha do filtro fique liberada para filtrar depois da macro ser executada, o que devo fazer?
Por osvaldomp 26 Jun 2018 às 19:20
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#34294
JairJunior2 escreveu:... so que preciso que a linha do filtro fique liberada para filtrar depois da macro ser executada...
Você não informou isso antes :(




Acrescente a parte em vermelho ao código que passei conforme abaixo.
.Protect "1234", True, True, True , AllowFiltering:=True

obs. da ajuda do VBA ~~~> A propriedade AllowFiltering permite ao usuário alterar os critérios de filtro em um AutoFiltro existente. O usuário não pode criar ou remover um AutoFiltro em uma planilha protegida.
Lembrando também que as células envolvidas no Auto Filtro devem estar desbloqueadas.
Avatar do usuário
Por JairJunior2 26 Jun 2018 às 22:23
Membro 1 Estrela
Mensagens: 36
Reputação: 3
#34302
osvaldomp escreveu:
JairJunior2 escreveu:... so que preciso que a linha do filtro fique liberada para filtrar depois da macro ser executada...
Você não informou isso antes :(




Acrescente a parte em vermelho ao código que passei conforme abaixo.
.Protect "1234", True, True, True , AllowFiltering:=True

obs. da ajuda do VBA ~~~> A propriedade AllowFiltering permite ao usuário alterar os critérios de filtro em um AutoFiltro existente. O usuário não pode criar ou remover um AutoFiltro em uma planilha protegida.
Lembrando também que as células envolvidas no Auto Filtro devem estar desbloqueadas.



Perfeito amigo!! Muito Obrigado e desculpa por não informar antes..
Por babdallas 27 Jun 2018 às 10:06
Membro 5 Estrelas
Mensagens: 2279
Reputação: 992
#34309
No link que eu havia passado, o Tomás Vasquez passou as propriedades do método Protect da planilha, sendo um deles este de permitir fazer autofiltro.

Aos administradores do fórum, sugiro mudar o título deste tópico para: "Manter Autofiltro ativo na planilha após esta ser bloqueada via VBA"
Por rsaverio 05 Fev 2020 às 11:25
Membro Novato
Mensagens: 7
Reputação: 0
#52149
boa tarde, estou com uma dúvida no Excel 2013, procurei e não consegui resolver, tenho um botão na minha planilha que aciona uma macro, esta macro executa o botão (Atualizar tudo) na aba de Dados, ela chama uma SELECT no meu banco de dados SQL, onde passo 2 parâmetros pra ela, esses parâmetros são duas colunas na minha planilha no Excel. Preciso deixar essa planilha bloqueada porem os 2 campos de parâmetros desbloqueados para que o usuário possa alterá-los, com isso, que ela se execute lendo esses parâmetros quando clicar no botão da macro... Testei alguns comandos no VBA pra desbloquear e depois bloquear novamente mas nada deu certo, ele desbloqueia mas quando vai bloquear novamente preciso que os dois campos de parâmetros continuem desbloqueados e o resto da planilha bloqueado...

O que falta no meu código

Sub Executar()

'Desbloqueia planilha
Sheets("AV-GERIBA").Select
ActiveSheet.Unprotect Password:="MASTER"

' Executar Macro
ActiveWorkbook.RefreshAll

'Bloqueia Planilha
Sheets("AV-GERIBA").Select
ActiveSheet.Protect Password:="MASTER"

End Sub

Desta maneira continua falando que a planilha que estou tentando alterar esta protegida, se eu retiro o as linhas do Bloqueio funciona, porém a planilha fica desprotegida.
Por osvaldomp 05 Fev 2020 às 12:52
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#52152
1. desproteja a planilha e selecione as duas colunas que precisam ficar desbloqueadas
2. clique com o direito sobre qualquer parte da seleção
3. Formatar células / Proteção / desmarque Bloqueadas
4. rode o seu código
Por rsaverio 05 Fev 2020 às 12:56
Membro Novato
Mensagens: 7
Reputação: 0
#52153
Obrigado pelo retorno, sei desse procedimento que falou, mas quero que ele seja feito pelo VBA tudo em tempo de execução da macro, junto do Desbloqueio e Bloqueio que estou pedindo pro comando fazer.
Por osvaldomp 05 Fev 2020 às 13:09
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#52155
Quais são as colunas de interesse ?
Por osvaldomp 05 Fev 2020 às 13:39
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#52159
Antes você mencionou duas colunas, porém agora você informa que são duas células, C1 e C2. ;) :?:

O que devo considerar ?

Ainda, se C1 e C2 devem permanecer sempre desbloqueadas para a inserção manual de dados, não vejo sentido em atribuir ao código VBA a tarefa de desbloquear células que já estarão desbloqueadas.
Editado pela última vez por osvaldomp em 05 Fev 2020 às 14:05, em um total de 1 vez.
Por rsaverio 05 Fev 2020 às 15:59
Membro Novato
Mensagens: 7
Reputação: 0
#52164
Então, vc não entendeu a dinâmica, imagina um programa que as únicas coisas que vc pode acessar são dois campos de data (ANO e MÊS) que é o caso das minhas duas células, após preencher o campo vai clicar no botão da macro e ler os resultados que traz em uma tabela, praticamente toda planilha é bloqueada a não ser as duas células do período que são elas o parâmetros de entrada da minha pesquisa no Banco SQL... por isso ao clicar na macro tenho que via comando VBA desbloquear a planilha executar as macro com os parâmetros de entrada informado nas minhas duas células, a macro vai trazer as informações em forma de tabela, e em seguida tenho que bloquear novamente a planilha deixando a penas as células de parâmetro desbloqueadas para uma próxima pesquisa, é isso.
Por osvaldomp 05 Fev 2020 às 17:00
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#52165
A sua explicação reforçou a minha convicção de que não faz sentido seguidamente desbloquear o que já está desbloqueado , tendo em vista que uma vez desbloqueadas manualmente as células permanecerão desbloqueadas mesmo que a planilha seja depois desprotegida/protegida múltiplas vezes, mas .... segue uma sugestão para o solicitado.
Acrescente ao seu código a linha em vermelho, conforme abaixo.

'Bloqueia Planilha
Sheets("AV-GERIBA").Select
[C1:C2].Locked = False

Se você quiser racionalizar o seu código segue uma sugestão abaixo, já com o comando que irá seguidamente desbloquear o que já estará desbloqueado.
Código: Selecionar todosSub ExecutarV2()
 'Desbloqueia planilha
 With Sheets("AV-GERIBA")
 .Unprotect Password:="MASTER"
 ' Executar Macro
 ActiveWorkbook.RefreshAll
 'Bloqueia Planilha
 .[C1:C2].Locked = False
 .Protect Password:="MASTER"
 End With
End Sub
Por rsaverio 05 Fev 2020 às 18:35
Membro Novato
Mensagens: 7
Reputação: 0
#52168
Valei obrigado... seguinte o comando quando ele volta a bloquear a tabela

.Protect Password:="MASTER"

vem uma mensagem na tela do Excel (A célula ou gráfico que vc esta tentando alterar está em uma planilha protegida. Para fazer alteração, clieque em Desbloquear planilha na guia revisão (você pode precisar de uma senha))

se eu tiro o comando passa e executa porém claro a planilha fica desbloqueada.
Por osvaldomp 05 Fev 2020 às 19:29
Membro 5 Estrelas
Mensagens: 1591
Reputação: 786
#52169
Estranho, pois aqui funciona de boa.

Disponibilize uma amostra do seu arquivo Excel com o código que está apresentando problema instalado.