单击时标签更改颜色

时间:2018-09-19 15:20:19

标签: vba excel-vba

我有一个VBA / Excel,用户单击标签(Active X-文本标签)以执行某些操作。 label属性是BackStyle Transparent,但是当用户单击时,标签保持不透明,例如白色或设置了BackColor属性的任何其他颜色。

用户单击标签时如何保持透明?

One example of this label

2 个答案:

答案 0 :(得分:1)

请勿为此使用ActiveX控件。可以将任何Shape分配给宏,因此不必像这样对ActiveX标签使用Click事件处理程序:

Private Sub Label2_Click()
    'do stuff
End Sub

使处理程序公开,给他们一个有意义的名字:

Public Sub BuscaPorPalavraChave()
    'do stuff
End Sub

TextBox形状替换标签-使形状填充和边框透明,右键单击该形状,然后选择“分配宏”-然后选择BuscaPorPalavraChavre。完成!

textbox shape made to look just like a label

为每个标签

漂洗并重复。我知道,很痛苦-但值得!

该导航UI看起来非常不错,顺便说一句=)

答案 1 :(得分:0)

万一您遇到相关问题,例如在执行将鼠标悬停在透明标签上的宏时出现透明/不透明问题,但是在单击它时却变得不透明,我想出了另一种解决方案。

解决方法主要是在移入和移出时更改可见性状态。起初它可能违反直觉(因为您使消失的宏与执行宏所使用的标签相同),但它确实运行良好。假设我们有两个Active X标签重叠。 Label1是较大的标签,而label2是较小的标签,完全包含在Label1中。我使用的代码如下:

Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Application.ScreenUpdating = False 
Label2.Visible = False 
Label1.Visible = True
### Put your code in here
Application.ScreenUpdating = True

End Sub

然后,当您将标签2悬停时,假设标签正确重叠,您将鼠标悬停在标签1上,该标签现在可见,因为您已“激活它”,并执行了以下代码

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Application.ScreenUpdating = False 
Label2.Visible = True
Label1.Visible = False
### Put your code in here
Application.ScreenUpdating = True

End Sub

请记住,您需要在两个Active x标签之间添加一个图形或按钮,否则您将得到一个奇怪的结果,因为在将鼠标悬停在Label 2上的那一刻,它将消失,而将Label 1留在下方它也将在您移动时消失,makin Label 2再次出现,然后...您就明白了。这不会破坏excel文件,但会使文件变怪,例如闪烁或延迟鼠标移动。为了防止这样。我建议将该形状作为安全区域。

希望这会有所帮助。