Código para editar apenas os dados da linha do botão


#1

Me deparei com um grande problema, estou criando uma planilha onde devo colocar um botão em cada linha da planilha (dá umas 30 linha).Ao clicar no botão, ele zerar todos os dados da linha
Até então, eu tinha feito um código para cada botão, mas isso se tornou ineficiente. Minha dúvida é a seguinte, "é possível criar uma macro genérica que independente do botão, ela faça a ação apenas para linha do botão ?"Ela executaria o código para o botão conforme sua linha e independente do seu nome.


#2

Bom dia Julio…
Dá e não dá, pois de qualquer forma vc vai ter que chamar a rotina em cada um dos botões…
segue abaixo a resolução
abs

Sub Botão1_Clique()
Call IdentificaBotao
End Sub
Sub Botão2_Clique()
Call IdentificaBotao
End Sub
Sub Botão3_Clique()
Call IdentificaBotao
End Sub

Sub IdentificaBotao()

    Dim NomeBotao As String, RotuloBotao As String
    NomeBotao = (ActiveSheet.Buttons(Application.Caller).Name)    'nome do botão
    RotuloBotao = (ActiveSheet.Buttons(Application.Caller).Caption)   ' rotulo do botão
    MsgBox "nome - " & NomeBotao & vbLf & "Rotulo - " & RotuloBotao
    If RotuloBotao = "Botão 1" Then        'use o rotulo ou o nome do botão
        Rows(1).ClearContents
    ElseIf RotuloBotao = "Botão 2" Then
        Rows(2).ClearContents
    ElseIf RotuloBotao = "Botão 3" Then
        Rows(3).ClearContents
    ElseIf RotuloBotao = "Botão 4" Then  ' duplicar para todos os botões
        Rows(4).ClearContents                   ' cuidado com a linha a ser limpa, pois usei o mesmo numero do botão, mas mude de acordo com sua necessidade
    ElseIf RotuloBotao = "Botão 5" Then
        Rows(5).ClearContents
    End If

End Sub