Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Ingo M P Américo

Macro para selecionar a célula onde está o botão

Recommended Posts

Olá pessoal!

 

Criei uma planilha onde cada linha possui um botão para excluí-la.

Acontece que não estou conseguindo selecionar a linha que deve ser excluída, pois não consigo selecionar especificamente a célula onde está o botão e, a partir daí, dar resize na seleção via VBA.

 

Alguém sabe como fazer isso?

 

Já tentei de várias formas, mas os resultados que obtive não são os que eu quero.

Abaixo, estão as duas formas que consegui fazer:

 

MÉTODO 1:

Sub apagarLinha()
'
' apagarLinha
'
'''Para funcionar, precisa selecionar manualmente a primeira célula da linha que será excluída.
ActiveCell.Offset(0, 1).Select
Selection.Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 7).Select
'Selection.Delete Shift:=xlUp
End Sub


MÉTODO 2:

 

Sub apagarLinha()
'
' apagarLinha
'
''' Para funcionar, precisa que o nome seja atribuído à primeira célula da linha que será excluída
Range("nomeDaCelula").Select
Selection.Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 8).Select
Selection.Delete Shift:=xlUp
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ingo,

 

A probabilidade de que alguém te ajude aumenta exponencialmente quando você disponibiliza uma cópia do seu arquivo para download. Ninguém quer perder tempo propondo uma solução que não seja exatamente o que você precisa.

 

Abraço

Editado por Wendell Menezes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @Ingo M P Américo,

 

Siga os passos abaixo:

 

1. Clique com o botão direito do mouse sobre o botão da planilha > Formatar Control... > Não mover ou dimensionar com as células.

 

Esse passo é necessário para que o botão não seja deletado junto com a linha.

 

2. Atribua o script abaixo ao botão:

Sub Delete_Row()
    Rows(ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row).Delete
End Sub

Note que se o botão ocupar o espaço de várias células a do canto superior esquerdo será levada em consideração.

 

Abraço

Editado por Wendell Menezes
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ingo M P Américo    6
  • Autor do tópico
  • @Wendell Menezes Funcionou perfeitamente com uma linha. Obrigado!

     

    Porém, tentei reproduzir a lógica em um range e não funcionou (vide imagem abaixo). Ao invés de deletar as linhas que são ocupadas pelo botão, apenas a primeira linha do range é apagada.

     

    image.thumb.png.3f8afff08c9437d76e7e3d0305066bd7.png

     

    Tentei fazer conforme abaixo, mas dá "erro em tempo de execução".

     

    Sub Delete_Row()
        Rows(ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row).Select
        Selection.Resize(Selection.Rows.Count + 2, _
        Selection.Columns.Count + 3).Select
        Selection.Delete
    End Sub

    Estou mandando o exemplo anexo.

     

    exemploApagarLinha.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Ingo M P Américo    6
  • Autor do tópico
  • @Wendell Menezes Funcionou!

    Apenas modifiquei para funcionar com formas, ao invés de botão. Ficou assim:

     

    Sub Delete_Row() Rows(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row).Resize(3).Delete End Sub

     

    Obrigado pela ajuda!

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×