Excel VBA Combobox在列表框中搜索工作表和显示数据表

时间:2015-07-17 19:33:05

标签: excel vba

我有100多个工作表,在用户表单中,我有combobox搜索工作表,5 textboxes将数据发送到combobox的任何选定工作表。现在我想添加LISTBOX,当我在combobox中选择工作表时,LISTBOX会显示所选的数据(多个columnRow)我每次单击combobox中的工作表名称时都会运行工作表。我有一个代码,但当我打开工作表标签时,active sheet中只显示listbox

这是我的代码:

Private Sub ComboBox1_Change()

 With Me.ListBox1
    .RowSource = ""
    .ColumnCount = 7
    .ColumnWidths = "80;180;80;80;1;20"
    ListBox1.RowSource = Sheets("910-001").Range("C7:I1000").Address
  End With

End Sub

1 个答案:

答案 0 :(得分:1)

Private Sub ComboBox1_Change()

    With Me.ListBox1
        .RowSource = ""
        .ColumnCount = 7
        .ColumnWidths = "80;180;80;80;1;20"
        .RowSource = Worksheets(ComboBox1.Value).Range("C7:I1000").Address
    End With

End Sub

看起来问题是您使用文字值作为Sheets集合的索引。这可以保证始终使用一张纸:" 910-001"。

我对这个答案的建议是你用对ComboBox1当前值的引用替换文字值。然后,用户选择的工作表数据将用作ListBox1中的列表。

另请注意,我选择使用Worksheets集合而不是Sheets集合。这是更具体的(这通常是一件好事),因为Sheets集合包括图表工作表,而Worksheets集合仅包含工作表。这使得调用稍微有效,但更重要的是保证从集合中返回工作表。