Ir para conteúdo
Fórum Script Brasil
  • 0

Botão esconde/mostra linhas VBA excel


JS5

Pergunta

Boa noite Srs,

Não sou profissional da área, mas estou desenvolvendo um botão com macro em VBA para excel. O mesmo deve ser copiado/colado em qualquer célula e, ao ser clicado, deve esconder toda(s) a(s) linha(s) abaixo dele. A célula que estiver a direita do botão deve conter o número de linhas que se deseja esconder, para que a macro leia o valor e possa ser usado no VBA. Ao clicar novamente, o mesmo deve mostrar novamente toda(s) a(s) linha(s) escondida(s).

Esse botão já funciona com o código apresentado abaixo e a intenção é usá-lo para criar listas de tarefas com ITENS e SUBITENS. O meu problema é o seguinte:

Quando quero usar esses botões como subítens de um item raiz, ou seja, tenho um botão na linha 10 e quero que esconda da linha 11 até a linha 20(10 linhas), sendo que existem mais outros 3 botões, todos com a mesma macro, nas linhas 14, 17 e 19, o que acontece é que ao esconder as 10 linhas com o botão da linha 10, os 3 botões ficam todos sobrepostos na linha 21, logo abaixo do botão da linha 10.

A minha pergunta é o seguinte:

Alguém sabe uma maneira mais simples de resolver esse meu problema utilizando botões com macro OU sabe como eu fazer os botões serem escondidos junto com as linhas?

Por favor, aguardo resposta e já agradeço por qualquer ajuda.

Att.,

JS5

Sub Botão1_Clique()

Dim BTN As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
Dim i As Integer

i = BTN.TopLeftCell.Offset(0, 1).Value

If LCase(BTN.Caption) = LCase("Hide Rows") Then
BTN.TopLeftCell.Offset(1, 0).Resize(i, 1).EntireRow.Hidden = True
BTN.Caption = "Show Rows"
Else
BTN.TopLeftCell.Offset(1, 0).Resize(i, 1).EntireRow.Hidden = False
BTN.Caption = "Hide Rows"
End If
End Sub

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Veja se isso resolve (estou imaginando que seu botão seja de Formulário e não um Controle ActiveX):

Clique com o botão direito do mouse sobre o botão -> Formatar Controle -> Selecione a aba Propriedades -> Marque a opção "Mover e dimensionar com células" (estou usando Office 2007).

Link para o comentário
Compartilhar em outros sites

  • 0
Veja se isso resolve (estou imaginando que seu botão seja de Formulário e não um Controle ActiveX):

Clique com o botão direito do mouse sobre o botão -> Formatar Controle -> Selecione a aba Propriedades -> Marque a opção "Mover e dimensionar com células" (estou usando Office 2007).

Muito obrigado pelo retorno João.

No 2003 eu já fiz isso e não adiantou! você teria outra ideia para resolver isso no 2003?

No 2007 realmente deu certo, porém surgiu outro problema....

Ok....um botão raiz engloba os internos, mas ao reabrí-lo ele abre todos os botões sem mater a ordem de linhas abertas e fechadas anterior.

Deve ser meio complexo, mas será que não tem como armazenar essa informacao dos botoes interno quando se fecha e abre o botao raiz??

Bom se não der td bem!....você já me ajudou bastante já!

Obrigado

JS5

Link para o comentário
Compartilhar em outros sites

  • 0

No 2003 eu não sei, já faz um bom tempo que não uso ele.

Agora, eu sei que todos controles têm 2 propriedades chamadas Top e Left que são utilizadas para armazenar o posicionamento.

Quem sabe quando você clica no botão raiz ele define sempre o valor destas propriedades para os botões subsequentes? Só uma idéia, não tenho nenhum exemplo de código que faça isso.

Editado por João.Neto
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...