Ir ao conteúdo
  • Cadastre-se

Nome do botão clicado


Posts recomendados

Olá pessoal, aqui estou eu com mais uma dúvida para vocês.

 

Fiz uma busca rápida no fórum e não encontrei nada que solucionasse o meu problema.

 

Tenho um projeto em Excel que tem diversos botões com nomes diferentes, porém todos eles devem abrir um formulário de autenticação que eu criei para validar o acesso às informações da planilha.

 

Preciso de um macro que crie uma variável com o nome do botão que eu clicar, ou seja, apenas um macro para todos os botões, então ele ficaria mais ou menos assim:

Sub Botões_onClick ()NomeDoBotão = (Macro que capture o nome do botão que foi clicado para iniciar este macro.)Login.show'Este é o nome do meu formulário de autenticação.'NomeDoBotão.showEnd Sub

Vale ressaltar que sou iniciante em VBA, então pode haver algo que não faz sentido neste código, pois ele é apenas uma ideia e não um código aplicado.

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

Olá, Ricardo.

 

Veja se ajuda. Insira na planilha quantos botões quiser (Controle de Formulário) e vincule-os todos ao código abaixo. A caixa de mensagem irá exibir o nome e o rótulo do botão que for clicado.

Sub IdentificaBotão()  Dim NomeBotão As String, RótuloBotão As String  NomeBotão = (ActiveSheet.Buttons(Application.Caller).Name)  RótuloBotão = (ActiveSheet.Buttons(Application.Caller).Caption)  MsgBox "nome - " & NomeBotão & vbLf & "rótulo - " & RótuloBotãoEnd Sub
Link para o comentário
Compartilhar em outros sites

Osvaldo, sem comentários!

 

Era exatamente isso que eu precisava, mas ao testar, me deparei com um problema.

 

Esse é o meu código do botão "Entrar" da minha janela de Login:

Private Sub EntrarLogin_Click()        If User = "" Then    MsgBox "Digite o nome de usuário."    User.SetFocus    Exit Sub        Else    If Password = "" Then        MsgBox "Digite a sua senha."        Password.SetFocus        Exit Sub    End IfEnd If    ThisWorkbook.Worksheets("Usuários e Senhas").Visible = TrueThisWorkbook.Worksheets("Usuários e Senhas").ActivateRange("a1").SelectFor I = 2 To 10nome = Cells(I, 1).Valuesenha = CStr(Cells(I, 2).Value)If User = nome And Password = senha ThenThisWorkbook.Worksheets("Usuários e Senhas").Visible = FalseThisWorkbook.Worksheets("MENU").ActivateUnload Me    MsgBox "Seja bem vindo " & nomeNomeBotão.showExit SubEnd IfNextIf Not User = nome And Password = senha ThenThisWorkbook.Worksheets("MENU").ActivateThisWorkbook.Worksheets("Usuários e Senhas").Visible = FalseMsgBox "Usuário ou senha incorretos!"User.Value = EmptyPassword.Value = EmptyUser.SetFocusExit SubEnd IfEnd Sub

Tem como essa variável 'NomeBotão' ser importada do macro do botão?

Link para o comentário
Compartilhar em outros sites

Tem como essa variável 'NomeBotão' ser importada do macro do botão?

 

Declare a variável como pública.

A declaração deve estar no topo de qualquer módulo comum (não em módulo de planilha) e acima do nome do código, se houver algum naquele módulo.

 

Assim, se o código do post #3 estiver em um módulo comum, coloque:

Public NomeBotão As StringPrivate Sub EntrarLogin_Click().........

Dessa forma a variável estará disponível para uso em todos os códigos.

Link para o comentário
Compartilhar em outros sites

Declare a variável como pública.

A declaração deve estar no topo de qualquer módulo comum (não em módulo de planilha) e acima do nome do código, se houver algum naquele módulo.

 

Assim, se o código do post #3 estiver em um módulo comum, coloque:

Public NomeBotão As StringPrivate Sub EntrarLogin_Click().........

Dessa forma a variável estará disponível para uso em todos os códigos.

 

Osvaldo, dessa vez não resolveu.

 

Coloquei conforme você falou e deu erro de compilação como "Qualificador Inválido".

 

Os botões tem os nomes dos seus respectivos formulários, para prosseguir para o mesmo após a autenticação no form "Login".

 

O macrod o botão ficou assim:

  Public NomeDoBotão As StringSub IdentificaBotão()Dim NomeDoBotão As String   NomeDoBotão = (ActiveSheet.Buttons(Application.Caller).Name) NomeDoBotão.ShowEnd Sub

Já tentei todas as possibilidades utilizando a declaração que você passou.

 

Quando ele procede para o código do login, que eu coloquei como msgbox a string em questão, a caixa fica em branco.

Link para o comentário
Compartilhar em outros sites

Ricardo, exclua a linha abaixo pois a variável já está declarada na primeira linha do código.

Dim NomeDoBotão As String

 

Se não funcionar sugiro que você disponibilize uma amostra do seu arquivo com os códigos e os Forms instalados.

Link para o comentário
Compartilhar em outros sites

Ricardo, exclua a linha abaixo pois a variável já está declarada na primeira linha do código.

Dim NomeDoBotão As String

 

Se não funcionar sugiro que você disponibilize uma amostra do seu arquivo com os códigos e os Forms instalados.

 

Foi mal, eu coloquei com o "Dim" mas no código já está sem.

 

O que eu preciso é que após isto, ele abra o form relacionado aquele botão.

 

Segue o Link:

https://safe.faagle.com/file?file=amostra_20151117115647

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!