我有一个VBA / Excel,用户单击标签(Active X-文本标签)以执行某些操作。 label属性是BackStyle Transparent,但是当用户单击时,标签保持不透明,例如白色或设置了BackColor属性的任何其他颜色。
用户单击标签时如何保持透明?
答案 0 :(得分:1)
请勿为此使用ActiveX控件。可以将任何Shape
分配给宏,因此不必像这样对ActiveX标签使用Click
事件处理程序:
Private Sub Label2_Click()
'do stuff
End Sub
使处理程序公开,给他们一个有意义的名字:
Public Sub BuscaPorPalavraChave()
'do stuff
End Sub
用TextBox
形状替换标签-使形状填充和边框透明,右键单击该形状,然后选择“分配宏”-然后选择BuscaPorPalavraChavre
。完成!
为每个标签
漂洗并重复。我知道,很痛苦-但值得!
该导航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文件,但会使文件变怪,例如闪烁或延迟鼠标移动。为了防止这样。我建议将该形状作为安全区域。
希望这会有所帮助。