VBA ActiveX 标签透明度

问题描述 投票:0回答:1

我正在尝试在我的工作表上创建一个 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 事件。我知道我可以使用形状等实现相同的结果,但我正在尝试尽可能保留代码其他部分的功能,并且已经了解这些其他建议。

excel vba activex
1个回答
0
投票

为您的点击事件处理程序尝试以下代码...

Private Sub MouseOverBX_Click()
    Me.MouseOverBX.ShapeRange.Fill.Transparency = 1#
End Sub

顺便说一下,无需选择活动工作表。因此,您可以从 CreateButton() 中删除以下行...

ActiveSheet.Select
© www.soinside.com 2019 - 2024. All rights reserved.