Página 1 de 1

Função para manter valor máximo alcançado na célula

Enviado: 14 Out 2020 às 15:15
por fabioprade
Boa tarde,

Em D5 o valor e variável, consequentemente E5 também, é possível manter congelado o valor máximo alcançado por E5 na célula mesmo que o valor de D5 diminua?
pode ser em outra célula, como for, se for possível.

Obrigado

Re: Função para manter valor máximo alcançado na célula

Enviado: 14 Out 2020 às 17:18
por osvaldomp
fabioprade escreveu:Em D5 o valor e variável, ...
Por acaso ainda é aquele assunto em que o valor de D5 é inserido via link DDE ?

Experimente os códigos abaixo. Só é possível um código por vez.
O primeiro código utiliza a própria célula E5 para manter o maior valor atingido por D5 * 0,95 e o segundo utiliza a célula G5, neste caso mantenha a fórmula em E5 (que, a propósito, pode ser simplificada de =SOMA(D5*195%)-D5 para =D5*0,95
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 If [E5] < [D5] * 0.95 Then [E5] = [D5] * 0.95
End Sub
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 If [G5] < [E5] Then [G5] = [D5] * 0.95
End Sub

Re: Função para manter valor máximo alcançado na célula

Enviado: 14 Out 2020 às 20:04
por fabioprade
Boa noite Osvaldo,

Não é, mas pensando agora pode ser usado para a aquela questão também?

A questão aqui é a seguinte, Stop Loss na planilha para ser controlado manualmente, atingindo a máxima e a cotação caindo, acompanho pelo Excel, tomo a decisão de venda ou não...

vou testar os códigos...

Re: Função para manter valor máximo alcançado na célula

Enviado: 14 Out 2020 às 20:30
por fabioprade
Osvaldo,

seguinte, em D5 tenho 20,00 e em E5 19,00 ( =D5*0,95 ) , toda vez que D5 subir ok, E5 acompanha a subida, mas caso o valor de D5 venha a cair, exemplo, D5 19,50, E5 manteria a máxima alcançada, ficaria nos 19,00, isso é possível.

Obrigado

Re: Função para manter valor máximo alcançado na célula

Enviado: 14 Out 2020 às 20:49
por osvaldomp
Sim, senhor. É exatamente assim que os códigos funcionam.

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 07:26
por fabioprade
Bom dia Osvaldo,

exatamente isso, só não consegui com o primeiro código, devo estar fazendo alguma coisa errada.

Muito obrigado pela ajuda


Fabio

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 08:07
por osvaldomp
Olá, Fabio.

É provável que a inserção do link em D5 não esteja disparando o evento WS_Calculate.
Então, para forçar o disparo coloque em uma célula vazia =D5, assim o código será disparado a cada novo valor recebido do link.

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 17:20
por fabioprade
Agora foi,

Osvaldo, na planilha completa, quando abro a planilha ele logo mostra a janela de erro em tempo de execução 13, Tipos incompatíveis, alguma coisa a ser corrigido? Pesquisei antes de te perguntar mas não consegui compreender o tratamento do erro...
Esqueci de mencionar no exemplo que são varias linhas, tenho que repetir o código ou tem como estende-la a varias linhas?

Obrigado

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 18:04
por osvaldomp
fabioprade escreveu: ... alguma coisa a ser corrigido?
Somente com base nas informações que você passou fica difícil avaliar a razão do erro. Disponibilize uma amostra do arquivo na forma em que ocorre o erro.

Esqueci de mencionar no exemplo que são varias linhas, tenho que repetir o código ou tem como estende-la a varias linhas?
Explique com exatidão o que você quer dizer com "são várias linhas".
Obrigado

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 19:53
por fabioprade
Anexado mestre,


veja que na planilha são vários ativos, varias linhas que usarei o código que você me passou, deveria ter mencionado antes.


Obrigado

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 20:39
por osvaldomp
Fabio, o erro no código ocorre porque as suas fórmulas na coluna E estão retornando erro #REF.
para contornar substitua a fórmula ~~~> =PROCV(D4;Cotação!$1:$50;4;FALSO)
por esta ~~~> =SEERRO(PROCV(D4;Cotação!$1:$50;4;FALSO);0)

Também, se você quiser testar um código simplificado em substituição ao atual, que atua da linha 4 até a linha 22, segue abaixo.
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim i As Long
  For i = 4 To 22
   If Cells(i, 1) < Cells(i, 5) * 0.95 And Cells(i, 5) <> "" Then Cells(i, 1) = Cells(i, 5) * 0.95
  Next i
End Sub

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 21:26
por fabioprade
Fabio, o erro no código ocorre porque as suas fórmulas na coluna E estão retornando erro #REF.
Na verdade, com a plataforma que conectava o DDE a planilha aberto, estava atualizando normal e estava dando o erro, mas com o tratamento que você passou resolveu perfeitamente, irei aprender sobre tratamento de erros.

Lembra daquele outro caso do outro tópico?

Fiz assim e resolveu também a questão? Veja por gentileza se esta correto...
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim i As Long
 Dim j As Long
 
  For i = 4 To 22
   If Cells(i, 1) < Cells(i, 5) * 0.95 And Cells(i, 5) <> "" Then Cells(i, 1) = Cells(i, 5) * 0.95
  Next i
  
  For j = 4 To 22
  If Cells(j, 2) > Cells(j, 7) And Cells(j, 7) <> "" Then Cells(j, 2) = Cells(j, 7)
  Next j
  
End Sub

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 21:42
por osvaldomp
Beleza, o código está correto. Se o resultado está conforme o desejado, então parabéns! :D

Re: Função para manter valor máximo alcançado na célula

Enviado: 15 Out 2020 às 22:11
por fabioprade
Beleza, o código está correto. Se o resultado está conforme o desejado, então parabéns! :D

Só copiei o código do mestre, :D , aí fica fácil.


Muito obrigado mais uma vez Osvaldo.


Fabio