Ir ao conteúdo

Posts recomendados

Postado

Bom dia!

Preciso de uma macro que ative outra macro, sempre que o valor de uma celula mudar.

Exemplo,

Sempre que alterar o valor inserido em E4 a macro deve ativar a macro COPI_01

Obs: Já tenho um evento na planilha ativando outras macros, porém com resultados expecificos.

AGORA QUERO APENAS QUE QUANDO A CELULA E4 FOR ALTERADA QUE EXECUTE A MACRO.

OBS: M4 É O RESULTADO DE UM PROCV INSERIDO EM E4. POR ISSO TODA VEZ QUE MUDAR E4 VAI DAR UM RESULTADO DIFERENTE, ESTE POR VEZ É COPIADO E COLADO NA CELULA G19 ONDE VAI ATIVAR OUTRA MACRO.

A IDEIA É QUE ESTA MACRO COPIA_1 SEJA ATIVADA SEMPRE QUE ALTERAR O E4.

ELA FUNCIONA COM UM RESULTADO, porém SE EU ALTERAR PARA OUTRO ELE NAO FUNCIONA.

Sub COPIA_01()

'

' COPIA CELULA E COLA APENAS VALOR SEM FORMULA

'

Range("M4").Select

Selection.Copy

Range("G19").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End

End Sub

INSERI NA PLANILHA O SEGUINTE CODIGO.

Private Sub Worksheet_Change(ByVal Target As Range, ByVal o_que_mudou As Range)

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-2032" Then Call MI_2032_000000000000001

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-876" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-922" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-1155" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-3565" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-2439" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-2850" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

Select Case Target.Address

Case "$G$19"

If UCase(Target.Value) = "-3482" Then Call XXX_ORG_DESDOBRAMENTO_1

End Select

End Sub

' ATIVA A MACRO COPIA_01

If o_que_mudou.Address = "$E$4" Then

Application.EnableEvents = False ' importantíssimo !!

Call COPIA_01

Application.EnableEvents = True ' importantíssimo !!

End If

End Sub

AGUARDO AJUDA DOS AMIGOS.

Postado

Então meu amigo. eu tenho buscado uma forma de fazer esse processo, achei esta uma forma que pode dar certo, o que preciso na verdade é que o resultado da PROCV execute a macro, porém nao acontece isso. e cada vez que mudo C4 eu troco o codigo de busca do procv. por isso achei que seria a forma mais fácil.

mas aceito sugestão, desde que funcione o que preciso, eu tinha em G19 a validação de dados e selecionando a macro executa, se eu digitar na celula tb executa, porém como resultado de procv não executa macro, então toda vez que M4 mudar (resultado) ele vai disparar uma macro, e o que comanda é C4, desta forma, se tiver uma ideia melhor que resolva eu aceito de todo coração ahsuahsahs.

Obrigado.

Postado

Então amigo, eu nao sei usar o calculate.

Minha planilha ta bem complexa, mas ainda estou no arroz com feijão.

não faço ideia de como funciona uma macro com o Calculate.

Se puder explicar ou dar uma ideia. preciso que o M4 ative as macros...

Postado

então e e consigo usar ele em varias opções, exemplo, eu ja tenho umas macros que são ativadas porém ao digitar, agora para o resultado da procv é que ta complicando eu n to entendendo como funciona! achei uns exemplos porém para toda a planilha, eu preciso de um que execute apenas a celula expecifica e com o calculate é isso?

Postado

Dim Numero As Integer

Private Sub Worksheet_Calculate()

'Application.EnableEvents = False

' esta instrução deixa de ser necessária por a condição seguinte deixar de se verificar

If Numero <> Range("M4") Then

Numero = Range("M4")

Select Case Numero

Case 1

Call COPIA_01

Case Else

End Select

End If

'Application.EnableEvents = True

End Sub

ACHO QUE ASSIM VAI DAR CERTO... VOU TESTAR HJE A NOITE NA EMPRESA.

COLOCO NO WORKSHEET NÉ? OU EM MODULO?

Postado

Bom dia!!

Veja um exemplo generico..

Private Sub Worksheet_Calculate()
Static OldVal1 As Variant
If Range("E4").Value <> OldVal1 Then
OldVal1 = Range("B42").Value
Call Macro1
'.....
End If
End Sub

Att

Postado

Amigo, a macro funcionou, porém fica em loop constantemente. Por que serÁ? A ideia era que ela acionace apenas quando fosse alterado o valor em c4, mas parace que ela segue sempre em loop atÉ dar erro.

  • 3 anos depois...
Postado

Estou com o mesmo problema, ele entra em um looping infinito até dar erro.

Como poderia fazer para rodar a macro 1 vez quando os valores estiverem iguais, no meu caso o valor varia entre 0 e 1, quando estiver em 1 gostaria que rode uma vez, depois volta para 0 não roda e quando voltar em 1 roda novamente mais somente uma execução. Segue programação e arquivo.

 

Private Sub Worksheet_Calculate()
Static OldVal1 As Variant
If Range("C33").Value <> OldVal1 Then
    OldVal1 = Range("H24").Value
    Application.Goto Reference:="Tab_Ciclo"
    ActiveWindow.SmallScroll Down:=3
    Selection.Copy
    Application.Goto Reference:="A_fim"
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Sheet1").Select
    ActiveCell.Offset(0, 5).Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    ActiveCell.Offset(1, 0).Range("A1").Select
End If
End Sub
 

Teste 1_macro.xlsx

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...