1. 自定义切换开关
自定义切换器的优点是尺寸可以调整,颜色也可以选择。这可以使用帧(Frame)和标签(Label)来完成。
首先在表单(UserForm)中添加一个新的帧(Frame),并为其设置深灰色背景颜色,然后删除标题(Caption),将此帧(Frame)命名为frSwitcher1,宽度设置为66,高度设置为33。
接下来,在帧(Frame)中放置一个标签(Label),并为该标签(Label)设置白色背景,确保标签的标题(Caption)不包含文本,将此标签(Label)命名为lblSwitcher1,“左”和“上”设置为4,并将宽度和高度设置为22。(如果需要,可以添加多个切换器,每次都必须增加控件名称的最后一个数字(frSwitcher2、lblSwitcher2等))。
2. 自定义切换开关界面
2-1. 用户表单
2-2. 帧
2-3. 标签
3. 代码
将下面代码添加到表单中。
Option Explicit
Private Sub UserForm_Initialize()
frSwitcher1.Tag = False
frSwitcher2.Tag = False
End Sub
Private Sub cmbClose_Click()
Unload FrmSwitcher
End Sub
Private Sub frSwitcher1_Click()
MoveSwitcher 1
End Sub
Private Sub lblSwitcher1_Click()
MoveSwitcher 1
End Sub
Private Sub frSwitcher2_Click()
MoveSwitcher 2
End Sub
Private Sub lblSwitcher2_Click()
MoveSwitcher 2
End Sub
Private Sub MoveSwitcher(iSeqNo As Integer)
Dim i As Integer, sngTimer As Single, iLeftStep As Integer, frSwitcher As MSForms.Frame, lblSwitcher As MSForms.Label
Set frSwitcher = Controls("frSwitcher" & iSeqNo)
Set lblSwitcher = Controls("lblSwitcher" & iSeqNo)
If frSwitcher.Tag = False Then
iLeftStep = 1
Else
iLeftStep = -1
End If
For i = 1 To 32
sngTimer = Timer
Do While Timer - sngTimer < 0.005
Loop
lblSwitcher.Left = lblSwitcher.Left + iLeftStep
Repaint
Next
With frSwitcher
.Tag = Not CBool(.Tag)
If .Tag = False Then
.BackColor = &HC0C0C0
Else
.BackColor = &HF0B000
End If
End With
End Sub