Usuário com melhor resposta
Aceitar somente números positivos ou negativos

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
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.
- Editado Jhonatan Franklin sexta-feira, 1 de agosto de 2014 16:34
- Marcado como Resposta Thaís Sakamoto segunda-feira, 4 de agosto de 2014 17:22
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.
- Editado Jhonatan Franklin sexta-feira, 1 de agosto de 2014 16:34
- Marcado como Resposta Thaís Sakamoto segunda-feira, 4 de agosto de 2014 17:22
-
-
-
-
-