将打开的工作簿列表添加到组合框,并将相关工作表添加到列表框(VBA Excel)

时间:2018-11-25 10:15:47

标签: excel vba excel-vba combobox

我正在处理一个用户窗体,其中的组合框为用户提供了当时已打开的每个excel工作簿的名称。

我想将在组合框中选择的工作簿中发生的所有工作表的名称放在列表框上,并且希望它是动态的-即,当用户选择另一个工作簿时从组合框中,列表框中显示的(工作表的)名称应自动更改。

但是,我无法弄清楚如何访问组合框的清单并进行所需的添加。任何帮助/评论表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下功能

这是供用户窗体使用的,它在初始化时将用所有打开的工作表填充组合框

Private Sub UserForm_Initialize()

    Dim i As Long

    For i = 1 To Workbooks.Count

        ComboBox1.AddItem (Workbooks(i).Name)
    Next

End Sub

这与Combobox本身有关,每当您从组合框中选择某个工作簿时,就会调用此函数,并且该工作簿的工作表会填充列表框。

Private Sub ComboBox1_Change()

    Dim selected_wb As Workbook

    Set selected_wb = Workbooks(ComboBox1.Text)

    ListBox1.Clear

    For Each ws In selected_wb.Worksheets

         ListBox1.AddItem ws.Name

    Next ws

End Sub

当您从列表框中单击工作表名称时,将调用此函数,它将选择工作表并关闭用户表单

Private Sub ListBox1_Click()

    Dim selected_wb As Workbook
    Dim selected_ws As Worksheet

    Set selected_wb = Workbooks(ComboBox1.Text)
    Set selected_ws = selected_wb.Sheets(ListBox1.Text)

    selected_ws.Activate
    UserForm1.Hide


End Sub