função não consegue...
 
Notifications
Clear all

função não consegue mudar a célula

12 Posts
4 Usuários
0 Reactions
1,645 Visualizações
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

bom dia,

eu tenho uma planilha que tem vários alertas, eu coloco uma regra e chamo a função,
porém estou com problema porque a função não consegue gravar de volta o valor "1"
que é a condição para que o alerta não seja "desativado" (senão fica dando mensagem toda hora).

alguém poderia me ajudar?

Function Alarme(Célula, Condição)
On Error GoTo ErrHandler
If ActiveCell.Offset(0, 2).Value = "1" Then Exit Function
Dim acao As String, expressao As String
acao = Mid(Condição, 1, 5)
expressao = Mid(Condição, 6, Len(Condição) - 5)
If Evaluate(Célula.Value & expressao) Then
   Application.Speech.Speak ("alerta. " & acao & expressao)
ActiveCell.Offset(0, 2).Select
ActiveCell.Offset(0, 2).Range("A1").Value = 1                  <====aqui  não está funcionando

Alarme = True
Exit Function
End If
ErrHandler:
Alarme = False
End Function
 
Postado : 14/09/2016 3:22 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Troca essa linha

ActiveCell.Offset(0, 2).Range("A1").Value = 1

Por esta

ActiveCell.Value = 1

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 14/09/2016 4:25 pm
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

obrigado pela resposta,
eu troquei a linha
ActiveCell.Offset(0, 2).Range("A1").Value = 1
por
ActiveCell.Value = 1

e continua não funcionando.. dá erro

 
Postado : 14/09/2016 6:38 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O ideal seria anexar um modelo reduzido e compactado para uma analise mais precisa, só dizer que "a função não consegue gravar de volta o valor "1"" fica dificil de analisar uma vez que não sabemos a que condição tem de ser atendida, outra situação seria : se não é gravado o numero 1, o que está sendo gravado ? outro numero ou nada ?

Analise tambem que na função temos uma comparação na instrução "If ActiveCell.Offset(0, 2).Value = "1"" com o numero entre aspas e depois quer inserir só o numero sem aspas, isto faz diferença.

Ficaremos no aguardo do modelo, senão vamos ficar com suposições.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/09/2016 9:45 pm
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

mauro, obrigado pela resposta.. eu vou postar ainda hoje a planilha de exemplo com anexo para você verificar.

com relação a linha
If ActiveCell.Offset(0, 2).Value = "1" Then Exit Function
esta linha está "funcionando" pois quando eu coloco 1 na planilha ele não chama a função de novo,
o problema está só na parte onde eu tento gravar o valor = 1 (pois o padrão é 0 , para dizer que ainda não ativou nenhuma vez o alarme)
quanto tento colocar o valor = 1 , ele não grava isso na planilha o que faz a função ficar em loop sendo ativada varias vezes
ActiveCell.Offset(0, 2).Range("A1").Value = 1 <=== aqui não consigo gravar o valor = 1 na planilha

 
Postado : 15/09/2016 6:02 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Baraozemo, bom dia.

Que operação/resultado vc espera que essa linha faça? Pergunto isso pq ela parece não fazer muito sentido - embora seja exequível, principalmente devido àquele "Range("A1")".
Pensemos junto o que ela está executando:
VBA, à partir da célula em que o cursor está (célula ativa, que é uma célula só e não um intervalo), ande duas colunas à direita e coloque o valor 1 na célula da primeira linha e da primeira coluna dessa célula à qual vc foi.
Ou seja, como ActiveCell é uma célula só, deslocar com o método Offset x linhas / y colunas vai retornar também uma (nova) célula só, portanto o Range("A1") de uma célula só é a própria (nova) célula.

Por isso teria que ver exatamente o que vc espera com esse "comando".

 
Postado : 15/09/2016 6:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Acabei respondendo as pressas e acabei deixando passar batido o seguinte :

Você está utilizando uma Function e não é possível atraves de funções selecionar ou alterar valores em outras celulas, funções são somente para retornar resultados.

Você não conseguirá realizar estas ações com funções, e só não teve mensagem de erro devido ao tratamento do mesmo no inicio - On Error GoTo ErrHandler
ActiveCell.Offset(0, 2).Select
ActiveCell.Offset(0, 2).Range("A1").Value = 1

Como eu disse anteriormente, anexe um modelo para que possamos analisar as possibilidades de estar ajustando a sua necessidade.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/09/2016 7:02 am
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

mauro, obrigado..

segue o download da planilha de exemplo.
https://drive.google.com/open?id=0B45Hg ... EhBUE5jalk

 
Postado : 15/09/2016 11:32 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não tenho como baixar arquivos de links externos, anexe seu modelo aqui o forum, veja como fazer :

Como Anexar Aquivos Compactados ?
viewtopic.php?t=3841

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/09/2016 11:49 am
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

mauro, segue a planilha anexada

 
Postado : 15/09/2016 12:24 pm
(@baraozemo)
Posts: 6
Active Member
Topic starter
 

alguem poderia ajudar?

 
Postado : 18/09/2016 8:50 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

baraozemo, tenha em mente sempre que as colaborações nos foruns são voluntárias e dependente principalmente de tempo disponível de cada um, e devido a isto nem sempre as ajudas são imediatas.

Voltando a sua solicitação, como disse que utiliza rotina que atualiza os ranges automaticamente a cada segundo e como não sei a estrutura dela, apesar que acredito que 1 seg é um tempo muito rápido para conseguirmos um loop para todas as alterações, segue um modelo da forma que interpretei, só que utilizei a alteração somente em uma celula para testar, mas a mesma está construida para captar a alteração em qualquer celula que contenha a Function a qual fiz umas alterações.

Baixe o exemplo faça os testes e veja se estamos no caminho certo.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/09/2016 1:46 pm