Ir ao conteúdo
  • Cadastre-se

Automatização de macro excell


Posts recomendados

 Boa noite pessoal

 

 

 Gostaria de uma ajuda dos colegas, tenho uma planilha do Excel alimentada por link DDE, onde os valores das células mudam automaticamente, criei uma macro para fazer uma função e gostaria de saber se tem como automatiza-la , ao invés de ter que apertar um botão qiuando a condição acontece a macro fazer a função automaticamente ,exemplo: quando aparecer o numero "1" na célula A1 execute a macro e quando aparecer o numero 1 na A2 execute outra macro preciso que ela faça isso o dia inteiro das 9 às 17 hs quando aparecer o numero 1 na A1 ou na A2. não sei se consegui ser claro. estou postando uma planilha Excel com a minha necessidade.

Link para o comentário
Compartilhar em outros sites

Você precisa inserir a macro na Worksheet e com a propriedade CHANGE, dentro dela você coloca essa sua função.

 

Assim, toda vez que houver uma alteração na sua planilha, essa função será executada. Independente se o valor foi alterado na A1 ou na AW5897.

 

Não sei se há uma maneiro menos pesada para o processador, mas é essa a forma que uso quando preciso (em raras exceções)

Link para o comentário
Compartilhar em outros sites

Bom dia,

 

Insira essa SUB na ABA da planilha a ser controlada as modificações. Clique com o botão direito e depois selecione Exibir Código.

 

Private Sub Worksheet_Change(ByVal faixa As Range)

    Dim monitorar As Range

' Informe aqui a célula ou intervalo de células a ser monitorada

    Set monitorar = Range("A4:A2000")

    If Not Intersect(faixa, monitorar) Is Nothing Then

         Call NOME_DA_MACRO

    End If

End Sub

Link para o comentário
Compartilhar em outros sites

Sub compra1()

 

 

'   compra1 Macro

'

 

'

    Range("DS21:DX21").Select

    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    Range("DS16:DX16").Select

    Selection.Copy

    Range("DS21").Select

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

        :=False, Transpose:=False

    Range("DS21").Select

    Application.CutCopyMode = False

    ActiveCell.FormulaR1C1 = "=R11C128-RC[5]"

    Range("DV18:DX19").Select

End Sub

 

 

 

 

 

esta é a macro e esta no modelo9 como faço para colocar a função indicada ????? detalhe a celula a monitorar é a celula DX1

 

desde já lhe agradeço a ajuda. estamos chegando lá

Link para o comentário
Compartilhar em outros sites

Onde aparece o nome da planilha, tipo : PLAN1, PLAN2 e PLAN3 selecione a planilha que você quer controlar quando houver mudança e clique com o o botão direito do mouse em cima do nome da planilha, ao surgir um menu de opções, selecione a opção EXIBIR CÓDIGO, neste caso o Visual Basic vai abir direto a pasta de objetos da planilha. E cole o comando, não esqueça de fazer as alterações.

 

Private Sub Worksheet_Change(ByVal faixa As Range)
    Dim monitorar As Range
    Set monitorar = Range("A4:A2000") <<== ' Informe aqui a célula ou intervalo de células a ser monitorada
    If Not Intersect(faixa, monitorar) Is Nothing Then
         Call NOME_DA_MACRO <<== no seu caso Compra1
    End If
End Sub
 
Sempre que alguém alterar o conteúdo de alguma célula controlada, a sua Macro Compra1 será executada. Está macro pode estar em Módulo1, Módulo2 ou Módulo9 será executada.
Link para o comentário
Compartilhar em outros sites

Private Sub Worksheet_Change(ByVal faixa As Range)
    Dim monitorar As Range
    Set monitorar = Range("dx1")
    If Not Intersect(faixa, monitorar) Is Nothing Then
         Call compra1
    End If
End Sub

Private Sub Worksheet_Change(ByVal faixa As Range)
    Dim monitorar As Range
    Set monitorar = Range("dx2")
    If Not Intersect(faixa, monitorar) Is Nothing Then
         Call venda1
         End If
End Sub

 

 

 

 

 

oi Kaleo , quando eu coloco dentro da celula dx1 o seguinte pedido =se(a1>b1;1;"") e dou enter para mudar de celula a macro executa 1 vez  , mas depois a configuração para de reconhecer o numero 1 que alterna entre 1 e celula vazia , tipo umas 5 vezes por minuto e a configuração não reconhece mudança na celula, percebi que se for uma mudança manual e der enter ela executa a macro mas com a mudança automatica na celula não esta rodando, outra coisa a mesma função vou utilizar na dx2 na linha de baixo e condição igual venda1 coloquei acima a configuração que me passou , volta uma mensagem dizendo "nome repetido encontrado worksheet_change"...

 

 

quase lá... obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

Não compreendi bem a sua explanação. Mas vamos lá.

 

Esse comando só funciona quando a célula sofre alguma alteração manual, teclando enter, tab ou del. Esse comando não pode ser repetido, se precisar controlar mais de uma células você precisa definir a célula inicial e a final, neste caso todas as células compreendidas entre a inicial e a final também serão controladas.

 

Portanto, se você precisa rodar a macro Compra1 ou Venda1 pelo valor da celula DX1 ou DX2 que tem formulá, não rola desta forma.

 

Private Sub Worksheet_Change(ByVal faixa As Range)
    Dim monitorar As Range
    Set monitorar = Range("dx1:dx2") <<== informa que o intervalo entre DX1 a DX2 será controloda
    If Not Intersect(faixa, monitorar) Is Nothing Then

         IF fazer um teste lógico pra saber qual célula estava THEN
              Call compra1

        ELSE

             Call venda1

       END IF
    End If
End Sub

 

No caso da DX1 e DX2 ter que ser por formulá altere a lógica ou a forma te obter o resultado.

Link para o comentário
Compartilhar em outros sites

pessoal preciso de uma programação para executar uma macro a partir de uma celula exemplo A1  caso a celula A1 sera alterada execute a macro x  , detalhe, para alterar esta celula A1 eu tenho um link dde com uma formula , ou seja nunca dou enter nem del nem tab na celula , ela é alterada atraves de outra celula. exemplo A5 a celula A5 manda um numero para a A1 o que preciso ; quando o numero 1 aparecer na celular A1 execute a macro. 

 

 

alguem pode me ajudar ? 

Link para o comentário
Compartilhar em outros sites

Veja se ajuda.


Instale o código abaixo no módulo da planilha, assim:
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar

Private Sub Worksheet_Calculate() If [A1] = 1 Then MsgBox "o conteúdo de A1 é 1"End Sub


Faça os testes com o código acima e com a entrada DDE ativada. Se funcionar será exibida a caixa de mensagem. Nesse caso substitua o comando que exibe a caixa de mensagem pelo nome da sua macro, assim:

Private Sub Worksheet_Calculate() If [A1] = 1 Then NomeDaSuaMacroEnd Sub
Link para o comentário
Compartilhar em outros sites

Sub compra1()

'

    Range("F13:I13").Select

    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    Range("F11:I11").Select

    Selection.Copy

    Range("F13").Select

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

        :=False, Transpose:=False

    Application.CutCopyMode = False

End Sub

 

Sub venda1()

'

    Range("J13:L13").Select

    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    Range("J11:L11").Select

    Selection.Copy

    Range("J13").Select

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

        :=False, Transpose:=False

    Application.CutCopyMode = False

End Sub

 

Sub Inicio()

    Cells(1, 1).Select

End Sub
Link para o comentário
Compartilhar em outros sites

Disponibilize aqui no tópico o arquivo com os códigos instalados.

 

Não entendi o que você fez. Eu pedi o arquivo e você mandou 3 códigos sem o arquivo ...???

Qual a sua ideia? O que devo fazer com esses códigos? Dureza!

 

Ainda, no post #13 você informou que queria rodar a macro x, ou seja, uma macro, no entanto você colocou acima três códigos...??? Se "A1"=1 então você quer rodar qual dos três códigos acima?

Link para o comentário
Compartilhar em outros sites

bom dia osvaldo,quero rodar a macro compra1 , quero rodar a macro venda1 ,se  a1 for =1 execute macro compra1 se a1 for =0 execute macro venda1  quero comprar e vender de acordo com a celula a1 mas como falei esta celula é alimentada por link DDE , sofre açao por outras celulas . como faço ? onde fica este arquivo para eu colocar aqui ????   

Link para o comentário
Compartilhar em outros sites

... como faço ? onde fica este arquivo para eu colocar aqui ????   

 

Veja o caminho abaixo da minha assinatura. O arquivo deverá conter todos os códigos que você utiliza ou que está tentando utilizar.

Link para o comentário
Compartilhar em outros sites

Instale o código abaixo no lugar do anterior.

Private Sub Worksheet_Calculate() Application.EnableEvents = False  On Error Resume Next  If [A1] = 1 Then compra1  If [A1] = 0 Then venda1 Application.EnableEvents = True End Sub
Link para o comentário
Compartilhar em outros sites

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...