我正在尝试在我的工作表上创建一个 ActiveX 标签,并且在某些时候让它是透明的。
这是我到目前为止的代码:
Sub CreateButton()
Dim menuxBx As MSForms.Label
ActiveSheet.Select
Set menuxBx = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", _
Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35).Object
With menuxBx
.BackStyle = 0
.Name = "MouseOverBX"
.Visible = True
.caption = "Test"
End With
End Sub
这很好地创建了标签,据我所知,可以操纵我想要放入“With”循环中的任何其他属性。但我无法让 .BackStyle 属性正常工作。如果我手动在工作表上创建标签,我可以从属性窗口设置 BackStyle 属性,标签会立即变得透明。但即使我从代码中取出该行并仅创建标签,如果我尝试更改属性窗口中的属性,它也会更改为透明,但标签仍然不透明。我的代码中的 .BackStyle 行会将属性设置为透明,但标签仍然不透明。我尝试添加它,以便它在运行时更改此属性:
Private Sub MouseOverBX_Click()
Me.MouseOverBX.BackStyle = 0
End Sub
(在工作表模块中)- 没有骰子。
我读过很多论坛,人们的反应是,“为什么不使用其他对象呢?”或“您真的需要使用 ActiveX 对象吗?”我并不是在寻找那种回应。我真的只是在寻找这种现象的解释。我使用 ActiveX 标签是因为我需要它支持 MouseOver 事件。我知道我可以使用形状等实现相同的结果,但我正在尝试尽可能保留代码其他部分的功能,并且已经了解这些其他建议。
为您的点击事件处理程序尝试以下代码...
Private Sub MouseOverBX_Click()
Me.MouseOverBX.ShapeRange.Fill.Transparency = 1#
End Sub
顺便说一下,无需选择活动工作表。因此,您可以从 CreateButton() 中删除以下行...
ActiveSheet.Select