Protege o conteúdo de certas células sem proteger a planilha

0

Temos uma pasta de trabalho do Excel 2016 com várias guias, cada guia é dedicada a uma pessoa de vendas específica. Cada salespeep, logins de um formulário e sua (somente sua) planilha são desbloqueados e permitem a edição.

Uma tabela está presente mostrando seus dados passados. Ele tem permissão para atualizar ou alterar a maioria de seus dados na tabela. Ele atualiza células específicas, salva e fecha a pasta de trabalho. o processo de fechamento da wb, retransmite sua folha. Antes de sair, ele pode consultar outras planilhas de vendas, mas não pode editá-las porque elas estão bloqueadas.

Agora a massagem. Em cada uma das folhas de vendas, algumas colunas (as mesmas para todos os peeps) contêm dados inseridos por um administrador. Esses dados devem ser vistos pelas vendas, mas não devem ser alterados.

Quaisquer pensamentos sobre como proteger determinadas colunas da alteração de conteúdo existente em uma planilha desprotegida.

    
por Mark McDonald 17.06.2016 / 14:48

2 respostas

0

Sem ver o código VBA, é difícil determinar como ocorre o bloqueio / desbloqueio. Suponho que isso seja feito definindo o atributo locked para uma célula e usando o recurso de proteção e desproteção da planilha.

O que você precisa fazer é selecionar todas as vendas permitidas para edição e criar um intervalo personalizado para elas. Não tenho o Excel à mão, mas acredito que seja Data > Define Custom Range No mesmo local, você pode selecionar um intervalo, que selecionará automaticamente as células no Excel.

Como alternativa a trabalhar com intervalos personalizados, você pode selecionar as colunas necessárias, já que os dados do administrador não estão na mesma coluna. Isso permitiria que um activesheet.range("K:L").select fosse possível.

No código do VBA, depois de desbloquear a planilha, é necessário selecionar esse intervalo e alterar a configuração de locked para essas células e, em seguida, proteger a planilha novamente. O inverso tem que ser feito ao sair (desproteger, definir tudo bloqueado, proteger).

Para descobrir o código VBA adequado, execute a ação manualmente durante a gravação em uma macro e copie o código.

    
por 17.06.2016 / 15:14
0

LPChip me colocou no caminho certo e eu agradeço muito. O processo que usei é o seguinte:

  1. na folha de pessoa de vendas, defina lock attr para toda a planilha como falsa
  2. na tabela para o vendedor, defina o bloqueio attr para a tabela completa como verdadeiro
  3. Criamos um intervalo personalizado, como sugerido pelo LPChip, de todas as colunas que não pudemos ser editadas por ninguém. Fiz isso manualmente e atribuí um nome de intervalo (LockedColumns).
  4. protegeu a folha esta é a condição inicial para esta planilha e todas as outras planilhas de vendas.

  5. A pessoa de vendas efetua logon e com as credenciais corretas, é levada à sua planilha, onde o seguinte ocorre no código vba atrás da cena:

    • Selecionamos a tabela e definimos o bloqueio attr para falso
    • Nós selecionamos o Range. ("LockedColumns"). selecione e defina o atributo lock para true
    • Protegemos a planilha.

Isso permite que o departamento de vendas autorizado insira dados nas células permitidas e impede que alterem dados nas células nas quais não queremos alterações. O vendedor pode consultar outras guias de vendas, mas não modificar. Quando o peep de vendas faz logoff ou a pasta de trabalho é fechada, nós capturamos antes do fechamento e no código do vba, 1. selecionamos a tabela completa novamente, definimos o attr do bloqueio como true e depois protegemos a planilha. Nós salvamos e, em seguida, redirecionamos para a guia de menu para o próximo usuário.

Eu estava perplexo e o LP abriu meus olhos. Obrigado novamente.

    
por 17.06.2016 / 20:55