Tenha em mente que em varios Se's deve-se atentar a chamada precedência de informação
Assim o primeiro Se
If Parar = "" Or Preço = "" Or Objetivo = "" Then
Range("E2").Value = ""
End If
"limpa" o conteudo da celula E2; já o segundo Se
If (Compra = "COMPRA" And Preço >= Objetivo") Then
Range("E2").Value = "Concluído"
End If
Inclui o texto na celula E2, lembrando que mesmo Preço e/ou Objetivo forem "", satisfaz a equação.
Assim, se entendi corretamente o que deseja/espera teste sua rotina conforme abaixo
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
'Dim wsAtiva As Worksheet
Dim Parar, Preço, Objetivo
Dim TipoOp As String
'Set wsAtiva = ThisWorkbook.ActiveSheet
TipoOp = Range("A2").Value
Parar = Range("B2").Value
Preço = Range("C2").Value
Objetivo = Range("D2").Value
If Parar = "" Or Preço = "" Or Objetivo = "" Then
Range("E2").Value = ""
End If
If TipoOp = "COMPRA" Then
If Preço <> "" And Objetivo <> "" Then
If (Preço >= Objetivo) Then Range("E2").Value = "Concluído"
ElseIf Preço <> "" And Parar <> "" Then
If (Preço <= Parar) Then Range("E2").Value = "Stopado"
ElseIf TipoOp = "VENDA" Then
If Preço <> "" And Parar <> "" Then
If (Preço <= Parar) Then Range("E2").Value = "Concluído"
ElseIf Preço <> "" And Objetivo <> "" Then
If (Preço >= Objetivo) Then Range("E2").Value = "Stopado"
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 14/04/2016 1:53 pm