Bloqueia tudo no Excel, exceto valores

0

Estou tentando adicionar validação de dados a uma planilha, mas quando colo um valor, a validação de dados é removida, assim como a formatação condicional.

Eu tentei "Proteger pasta de trabalho", mas não consigo encontrar nenhuma opção que permita a edição de valores em células bloqueadas, preservando tudo o mais.

Eu também tentei cerca de cinco métodos diferentes de escrever alguns VBA para fazer isso, mas até agora nenhum deles funciona, principalmente devido a não ser capaz de salvar as propriedades antigas antes que os novos valores sejam aplicados.

Como posso bloquear a planilha ou escrever algum VBA para bloquear tudo sobre uma célula, exceto seu valor? Estou usando o Excel 2016, mas meus usuários podem não estar. Preciso de uma solução que funcione em tantas versões antigas quanto possível.

Estou ciente de que "Colar especial" colará apenas valores, mas estou enviando esta planilha aos usuários para preencher e retornar, e não confio que eles entenderão ou lembrarão de "Colar especial" sempre , resultando em nós tentando usar dados inválidos.

    
por CJ Dennis 17.07.2017 / 07:35

3 respostas

0

Outra abordagem seria essa.

Você ainda precisa do VBA para isso, mas basicamente pode descobrir se o usuário colou. Nesse caso, desfaça a pasta e cole o especial.

Você terá que gravar a macro para colar especial para ver o código do Excel.

Seu código seria algo como isto:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim lastAction As String

  ' Get the last action performed by user
  lastAction = Application.CommandBars("Standard").Controls("&Undo").List(1)

  ' Check if the last action was a paste
  If Left(lastAction, 5) = "Paste" Then

    ' Perform an undo here

    ' Do a Paste special here

  End If
End Sub

veja também link

    
por 18.07.2017 / 09:16
0

Não há uma resposta fácil para isso. Você já explorou as opções com o VBA, mas provavelmente descobriu que há muitas maneiras de colar algo em uma célula para interceptá-las com o VBA.

Existem várias discussões na Web sobre como lidar com esse cenário, mas nenhuma delas ofereceu uma solução que realmente funcionasse. Se uma célula não estiver protegida, então qualquer coisa pode ser colada nela.

A única maneira que funciona é educar seus usuários.

    
por 17.07.2017 / 08:23
0

O VBA é realmente o caminho a seguir aqui.

O que você quer fazer é gravar uma macro. Quando a gravação de macro estiver ativa, configure a proteção de dados para uma célula e pare a gravação.

Isso fornecerá o código VBA para configurar a proteção de dados da maneira que seu celular precisa ser.

Agora, crie uma macro que é executada quando uma célula é alterada. Você pode usar a célula ativa para saber em qual célula o usuário foi colado e executar a rotina de instalação para proteção de dados nessa célula para corrigi-la novamente.

Em seguida, você desejará avaliar se o que o usuário colou na célula está correto e, caso contrário, conserte-o na macro ou simplesmente limpe-o. Uma msgbox pode ser usada para notificar o usuário sobre o que fez de errado.

Claro, se você instruir seus usuários sobre o que é permitido, a chance de erros diminuirá, mas eu trabalhei em um ambiente de grande porte e sei o quão poderosa é uma boa macro contra erros bobos.

    
por 17.07.2017 / 09:44