窗体UserForm——选项按钮

时间:2022-07-22
本文章向大家介绍窗体UserForm——选项按钮,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

选项按钮被设置为一种可以被选中状态的按钮,而且有一个特性,在一个父对象下,只能有一个选项按钮被选中。

还是以前面激活工作表的功能为例:

在不知道有多少个工作表的时候,如何显示一个窗体界面,出现每一个工作表名称的选项,选中后按按钮激活工作表。

由于不确定工作表的数量,所以不能通过拖拽的方式添加指定数量的控件,这时候就需要用到UserForm的Initialize事件,在UserForm初始化的时候来添加控件,首先仍然拖拽一个命令按钮在窗体的最上面,修改Caption为激活,然后进入窗体代码编辑:

   Private Sub UserForm_Initialize()
    '定义MSForms.OptionButton变量
    Dim ob As MSForms.OptionButton
    Dim i As Long
    Dim itop As Integer
    
    '在按钮的位置下面开始添加选项按钮
    itop = CommandButton1.Top + CommandButton1.Height + 10
    
    For i = 1 To Worksheets.Count
        '添加选项按钮
        Set ob = Me.Controls.Add("Forms.OptionButton.1")
        '以工作表名称设置选项按钮内容
        ob.Caption = Worksheets(i).Name
        '设置选项按钮的位置
        ob.Left = 5
        ob.Top = itop
        '记录下一个选项按钮应该出现的位置
        itop = itop + ob.Height + 10
    Next
    
    '设置窗体的高度,防止工作表太多看不到
    Me.Height = itop + 20
End Sub

CommandButton1就是手动拖拽的命令按钮,在属性窗口里可以看到,它代表的是名称,相当于是一个变量名称,和Caption是不一样的,Caption只是显示的文本。

控件的Top 、Height、Left、Caption等属性,都可以通过窗体设计界面,先拖拽一个相应的控件,然后在属性窗口查看控件所具有的属性。

关键字Me,在这里就是指添加的窗体UserForm1,这个关键字还可以在类模块里使用,所代表的也就是那个类。

编辑按钮的激活工作表代码:

Private Sub CommandButton1_Click()
    Dim i As Long
    Dim t As Control
    
    '遍历窗体上的控件
    For i = 0 To Me.Controls.Count - 1
        '找到的是MSForms.OptionButton控件
        If VBA.TypeName(Me.Controls(i)) = "OptionButton" Then
            'MSForms.OptionButton控件选中状态Value属性为True
            If Me.Controls(i).Value Then
                '激活工作表
                Worksheets(i).Activate
                Exit Sub
            End If
        End If
    Next
End Sub

这样不论有多少个工作表(太多了也不行,窗体会太长超出显示器!),窗体界面显示的时候所有工作表都可以在上面选择了,然后点激活按钮就可以激活相应的工作表:

这样用代码的方式添加控件也让使用者更方便的控制控件的位置,修改起来也更灵活。