我有一个 100 多个工作表,在用户表单中,我有一个 combobox
搜索工作表和 5 textboxes
将数据从 combobox
发送到任何选定的工作表.现在我想添加一个 LISTBOX
当我在 combobox
中选择工作表时, LISTBOX
每次单击 column
中的工作表名称时,将显示所选工作表的数据(多个 Row
和 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
最佳答案
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 集合仅包含工作表。这使调用稍微更有效率,但更重要的是保证从集合中返回工作表。
关于Excel VBA Combobox 搜索工作表并在列表框中显示数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483396/