Evita a entrada de fórmulas em todas as células de uma coluna, mas permite entrada de números inteiros

0

Estou em uma situação um pouco complicada. Existe uma planilha pública que alguns de meus colegas de trabalho são obrigados a usar em seu trabalho. Todos eles usam coletivamente durante seus turnos para rastrear informações sobre o produto. Há um problema entre alguns colegas de trabalho mais velhos que usam uma calculadora para inserir números inteiros em uma planilha por anos, e um funcionário mais novo, que gosta de inserir fórmulas para fazer as contas por ele.

Eu pessoalmente concordo com seu método de utilizar a planilha do Excel, mas é difícil ensinar truques novos a um cachorro velho, e o funcionário mais novo se recusa a deixar a planilha sozinho. O problema é que, quando ele sai do turno e esquece de mudar suas fórmulas de volta, o resto dos caras mais velhos ficam frustrados.

Eles vieram até mim para pedir que eu o bloqueasse de poder inserir fórmulas nessa coluna em particular. O problema é que não posso simplesmente proteger a planilha, pois há 5-6 usuários que precisam acessá-la 24/7. Eu também estou tentando tornar o processo mais simples para os funcionários mais antigos, não mais complicado. Existe uma maneira que eu possa simplesmente negar a entrada de fórmulas nas células de uma coluna específica sem exigir uma senha ou bloquear todas as entradas de dados?

    
por user459162 15.06.2015 / 22:19

2 respostas

0

Uma abordagem alternativa que deve satisfazer os dois lados seria adicionar uma macro before_save que simplesmente copia / cola-valoriza a coluna antes de salvar.

Qualquer pessoa que inserir fórmulas ficará feliz porque ainda poderá fazê-lo. Os velhos fogies que não conseguem lidar com a TI moderna ficarão felizes porque não precisarão sujar as mãos com fórmulas.

Melhor ainda, mude a planilha para um aplicativo da Web simples e incomode a todos!     
por 15.06.2015 / 22:51
0

Aqui está um exemplo para a coluna D ; você pode adaptá-lo a qualquer coluna. Esta macro Evento monitora as alterações feitas na coluna D . Se um usuário tentar inserir uma fórmula na coluna D , a entrada será invertida.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim D As Range, ints As Range
    Set D = Range("D:D")
    Set ints = Intersect(D, Target)
    If ints Is Nothing Then Exit Sub
    If ints.Count > 1 Then Exit Sub
    If ints.HasFormula Then
        Application.EnableEvents = False
            Application.Undo
        Application.EnableEvents = True
    End If
End Sub

A única restrição é permitir que apenas uma célula por vez seja alterada.

Por ser um código de planilha, é muito fácil de instalar e usar automaticamente:

  1. clique com o botão direito do mouse no nome da guia próximo à parte inferior da janela do Excel
  2. selecione Exibir código - isso abre uma janela do VBE
  3. cole o material e feche a janela do VBE

Se você tiver alguma dúvida, tente primeiro em uma planilha de teste.

Se você salvar a pasta de trabalho, a macro será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx

Para remover a macro:

  1. abrir as janelas do VBE como acima
  2. limpe o código
  3. feche a janela do VBE

Para saber mais sobre macros em geral, consulte:

link

e

link

Para saber mais sobre macros de eventos (código da planilha), consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 15.06.2015 / 23:03