Ir ao conteúdo

Como inserir "dica de controle" em botão do excel?


RodMen

Posts recomendados

Postado

Pessoal, é o seguinte:

Tô montanto uma planilha no excel e p/ melhorar o visual eu adicionei uns botões que baixei da net. Criei macros e atribui a cada botão conforme minha necessidade. Minha dúvida é:

- Tem como incluir "dica de controle" em botões no Excel 2007?

Tipo aquelas mensagens que aparecem indicando a função do botão quando paramos o mouse sobre ele.

Eu consigo fazer isso com botão que possui um hiperlink mas com macro eu não descobri ainda.

Desde já agradeço !

Postado

Pois é cara...já faz um tempo q tô tentando descobrir se existe esse recurso mas o melhor que consegui fazer até agora é semelhante ao que consta nessa planilha que tu me enviou.

Se por acaso servir de auxílio pra alguém, tô enviando em anexo uma imagem do que consegui fazer até agora.

attachment.php?attachmentid=64960&stc=1&d=1235674998

Mesmo assim, valeu pela força !

post-500433-13884950559979_thumb.jpg

Postado

Ficou bem legal o visual do seu sistema.

Bom, algumas outras opções:

(1)

Usar um componente (ocx) que tenha o recurso de tooltip. Acho que o difícil vai achar um que funcione no excel. Testei um que tenho para VB e ele não funcionou no excel. Mesmo que você encontre algum que funcione, essa não é uma boa maneira de fazer isso, visto que, caso você tenha que distribuir esta planilha para outros usuários, eles também necessitarão do componente que você usou. Então você terá que distribuir o componente junto, aí entra o problema de licença, registro de componente, etc.

(2)

Usar um UserForm, afinal quando o CommandButton está no UserForm aparece a opção ControlTipText, que serve justamente para isso. Desvantagens: Usando um UserForm talvez você (e todos nós) não consiga um visual tão atraente quando numa planilha, pois numa planilha existem muito mais recursos de "embelezamento" do que num UserForm.

(3)

Essa aqui eu apelei para o Google e acabei achando algo interessante. Usa a API do windows (user32).

Crie um módulo com o seguinte código:




Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long


Public Function CreateToolTipLabel(objHostOLE As Object, _
sTTLText As String) As Boolean
Dim objToolTipLbl As OLEObject
Dim objOLE As OLEObject


Const SM_CXSCREEN = 0
Const COLOR_INFOTEXT = 23
Const COLOR_INFOBK = 24
Const COLOR_WINDOWFRAME = 6


Application.ScreenUpdating = False 'just while label is created and formatted


For Each objOLE In ActiveSheet.OLEObjects
If objOLE.Name = "TTL" Then objOLE.Delete 'only one can exist at a Time
Next objOLE


'create a label control...
Set objToolTipLbl = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1")


'...and format it to look as a ToolTipWindow
With objToolTipLbl
.Top = objHostOLE.Top + objHostOLE.Height - 10
.Left = objHostOLE.Left + objHostOLE.Width - 10
.Object.Caption = sTTLText
.Object.Font.Size = 8
.Object.BackColor = GetSysColor(COLOR_INFOBK)
.Object.BackStyle = 1
.Object.BorderColor = GetSysColor(COLOR_WINDOWFRAME)
.Object.BorderStyle = 1
.Object.ForeColor = GetSysColor(COLOR_INFOTEXT)
.Object.TextAlign = 1
.Object.AutoSize = False
.Width = GetSystemMetrics(SM_CXSCREEN)
.Object.AutoSize = True
.Width = .Width + 2
.Height = .Height + 2
.Name = "TTL"
End With
DoEvents
Application.ScreenUpdating = True


'delete the tooltip window after 3 secs
Application.OnTime Now() + TimeValue("00:00:05"), "DeleteToolTipLabels"


End Function


Public Sub DeleteToolTipLabels()
Dim objToolTipLbl As OLEObject
For Each objToolTipLbl In ActiveSheet.OLEObjects
If objToolTipLbl.Name = "TTL" Then objToolTipLbl.Delete
Next objToolTipLbl
End Sub
Option Explicit

Agora dê dois cliques no seu botão e no evento MouseMove digite:


ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)

Dim objTTL As OLEObject
Dim fTTL As Boolean

For Each objTTL In ActiveSheet.OLEObjects
fTTL = objTTL.Name = "TTL"
Next objTTL


If Not fTTL Then
CreateToolTipLabel [COLOR="Red"]CommandButton1[/COLOR], [COLOR="Blue"]"Dica do Botão"[/COLOR]
End If

End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _

CommandButton1 deve ser substituído pelo nome do seu botão e "Dica do Botão" deve ser substituído pela dica desejada.

Eu testei aqui e funcionou muito bem.

Desvantagem: Dá um pouco de trabalho.

Vantagem: Alguns recursos são configuráveis.

Abraço.

Postado

Bahhh tchê...apanhei um pouco mas consegui!

Quando passa o mouse sobre os botões a dica do controle aparece. Como tu havia comentado, dá p/ configurar alguns recursos como o tempo que a dica fica na tela.

No entanto, achei estranho duas coisas que ocorreram:

1) Quando a dica de controle desaparece deixa um "fantasma", ou seja, uma parte da borda que contorna a mensagem da dica fica na tela até que se execute outra ação qualquer.

2) As dicas de controle só aparecem/desaparecem enquando não se executou as macros dos botões. Exemplo: Quando cliquei no botão "avançar" a macro rodou normalmente mas a dica de controle deste botão congelou na tela e a do botão "voltar" não mais apareceu. O restante continuou normal, com macros funcionando bem. Apenas ocorreu de congelar a dica na tela.

Mas é provável que eu tenha configurado alguma coisa errada...ainda conheço pouco sobre VB.

De qualquer forma, já tenho até + do que eu precisava...valeu pela força !

Abraço !

post-500433-13884950568647_thumb.jpg

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!