Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#15182
bom dia,

eu tenho uma planilha no excel 2010 e 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 seja "desativado" (senão fica dando mensagem toda hora).

exemplo de como eu chamo a função
NA PLANILHA
=Alarme(B1;">100")

alguém poderia me ajudar?

link para download da planilha de exemplo
https://drive.google.com/open?id=0B45Hg ... EhBUE5jalk
Código: Selecionar todos
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
Editado pela última vez por baraozemo em 15 Set 2016 às 15:34, em um total de 1 vez.
#15188
sim, por isso eu necessito de devolver para a planilha duas células a direita de onde a função é chamada e colocar
o valor desta célula = 1 ,
ActiveCell.Offset(0, 2).Range("A1").Value = 1 <====aqui não está funcionando

com isso a função não é executada uma segunda vez.
If ActiveCell.Offset(0, 2).Value = "1" Then Exit Function
pois este comando compara se a célula está com valor =1 e dá um EXIT logo no início da função.

o meu problema é que o comando abaixo não está funcionando e não atualiza a célula para dizer
que já rodou a função.
ActiveCell.Offset(0, 2).Range("A1").Value = 1 <====aqui não está funcionando
#15310
Boa noite,

Li seu código e o mesmo tem alguns problemas, o offset deve ser utilizado de outro modo que não vale a pena explicar aqui pois não é o intuito do post, e também não pode alterar valor dentro de uma célula, fiz alguns testes e temos algo funcional, podemos usar desse modo:

no VBA, no evento change da Plan1
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim nContador As Long
    
    nContador = 8
    Do Until Sheets("Plan1").Range("A" & nContador).Value = ""
        
        If MensagemEmitida(Sheets("Plan1").Range("A" & nContador).Value, _
                           Sheets("Plan1").Range("B" & nContador).Value, _
                           Sheets("Plan1").Range("C" & nContador).Value, _
                           Sheets("Plan1").Range("D" & nContador).Value, _
                           Sheets("Plan1").Range("F" & nContador).Value, _
                           nContador) = 1 Then
            
            Sheets("Plan1").Range("F" & nContador).Value = 1
            
        End If
        
        nContador = nContador + 1
    Loop
    
End Sub
E a função no módulo1:
Código: Selecionar todos
Option Explicit

Public Function MensagemEmitida(ByVal sAcao As String, _
                                ByVal dValorInicial As Double, _
                                ByVal sCondicao As String, _
                                ByVal dValorComparado As Double, _
                                ByVal nStatus As Integer, _
                                ByVal nLinha As Long)
    
    On Error GoTo ErrorHandler
    
    If nStatus = 1 Then
        Exit Function
        
    ElseIf Evaluate(Str(dValorInicial) & sCondicao & Str(dValorComparado)) Then
        Application.Speech.Speak ("Alerta, a ação " & sAcao & " é " & sCondicao & " " & dValorComparado)
        MensagemEmitida = 1
        Exit Function
    
    End If

    Exit Function

ErrorHandler:
    MsgBox Err.Description

End Function

Veja se resolve o seu problema !!

RodrigoRMC
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord