1
resposta

Por que a Macro não protege a Base Filtrada?

Na verdade, são duas dúvidas em uma.

No Passo 6, é solicitado que o aluno copie o comando para desproteger a planilha e é dito que o código para isso é:

Sheets.Unprotect

Com este código, especificamente, minha macro não rodou. Mas se eu copiar o código gerado no VBA:

ActiveSheet.Unprotect

e colar no começo das outras macros, funciona normalmente. Dúvida 1: Resolvida!

Porém, mesmo depois que eu consegui rodar a macro, aplicando essa alteração, a planilha "Base Filtrada" ficava desprotegida depois de rodar a macro "AtualizarEMostrarPainel2". Isso acontece porque a planilha selecionada no final é a "Dashboard", e não a "Base Filtrada". E isso não atende ao pedido do cliente.

Apliquei a sintaxe que usamos para selecionar planilhas, aprendida no exercício anterior, e funcionou para proteger também! Usei o código:

Sheets("Base Filtrada").Protect

na macro "AtualizarEMostrarPainel2" para proteger a "Base Filtrada" sem sair da planilha "Dashboard".

Esta solução está correta? Tem algum risco em usá-la?

Desde já agradeço e desculpem pelo textão.

1 resposta

Fala Hiberon, tudo bem?

Dependendo do contexto podemos ter algumas diferenças de sintaxe. Por exemplo: se a planilha a ser protegida é a planilha que está selecionada no momento, não precisamos especificar seu nome.

Porém, a sintaxe que você usou especifica a planilha a ser protegida o que é bom se for sempre uma planilha específica.

Esse código não tem nenhum problema de ser usado, apenas cuidado porque você não está protegendo a planilha que estiver selecionada, apenas a "Base Filtrada" sempre que rodar esse código. Neste caso não é um problema.

Outra atenção necessária é que se o usuário mudar o nome da planilha, esse comando parará de funcionar.

Abraços!