none
Dois ou mais comandos VBA-excel para dois ou mais botões na mesma planilha (aba) RRS feed

  • Pergunta

  • Pessoal 

    Uso o comando abaixo para ocultar e exibir dois intervalos de linhas no excel. Aplico esse comando a um botão e o mesmo funciona perfeitamente.

    Sub Macro1()
        Call exibirocultar("26:32")
        Call exibirocultar("121:122")
    End Sub
    
    Public Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = IIf(Rows(linhaColuna).EntireRow.Hidden, False, True)
    End Sub

    Entretanto, caso eu queira montar outro comando na mesma planilha, sendo que esse novo comando eu aplicarei um novo botão?

    Isso é possível, já que possuímos só um bloco de códigos (Alt+F11)  para cada planilha? É possível inserir dois ou mais comandos para dois ou mais botões diferentes em uma mesma planilha (aba)?

    Grato pelo auxilio.

    Cleberton Brandão Jr


    segunda-feira, 29 de outubro de 2012 20:18

Respostas

  • Primeiramente, insira num módulo qualquer o código abaixo:

    Sub Botão1()
        Call exibirocultar("26:32")
        Call exibirocultar("121:122")
    End Sub
    
    Sub Botão2()
        Call exibirocultar("50:56")
        Call exibirocultar("200:235")
    End Sub
    
    Private Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = Not Rows(linhaColuna).EntireRow.Hidden
    End Sub

    Crie dois botões (ou mais) na planilha que desejar esse comando. Para um botão, atribua a macro chamada Botão1. Para o outro botão, atribua a macro chamada Botão2.


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

    terça-feira, 30 de outubro de 2012 20:29
    Moderador

Todas as Respostas

  • Sim, é possível.

    Aproveitando, você pode simplificar seu código para:

    Sub Macro1()
        Call exibirocultar("26:32")
        Call exibirocultar("121:122")
    End Sub
    
    Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = Not Rows(linhaColuna).EntireRow.Hidden
    End Sub


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

    segunda-feira, 29 de outubro de 2012 20:41
    Moderador
  • Opa Felipe,

    Valeu pelo comando simplificado. Vou ajustar aqui.

    Entretanto me dê uma mãozinha. Levando em consideração que usarei comando semelhantes.

    Como vc pode ver no exemplo abaixo a unica coisa q muda é o numero do intervalo das linhas. 

    Exemplo:

    Sub Macro1()
        Call exibirocultar("26:32")
        Call exibirocultar("121:122")
    End Sub
    
    Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = Not Rows(linhaColuna).EntireRow.Hidden
    End Sub
    
    
    
    Sub Macro1()
        Call exibirocultar("50:56")
        Call exibirocultar("200:235")
    End Sub
    
    Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = Not Rows(linhaColuna).EntireRow.Hidden
    End Sub

    Se eu quisesse destinar cada comando a seu Botão respectivo, o q eu deveria fazer? Acrescento qual informação? 

    Nesse exemplo usei comandos semelhantes, entretanto se fossem comandos diferente, eu trataria do mesmo jeito?

    Brother valeu pelo auxilio.

    Cleberton Brandão Jr

    segunda-feira, 29 de outubro de 2012 21:04
  • Não entendi muito bem o que quer dizer. Poderia explicar melhor sua dúvida?

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

    segunda-feira, 29 de outubro de 2012 22:23
    Moderador
  • Vamos lá.

    Em uma da abas da planilha criei um botão que faz roda o comando mostrado acima. Quando clico nele o intervalo de linhas 26:32 e 121:122 são ocultadas. Quando Clico novamente elas são exibidas. Minha intenção no momento é q outros intervalos de linhas, no caso 50:56 e 200:235, também sejam ocultadas/exibidas a partir de um clic. Só que neste segundo caso seria em um outro botão criado.

    Quando usamos o (Alt + F11), abrindo assim o Microsoft Visual Basic, observamos que cada aba da planilha possui uma local para colocarmos os comandos do Visual Basic rodando assim o Macro.

    MInha duvida é:

     - Levando-se em consideração que tenho dois comandos no Microsoft Visual Basic na mesma planilha, e neste caso semelhantes, como faço para destinar cada comando a um botão botão especifico.

    Espero ter esclarecido melhor minha duvida.

    Muito pela ajuda cara.

    Cleberton Brandão Jr

    terça-feira, 30 de outubro de 2012 18:34
  • Primeiramente, insira num módulo qualquer o código abaixo:

    Sub Botão1()
        Call exibirocultar("26:32")
        Call exibirocultar("121:122")
    End Sub
    
    Sub Botão2()
        Call exibirocultar("50:56")
        Call exibirocultar("200:235")
    End Sub
    
    Private Sub exibirocultar(ByVal linhaColuna As String)
        Rows(linhaColuna).EntireRow.Hidden = Not Rows(linhaColuna).EntireRow.Hidden
    End Sub

    Crie dois botões (ou mais) na planilha que desejar esse comando. Para um botão, atribua a macro chamada Botão1. Para o outro botão, atribua a macro chamada Botão2.


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

    terça-feira, 30 de outubro de 2012 20:29
    Moderador