none
Aceitar somente números positivos ou negativos RRS feed

  • Pergunta

  • Bom dia, caros experts.

    Venho mais uma vez, pedir ajuda.

    Preciso de uma macro que no campo de origem deverão aceitar somente valores positivos. No caso de tentativa de lançar um valor negativo, deverá aparecer a mensagem “Somente valores positivos na origem”.

    E no campo de destino deverão aceitar somente valores negativos. No caso de tentativa de lançar um valor positivo, deverá aparecer a mensagem “Somente valores negativos no destino”.

    Eu estou tentando algo com o código abaixo.

    Sub VariasCondições()

    vlTeste = ActiveSheet.[K19:V19]

    Select Case vlTeste
        Case Is < 0: Resp1 = "Somente números negativos"
        Case Is > 0: Resp2 = "Somente números positivos"
    End Select

    MsgBox "O valor em Origem é " & Resp1
    MsgBox "O valor em Destino é " & Resp2

    End Sub

    Mas gostaria que ele ficasse automático. Assim que o usuário inserir um número errado na origem ou destino já aparecer o popup com a mensagem. MsgBox "O valor em Origem é " & Resp1
    MsgBox "O valor em Destino é " & Resp2"

    E também as linhas de origem e destino são diferentes, então estou me confundindo com "vlTeste = ActiveSheet.[K19:V19]"

    Alguém pode me auxiliar? rs >.<

    Obrigada

    sexta-feira, 1 de agosto de 2014 14:20

Respostas

  • Boa Tarde Thaís,

    Talvez possa ser algo como o exemplo abaixo.

    Private Sub Worksheet_Change(ByVal Target As Range)


    ' valida se não é vazio
    If Range(Target.Address).Value <> "" Then

    ' valida o intervalo de entrada dos dados
    If Target.Row = 19 And Target.Column >= 11 And Target.Column <= 22 Then

        ' testa se o valor é negativo
        If Target.Value < 0 Then
            MsgBox ("O valor em Origem é Somente números positivos")
            Range(Target.Address) = ""
        End If

    ' valida o intervalo de entrada dos dados
    ElseIf Target.Row = 37 And Target.Column >= 11 And Target.Column <= 22 Then

        ' testa se o valor é positivo
        If Target.Value >= 0 Then
            MsgBox ("O valor em Destino é Somente números negativos")
            Range(Target.Address) = ""
        End If
        
    End If


    End If


    End Sub

    Abraço.




    sexta-feira, 1 de agosto de 2014 16:29

Todas as Respostas

  • Boa Tarde Thaís,

    Talvez possa ser algo como o exemplo abaixo.

    Private Sub Worksheet_Change(ByVal Target As Range)


    ' valida se não é vazio
    If Range(Target.Address).Value <> "" Then

    ' valida o intervalo de entrada dos dados
    If Target.Row = 19 And Target.Column >= 11 And Target.Column <= 22 Then

        ' testa se o valor é negativo
        If Target.Value < 0 Then
            MsgBox ("O valor em Origem é Somente números positivos")
            Range(Target.Address) = ""
        End If

    ' valida o intervalo de entrada dos dados
    ElseIf Target.Row = 37 And Target.Column >= 11 And Target.Column <= 22 Then

        ' testa se o valor é positivo
        If Target.Value >= 0 Then
            MsgBox ("O valor em Destino é Somente números negativos")
            Range(Target.Address) = ""
        End If
        
    End If


    End If


    End Sub

    Abraço.




    sexta-feira, 1 de agosto de 2014 16:29
  • Olá Jhonatan,

     Eu verifiquei o código. 

    Porém não estou conseguindo que a macro mostre as mensagens como popup.

    Obrigada

    sexta-feira, 1 de agosto de 2014 17:51
  • Olá Thais! Aquele seu suplemento, além da formatação condicional, também não te permite trabalhar com validação de dados? Pois seria muito simples fazer isso na validação de dados.

    Rafael Kamimura

    sexta-feira, 1 de agosto de 2014 19:15
  • Boa Tarde Thaís,

    Insira o código na sessão de eventos da planilha que deseja realizar essa validação.

    Assim, sempre que alterar um valor na planilha, será validado se é aquele intervalo, sendo será executado a ação.

    sexta-feira, 1 de agosto de 2014 20:33
  • Oi Rafael,

     Permite trabalhar com validação de dados sim.

    Obrigada

    segunda-feira, 4 de agosto de 2014 13:27
  • Que bom, pois é bem simples fazer isso por lá. Se tiver dificuldades de fazer avise.

    Abs!


    Rafael Kamimura

    segunda-feira, 4 de agosto de 2014 13:34