我当前正在尝试在Excel中创建鼠标“滚动”脚本,当用户将鼠标悬停在按钮上时,脚本将运行宏。
为此,我创建了1个Shape和2个ActiveX标签。它们的分层方式是:
顶层:Label1(读取鼠标悬停以激活) 比可见按钮宽
中间层:Shape1,这是感知按钮所在的位置
底层:最大的Label2,并“清除”宏
当用户移出标签1的点击框时。
如果我不使用透明度,则看起来像这样。
我遇到的问题是,一旦将两个标签设置为透明,如果用户碰巧在其点击框区域内单击,将导致该标签以所选的原始颜色显示并变得完全不透明。>
我可以通过以下方式缓解这种情况:
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