Compartilhar via

Executar Macros em Segundo Plano (Executar macro em PLAN1 sem que a PLAN1 seja maximizada na tela)

Anônima
2010-01-23T12:04:18+00:00

Bom dia...tenho um arquivo excel chamada Ranking, arquivo este integrada com banco de dados....em Plan1 eu tenho o ranking da empresa A, com uma macro que atualiza a cada 10 segundo a classificação...e na Plan2 estou criando outro ranking que também irá ter um macro para autoclassificar...o problema é...como faço para que essas macros de classificação fiquem ativas e executando a cada 10 segundos, sem que o excel fique maximizando as Plan1 e 2 quando executa a macro...?

Microsoft 365 e Office 365 | Instalar, resgatar, ativar | Para uso doméstico | Outro

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2010-01-24T20:19:14+00:00

OK. O screenupdating faz com que o Excel não fique pulando de seleção em seleção ao longo da sua execução.

Mas no seu código, vc deve se preocupar tanto com o ponto de partida como o ponto de chegada, para não haver inconsistência de onde a macro partiu.

Por exemplo, no seu código, vc está pegando um range, que é da planilha ativa, se se preocupar com qual planilha deve estar ativa. De qq forma, esta é só mais uma preocupação para o seu código.

Para o que vc busca, acho que vc deveria adicionar um código que independesse de onde parte para poder retornar ao mesmo lugar.

Vc poderia usar:

Dim planAtiva as Worksheet Application.ScreenUpdating = False Set planAtiva = activesheet '... 'seu código - atenção para não pegar dados de local errado '... planAtiva.activate 'Retorna para a planilha atual Application.ScreenUpdating = True 'Volta a atualizar Se for importante, vc também pode marcar a região de partida para mantar ela selecionado ao final.

Esta resposta foi útil?

7 pessoas acharam esta resposta útil.
0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2010-01-24T21:27:14+00:00

Perfeito Luiz...

Funcionar corretamente...parabens e muito obrigado pela ajuda...

veja como ficou a macro....

Sub RK()

'

' RK Macro

' Inicia Ranking

'

' Atalho do teclado: Ctrl+Shift+R

'

    Dim planAtiva As Worksheet

Application.ScreenUpdating = False

Set planAtiva = ActiveSheet

    Sheets("Parm_RK_X").Select

    Range("A4:D13").Select

    Selection.Copy

    Range("A4").Select

    Sheets("RK_X").Select

    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

        SkipBlanks:=False, Transpose:=False

    Range("C2").Select

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

        :=False, Transpose:=False

    Application.CutCopyMode = False

    ActiveWorkbook.Worksheets("RK_X").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("RK_X").Sort.SortFields.Add Key:=Range("E2:E11"), _

        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    ActiveWorkbook.Worksheets("RK_X").Sort.SortFields.Add Key:=Range("F2:F11"), _

        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("RK_X").Sort

        .SetRange Range("C2:F11")

        .Header = xlGuess

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Range("C2").Select

    Call Application.OnTime(Now + TimeValue("00:00:15"), "RK")

    planAtiva.Activate 'Retorna para a planilha atual

    Application.ScreenUpdating = True  'Volta a atualizar

End Sub


A cada 15 segundo atualiza todos os Ranking...tem interfenir na q estou trabalhando no momento....o Segredo tbm foi eu ter escolhido um ponto de partida...que no caso foi a Cel C2....

Esta resposta foi útil?

3 pessoas acharam esta resposta útil.
0 comentários Sem comentários

3 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2010-01-24T00:03:36+00:00

    Não deu certo...se estou na Plan4 por exemplo...quando executa a Macro 2 que esta na Plan2....volta sempre para Plan2...veja como esta a macro:

    Sub Macro2()

    '

    ' Macro2 Macro

    '

    '

    Application.ScreenUpdating = False     ' inseri aqui sua sugestão    Range("B5:M17").Select  

        Selection.Copy

        Sheets("Plan3").Select

        Range("B2").Select

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

            :=False, Transpose:=False

        Application.CutCopyMode = False

        ActiveWorkbook.Worksheets("Plan3").Sort.SortFields.Clear

        ActiveWorkbook.Worksheets("Plan3").Sort.SortFields.Add Key:=Range("E2:E14"), _

            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

        ActiveWorkbook.Worksheets("Plan3").Sort.SortFields.Add Key:=Range("H2:H14"), _

            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

        With ActiveWorkbook.Worksheets("Plan3").Sort

            .SetRange Range("B2:M14")

            .Header = xlGuess

            .MatchCase = False

            .Orientation = xlTopToBottom

            .SortMethod = xlPinYin

            .Apply

        End With

        Range("B2").Select

        Call Application.OnTime(Now + TimeValue("00:00:10"), "Macro2")

    End Sub

    --Bom acho que voce entendeu...mas resumindo...a macro tem que ficar executando em segundo plano...sem voltar para a Plan quando for executar...

    Podemos de Ajudar por favor???

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2010-01-23T23:48:34+00:00

    Ok, vou testar...

    Rs...eu vi voce respondendo em um forum de 2006, ai fiquei que caçando em algum forum rescente por 2 dias...ai que encontrei voce aqui.

    Estou fazendo um projeto de BI para meus diretores do grupo...ja fiz velocimetros, resumo de OS´s...tudo conectado ao Oracle....

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2010-01-23T23:24:53+00:00

    O que a macro faz com cada planilha depende de como vc programou seu código. Mas, experimente utilizar ...

    Application.Screeupdating=false ..antes de cada execução de código.

    Esta resposta foi útil?

    0 comentários Sem comentários