Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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

 

Link para o comentário
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

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

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

×
×
  • Criar novo...