Jump to content
anderson.lrv

Executar código quando uma célula é alterada

Recommended Posts

anderson.lrv

Private Sub Worksheet_Selectionchange(ByVal Target As Range)
If Range("A1:A10").Value = 300 Then
Call METANOL

End If

End Sub

___________________________

DA ERRO DE EXECUÇÃO 13

TIPOS INCOMPATÍVEIS

OQ TA FALTANDO?

Share this post


Link to post
Share on other sites
vbalexandre

Boa tarde!!

Já tenteou...

Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
 Exit Sub
 Else
	 If Range("A1:A10").Value = 300 Then
		 Call METANOL
 End If
 Application.EnableEvents = True
End Sub

Não testado!

Share this post


Link to post
Share on other sites
anderson.lrv

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
    Exit Sub
    Else
        If Range("A1:A10").Value = 300 Then
            Call METANOL
    End If
    Application.EnableEvents = True
End Sub

ERRO DE COMPILAÇÃO

BLOCO IF SEM END IF

E TEM HORAS Q NÃO ABRE NADA.

Share this post


Link to post
Share on other sites
jpaulino

Dessa forma não funciona ... não podes comparar um intervalo (A1:A10) a um valor, apenas uma célula (A1 ou A2 por exemplo)

Qual é o objectivo?

Share this post


Link to post
Share on other sites
falco

Há dois event handlers relacionados o Worksheet_change e o Worksheet_calculate... O primeiro é um evento provocado pelo utilizador, o segundo por uma formula que (re-)calculou o seu resultado.

Nem acredito que sou o único a dizer isto...

Share this post


Link to post
Share on other sites
sergio.costa

Codigo (Visual Basic):

Private Sub Worksheet_Change(Val Target As Range)
 Application.EnableEvents = False
 If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
 Exit Sub
 Else
	 If Range("A1:A10").Value = 300 Then
		 Call METANOL
	End If
 End If
 Application.EnableEvents = True
End Sub

Seria a solução para o erro dos if's

No entanto eu concordo o jpaulino, nao podes fazer essa comparação.

Deves trazer o valor de cada celula para variaveis e compara-las uma a uma..

Ex.: se o teu objectivo e coparar a soma das celulas

Se value(A1) + value(A2) + ... + value(A10) = 300 entao

Faz qualquer coisa

Fim Se

Ou entao se qualquer um do valor das celulas for 300

Dim j as integer

Para j = 1 to 10

Se value(A j) = 300 entao

Fazer qualquer coisa

Fim Se

Proximo

Nao sei se e isto que queres?

Share this post


Link to post
Share on other sites
anderson.lrv

Bom Dia.

estou tentando todas as opções mais não ta dando certo.

o meu objetivo é:

eu tenho uma coluna com uma sequencia de formulas que todo dia vai alterando este valor devido eu colocar um consumo de um produto em outra célula, e quando ele der o valor de 300 é que meu estoque está baixo dai ele aparece a mensagem

Sub METANOL()
MsgBox "VERIFICAR O NÍVEL DO TANQUE DE METANOL." _
, vbInformation + vbOKOnly, "FIAGRIL - BIODIESEL!!"
End Sub

teria que colocar na coluna inteira está sequencia

.

Share this post


Link to post
Share on other sites
jpaulino

teria que colocar na coluna inteira está sequencia

Não, podes usar a função WorksheetFunction para verificares o valor que está na coluna.

Assim deve funcionar:


Private Sub Worksheet_Change(ByVal Target As Range)

Dim rng As Range
Set rng = Range("A1:A10")

If Not Intersect(Target, rng) Is Nothing Then
	  If Application.WorksheetFunction.Sum(rng) = 300 Then
		Call METANOL
	End If
End If

End Sub

Share this post


Link to post
Share on other sites
anderson.lrv

obrigado jpaulino deu certo, está executando a macro perfeitamente.

quando eu digito a macro executa, será que tem como executar a macro nestas mesmas sequencia só que em vez de eu digitar na celular ela executar na celular que esta com uma formula.

Share this post


Link to post
Share on other sites
FreiNando

Já foi respondido:

Há dois event handlers relacionados o Worksheet_change e o Worksheet_calculate... O primeiro é um evento provocado pelo utilizador, o segundo por uma formula que (re-)calculou o seu resultado.

Nem acredito que sou o único a dizer isto...

Lê não só o que te interessa, mas também o que é do teu interesse.


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.