Excel 2010 VBA 入门 132 利用复合框制作工作簿/表导航

目录

复合框(ComboBox)控件

利用复合框制作二级下拉列表


使用复合框制作一个工作表导航,以便实现工作簿及工作表的切换。

        创建一个窗体,使用两个复合框制作二级下拉列表,其中一个作为当前打开的所有工作簿的列表,另一个作为所选中的工作簿中所有工作表的列表。

步骤1  按组合键【Alt+F11】打开VBE。
步骤2  选择菜单“插入”→“用户窗体”,并在窗体中添加两个Label控件以及两个ComboBox控件,然后将Label控件的Caption属性分别设置为“工作簿”和“工作表”。

Excel 2010 VBA 入门 132 利用复合框制作工作簿/表导航_第1张图片

步骤3  在“工程资源管理器”中用鼠标右键单击之前插入的窗体,选择“查看代码”,并输入以下代码。 

Option Explicit

Private Sub ComboBox1_Change()
    Dim sht As Worksheet
    With Me.ComboBox2
        If Me.ComboBox1.Value <> "" Then
            .Clear
            For Each sht In Workbooks(Me.ComboBox1.Value).Worksheets
                .AddItem sht.Name
            Next sht
        End If
    End With
End Sub

Private Sub ComboBox1_Enter()
    Dim wbk As Workbook
    With Me.ComboBox1
        .Clear
        For Each wbk In Workbooks
            .AddItem wbk.Name
        Next wbk
    End With
End Sub

Private Sub ComboBox2_Change()
    Dim sWbk As String
    Dim sSht As String
    
    If Me.ComboBox2.Value <> "" Then
        sWbk = Me.ComboBox1.Value
        sSht = Me.ComboBox2.Value
        
        Workbooks(sWbk).Activate
        Workbooks(sWbk).Worksheets(sSht).Activate
    End If
    
End Sub


Private Sub UserForm_Deactivate()
    Me.ComboBox1.Style = fmStyleDropDownList
    Me.ComboBox2.Style = fmStyleDropDownList
End Sub

步骤4  返回工作表界面,添加一个ActiveX按钮控件“显示窗体”,并为其添加单击事件代码如下,完成后退出“设计模式”。

Option Explicit

Private Sub CommandButton1_Click()
    UserForm1.Show
End Sub

复合框(ComboBox)控件

        复合框(ComboBox)控件的使用方法与列表框(ListBox)控件的使用方法基本相同。事实上,ComboBox是TextBox和ListBox的组合,因而称为复合框。用户可以通过它输入项目或者从下拉的列表中选择项目。
      为了防止用户误输入而造成程序出错,一般可以将ComboBox控件设置为仅能从下拉列表中选择项目,此时需要将其Style属性设置为fmStyleDropDownList(默认值为fmStyleDropDownCombo),表示仅能从列表中选择项目而不能输入。

利用复合框制作二级下拉列表

        制作二级下拉列表需要实时改变第二级下拉列表的下拉选项。一般地,可以设置第一级下拉列表的Change事件,当第一级下拉列表的内容发生变化时,设置第二级下拉列表的下拉选项。或者可以设置第二级下拉列表的Enter事件,当选中/激活第二级下拉列表时,根据第一级下拉表的内容设置下拉选项。本例选用了后者的方案。
        由于打开的工作簿是动态变化的,为了使第一级的下拉列表动态变化,本例在第一级下拉列表中添加了Enter事件,以获取当前打开的所有工作簿。

你可能感兴趣的:(#,Excel,2010,VBA,入门,Excel,VBA)