VBA 切换开关控件

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

4. 运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值