学习Excel技术,关注微信公众号:
excelperfect
在设计用户窗体时,我们经常会用到按钮,以便用户单击执行相应的程序命令。其实,我们还可以使用标签来生动地模拟按钮效果,如下图1所示。
图1
你能看出这是标签还是按钮吗?
设计用户窗体
在VBE中,插入一个用户窗体,放置4个标签控件,修改标签的名称和文字,如下图2所示。
图2
在属性窗口,设置标签控件的格式,使其呈现按钮效果,并设置提示文字,如下图3所示,是标签lblFirst的属性设置,其它标签类似。
图3
编写代码
在用户窗体模块,输入下面的代码:
'单击
Private Sub lblFirst_Click()
MsgBox "至首条记录"
End Sub
'鼠标按下
Private Sub lblFirst_MouseDown(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblFirst.SpecialEffect =fmSpecialEffectSunken
End Sub
'鼠标经过
Private Sub lblFirst_MouseMove(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
RestoreBackColors
MouseMove "lblFirst"
End Sub
'鼠标移开
Private Sub lblFirst_MouseUp( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblFirst.SpecialEffect = fmSpecialEffectRaised
End Sub
Private Sub lblLast_Click()
MsgBox "至最后一条记录"
End Sub
Private Sub lblLast_MouseDown(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblLast.SpecialEffect =fmSpecialEffectSunken
End Sub
Private Sub lblLast_MouseMove(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
RestoreBackColors
MouseMove "lblLast"
End Sub
Private Sub lblLast_MouseUp( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblLast.SpecialEffect =fmSpecialEffectRaised
End Sub
Private Sub lblNext_Click()
MsgBox "至下一条记录"
End Sub
Private Sub lblNext_MouseDown(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblNext.SpecialEffect =fmSpecialEffectSunken
End Sub
Private Sub lblNext_MouseMove(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
RestoreBackColors
MouseMove "lblNext"
End Sub
Private Sub lblNext_MouseUp( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblNext.SpecialEffect =fmSpecialEffectRaised
End Sub
Private Sub lblPrev_Click()
MsgBox "至前一条记录"
End Sub
Private Sub lblPrev_MouseDown(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblPrev.SpecialEffect =fmSpecialEffectSunken
End Sub
Private Sub lblPrev_MouseMove(_
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
RestoreBackColors
MouseMove "lblPrev"
End Sub
Private Sub lblPrev_MouseUp( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Me.lblPrev.SpecialEffect =fmSpecialEffectRaised
End Sub
Sub MouseMove(strControl AsString)
'鼠标经过控件时高亮显示该控件
Select Case strControl
'标签名导航
Case "lblFirst"
Me.lblFirst.BackColor = vbYellow
Case "lblLast"
Me.lblLast.BackColor = vbYellow
Case "lblNext"
Me.lblNext.BackColor = vbYellow
Case "lblPrev"
Me.lblPrev.BackColor = vbYellow
End Select
End Sub
'恢复背景色
Private Sub RestoreBackColors()
Me.lblFirst.BackColor = vbWhite
Me.lblNext.BackColor = vbWhite
Me.lblPrev.BackColor = vbWhite
Me.lblLast.BackColor = vbWhite
End Sub
运行用户窗体,即可呈现上图1所示的效果。