Notifications
Clear all

BURLANDO A VALIDAÇÃO

12 Posts
3 Usuários
0 Reactions
1,330 Visualizações
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Olá, boa tarde!

Gostaria de criar uma validação diferente em uma planilha. A regra consiste em não permitir os operadores + = / *, ou seja evitar que se faça uma operação na célula.

Aproveitando o momento, após alguns testes, verifiquei que é possível burlar qualquer validação simplesmente colando qualquer valor na célula ao invé de digitar. Neste caso é possível impedir o colar?

Obrigado

 
Postado : 28/01/2015 2:53 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Não entendi essa parte de não permitir operadores.

Fiz um teste rápido aqui, e não consegui burlar a validação de dados usando um desses operadores.

Poderia incluir um modelo da planilha com a validação que está usando?

Sobre impedir o colar, até onde sei, somente com VBA.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 28/01/2015 3:08 pm
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Explicando melhor:

A validação restringe os dados que são inseridos na célula. Em uma coluna que só deve receber valores, a validação deve impedir digitar os operadores. Ocorre que alguns usuários ao invez de digitar o valor 1000, digitam uma fórmula onde o resultado é 1000. O que desejo é impedir a operação. Como as fórmulas começam com o =, acrescentei os demais operadores. Resumindo, a célula não deve aceitar os operadores.

 
Postado : 28/01/2015 3:58 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não tem como impedir a colagem de valores sobre uma célula com validação.
O valor colado ficará lá e a lista de validação tb.

Qto a impedir a inserção de fórmulas, não tem como. Vc vai inserir uma fórmula que resulte num valor da lista, até aí td bem. Mas se vc mudar o valor de uma célula referenciada por esssa fórmula, o resultado será calculado e a validação não impedirá o ocorrido.

Impedir a inserção de fórmulas e bem como a colagem indevida (com ou sem fórmulas) terá de ser feito via VBA, só que seu arquivo virará um xlsm e para isso funcionar as pessoas terão que habilitar as macros, ou seja, se não habilitarem, vão continuar detonando os dados da sua planilha.....

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/01/2015 4:21 pm
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Ok, obrigado. Continuarei minha busca.

 
Postado : 28/01/2015 4:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

se quiser continuar, faça isso, só adiamto, não vai encontrar..

vc está a fim de colocar VBA no seu arquivo? como eu disse, só é possível com VBA... e posso escrever o código pra vc se quiser...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/01/2015 5:11 pm
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Ok. Pode-se usar o VBA. Agora preciso da condição no código para especificar intervalos distintos, tipo:

A10:A250 ou B10:B250 ou C10:C250

Preciso verificar várias colunas em intervalos distintos...

Obrigado.

 
Postado : 28/01/2015 5:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ok vamos lá...
Eu vou escrever o código para o evento change da planilha, assim ele rodará sempre que qquer alteração for feita em qquer célula da planilha.

Dentro do código, vou validar se cada célula alterada está dentro do intervalo que deve ser validado, vou deixar simples de entender para vc inserir esses multiplos intervalos...

Daí vou com VBA impedir que o primeiro caractere do que for digitado seja igual a =, -, +, * ou /. Isso é a primeira parte.

Em seguida, precisamos impedir que algo diferente da lista seja inserido via Colar ... Para isso, vou precisar saber qual o endereço de origem da validação tipo lista.... vou indicar no código aonde colocar esse endereço, mas seria legal vc informar...

Que mais ? ok, responde aí que já to fazendo aqui .... tenho um outro código pra fazer pra um amigo, e dps pulo pro seu !

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/01/2015 5:49 pm
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Acho que voce resumiu tudo. Não existe uma lista a ser inserida. A verificação sos operadores é a que voce descreveu.

 
Postado : 28/01/2015 6:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom, se não tem lista, aquela lista suspensa, então não tem validação para o conteúdo da célula, só para impedir a inserção de fórmula...

Segue o código que deve ser colocado na folha de código da planilha:
- no Excel, tecle Alt+F11
- no VBE, tecle Ctrl+R
- encontre seu arquivo e abra a sua estrutura
- encontra a planilha onde quer que isso aconteça, dê duploclique para ver o código dela e cole todo o código abaixo

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Planilha    As Excel.Worksheet
Dim Intervalo   As Excel.Range
Dim Celula      As Excel.Range

    Set Planilha = Target.Parent                                                                        'Define a planilha sendo alterada
    With Planilha
        Set Intervalo = Application.Union(.Range("A10:A250"), .Range("B10:B250"), .Range("C10:C250"))   'Define o intervalo a ser validado para impedi fórmulas
    End With

    For Each Celula In Target.Cells                                                                     'começa varredura de todas células alteradas (com Enter e com Ctrl+Enter)

        If Not Application.Intersect(Celula, Intervalo) Is Nothing Then                                 'verifica se a célula está no intervalo definido acima
        
            With Celula
                If VBA.Len(.Formula) > 0 Then                                                           'verifica se a célula tem fórmula
    
                    Select Case VBA.Left(.Formula, 1)                                                   'guarda o primeiro caractere da fórmula em memória
                        Case "=", "+", "-"                                                              'testa o caractere guardado contra as três opções
                            Application.Undo                                                            'Dispara o Ctrl+Z, Desfazer
                            Exit For                                                                    'Sai do loop, pois já desfez todas as alterações
                    End Select
    
                End If
            End With
            
        End If

    Next Celula
    
    Set Intervalo = Nothing                                                                             'limpa memória
    Set Planilha = Nothing                                                                              'limpa memória

End Sub

Segue o modelo com o código implementado e funcionando...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/01/2015 7:48 pm
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Sensacional...Testei aqui e ficou muito bom. Parabéns e muito obrigado....

 
Postado : 28/01/2015 8:09 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ótimo.. só uma coisa, nunca esqueça de clicar na mãozinha, além de marcar como resolvido...

Abs,

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/01/2015 9:58 pm