Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Utilize essa sessão para postar e solucionar desafios de Excel, matemáticos, lógicos, etc...
  • Avatar do usuário
#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.
Você não está autorizado a ver ou baixar esse anexo.
#34267
Experimente:
Código: Selecionar todos
Sub AplicaAutoFiltro()
 With ActiveSheet
  .Unprotect "1234"
  .AutoFilterMode = False
  .Range("A2:D2").AutoFilter Field:=4, Criteria1:="Ativo"
  .Protect "1234"
 End With
End Sub
#34293
osvaldomp escreveu:Experimente:
Código: Selecionar todos
Sub 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?
#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.
#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..
#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"
#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.
#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
#52155
Quais são as colunas de interesse ?
#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 12:05, em um total de 1 vez.
#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.
#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 todos
Sub 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
#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.
#52169
Estranho, pois aqui funciona de boa.

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

=SE(MÊS(A1)<7;"1º sem&a[…]

Bom Dia Senhores. Tenho uma macro que preciso dei[…]

Free relationships without drama and obligations. […]

Girar Imagem e Zoom

Boa noite Teria alguma forma de dar um "[…]

Valeu. Muito Obrigado!!!!!!!!

Pessoal, Ao clicar no botão Copiar (Guia C[…]

Procv com serro em vba

Resolvido

Bom dia, pessoal! com a data de nascimento e data […]

Estamos migrando para uma comunidade no Discord