none
Disparar código após selecionar valor RRS feed

  • Pergunta

  • Pessoal,

    possuo uma célula com uma lista na validação de dados.

    Estudo uma forma de disparar um determinado código após selecionado o valor da lista.

    Os eventos da worksheet e workbook não atendem minha necessidade. Penso em algo como sendkeys talvez , as não manjo como associar.

    Conto com a ajuda de vcs novamente.

    Valeu galera.

    Weivisson

    quinta-feira, 25 de abril de 2013 22:10

Respostas

  • "Para cada referencia ele atualiza  a referida tabela dinamica e os eventos fazem loops diversas vezes antes de finalizar."

    Quando você altera uma célula no evento Worksheet_Change, ele é chamado novamente. Para evitar que ele não seja chamado novamente, desabilite os eventos durante a execução do código.

    'Gera laço infinito:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Range("A1") = "Teste"
    End Sub

    'Evento é chamado apenas uma vez:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        Range("A1") = "Teste"
        Application.EnableEvents = True
    End Sub
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Weivisson quinta-feira, 25 de abril de 2013 23:23
    quinta-feira, 25 de abril de 2013 23:19
    Moderador

Todas as Respostas

  • "Os eventos da worksheet e workbook não atendem minha necessidade."

    Por que não?

    ---

    Alternativamente, por que você, ao invés de utilizar uma célula com validação de dados, não utiliza uma caixa de combinação (ComboBox) ActiveX inserido na planilha?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 25 de abril de 2013 22:19
    Moderador
  • Olá caro amigo Felipe.

    Dessa vez preciso selecionar um valor na validação e alterar 5 tabelas dinâmicas utilizando esse valor como filtro.

    Usei da seguinte forma:

    Application.ScreenUpdating = False

    x = Cells(19, 2)

    Sheets("GERENCIAL").Cells(19, 2) = x

    Sheets("GERENCIAL").Cells(19, 6) = x

    Sheets("GERENCIAL").Cells(19, 10) = x

    Sheets("GERENCIAL").Cells(19, 14) = x

    Sheets("GERENCIAL").Cells(19, 18) = x

    Application.ScreenUpdating = true

    Onde cada referência corresponde ao filtro de cada tabela dinâmica.

    Para cada referencia ele atualiza  a referida tabela dinamica e os eventos fazem loops diversas vezes antes de finalizar. Não consigo aplicar o ScreenUpdating, pois quando chega no final q liga o screen ele volta nos loops e a tela fica piscabndo.

    Não sei esclareci ou compliquei, mas o caso é esse. ;)

    []s,

    Weivisson

    quinta-feira, 25 de abril de 2013 22:45
  • "Para cada referencia ele atualiza  a referida tabela dinamica e os eventos fazem loops diversas vezes antes de finalizar."

    Quando você altera uma célula no evento Worksheet_Change, ele é chamado novamente. Para evitar que ele não seja chamado novamente, desabilite os eventos durante a execução do código.

    'Gera laço infinito:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Range("A1") = "Teste"
    End Sub

    'Evento é chamado apenas uma vez:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        Range("A1") = "Teste"
        Application.EnableEvents = True
    End Sub
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Weivisson quinta-feira, 25 de abril de 2013 23:23
    quinta-feira, 25 de abril de 2013 23:19
    Moderador
  • Fantástico, é isso ai, quem sabe faz ao vivo!

    Valeu,

    Weivisson

    quinta-feira, 25 de abril de 2013 23:24