【问题标题】:Excel VBA Combobox search for worksheet and display data table in a listboxExcel VBA Combobox 搜索工作表并在列表框中显示数据表
【发布时间】:2015-07-17 19:33:05
【问题描述】:

我有一个 100 多个工作表,在用户窗体中,我有一个 combobox 搜索工作表和 5 个 textboxescombobox 将数据发送到任何选定的工作表。现在我想添加一个LISTBOX,当我在combobox 中选择工作表时,LISTBOX 将在每次单击@ 中的工作表名称时显示所选工作表的数据(多个columnRow) 987654329@。我有一个代码,但当我打开工作表选项卡时,listbox 中只显示active sheet

这是我的代码:

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

【问题讨论】:

  • 我的回答解决了你的问题吗?

标签: excel vba


【解决方案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 集合仅包含工作表。这使得调用效率稍高一些,但更重要的是保证从集合中返回工作表。

【讨论】:

  • 一两句话(甚至是一小段)作为解释将大大有助于使这个答案成为一个很好的答案。
  • 感谢您的反馈,丹尼斯。
  • ListBox1.RowSource 有必要吗?似乎它可能只是.RowSource,因为它在With ... End With statement内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多