我正在处理一个用户窗体,其中的组合框为用户提供了当时已打开的每个excel工作簿的名称。
我想将在组合框中选择的工作簿中发生的所有工作表的名称放在列表框上,并且希望它是动态的-即,当用户选择另一个工作簿时从组合框中,列表框中显示的(工作表的)名称应自动更改。
但是,我无法弄清楚如何访问组合框的清单并进行所需的添加。任何帮助/评论表示赞赏。谢谢。
答案 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