Aurimar, complementando a explicação do Edson, apesar de voce dizer que refez o procedimento e o mesmo está OK, então supondo que está digitando "OK" somente na coluna em questão "AN??" - "Col 40", sem problemas, mas se for digitar na Coluna "BA??" - "Col 53", mais precisamente em BA12, você não terá o resultado correto, devido as celulas mescladas que conteem as datas de Prazo = "Entrega e Reajuste" não terem a mesma qde de celulas mescladas, o que influi diretamente no resultado devido utilizarmos a Referencia Target, mas se a intensão é só digitar na Col 40 (AN??), desconsidere meu comentário.
Agora quanto a questão de devolver a Formula para a Celula qdo apagar o "OK" ou digitar outro valor qq, cheguei a conclusão que o ideal seria criar uma função, agora se for utiliza-la para as outras colunas, tem que, ou refazer o Layout da mesma ou criar outras formulas para cada situação.
Nesta Rotina, utilizei a Instrução Select Case, para capturar a Coluna em que estamos digitando, assim só rodará a function, se digitarmos nas Colunas determinadas nos cases, neste caso, só deixei as colunas 40 e 52, se for utilizar outras é só aumentar os Cases, não esquecendo de alterar o Layout conforme comentei acima.
Conforme orientação anterior do Edson, em sua Guia ADMINISTRAÇÂO, substitua a rotina pelas abaixo :
Dim MyCol As Variant
Dim sUcase, sCelPrazo, sResultado
Private Sub Worksheet_Change(ByVal Target As Range)
MyCol = Target.Column 'Captura o Numero da Coluna
sCelPrazo = Cells(Target.Row, MyCol - 10).Address(0, 0) 'Celula com a Data Prazo
sResultado = Cells(Target.Row, MyCol - 2).Address(0, 0) 'Celula do resultado
On Error Resume Next 'Evita msg de Erro se Valor da Celula Vazia
sUcase = UCase(Target.Value) 'Armazena o Valor da Celula
Application.EnableEvents = False
'Se Colunas coincidirem chama a Function
Select Case MyCol 'Numero das Colunas
Case 40 'Coluna 40
CalculaPrazo (MyCol)
Case 52 'Coluna 52
CalculaPrazo (MyCol)
End Select
Application.EnableEvents = True
End Sub
Function CalculaPrazo(MyCol As Integer)
If UCase(sUcase) <> "OK" Then
Range(sResultado).Formula = "=" & sCelPrazo & "-TODAY()"
Exit Function
Else
Range(sResultado).Value = Range(sResultado).Value
End If
End Function
Faça os testes e qq coisa retorne.
ET :Achei melhor anexar o modelo em que fiz as alterações e adicionei as explicações, acho que será mais facil de compreender.
abraços
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 22/05/2011 2:49 pm