VBA透明ActiveX对象在单击时变得不透明

时间:2018-10-16 16:29:18

标签: excel vba excel-vba activex

我当前正在尝试在Excel中创建鼠标“滚动”脚本,当用户将鼠标悬停在按钮上时,脚本将运行宏。

为此,我创建了1个Shape和2个ActiveX标签。它们的分层方式是:

  • 顶层:Label1(读取鼠标悬停以激活) 比可见按钮宽

  • 中间层:Shape1,这是感知按钮所在的位置

  • 底层:最大的Label2,并“清除”宏
    当用户移出标签1的点击框时。

如果我不使用透明度,则看起来像这样。

enter image description here

我遇到的问题是,一旦将两个标签设置为透明,如果用户碰巧在其点击框区域内单击,将导致该标签以所选的原始颜色显示并变得完全不透明。

我可以通过以下方式缓解这种情况:

Private Sub Label2_Click()
    Application.ScreenUpdating = False
    Label2.Visible = False
    Application.ScreenUpdating = True
End Sub

但是,这会使Label不透明地“闪烁”,然后迅速消失。我尝试将标签设置为在单击时变为透明,但不起作用。我似乎无法解决这个问题,这可能只是限制使用activeX。不幸的是,我需要activeX来使用mousemove事件。

希望有人在那里有一个聪明的解决方法或解决方案!预先感谢!

edit:如果不清楚,这是我要做的一个简单例子。当您将鼠标悬停在按钮上时,它会在某处显示一个值,当您不在命中框中时,它将清除该值。问题仅在于用户单击透明标签时,它会闪烁不透明。

Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    'Clear Value in Cell(1,1)
    ActiveSheet.Cells(1, 1).ClearContents
End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   'Display Value in Cell(1,1)
    ActiveSheet.Cells(1, 1).Value = "Hello World"
End Sub

0 个答案:

没有答案