excel - 搜索和过滤记录并显示在列表框中,使用form和VBA在excel中超过10列
问题描述
我不是程序员,也不是 Excel 普通用户。只是想使用用户表单在 excel 中使用一个条件搜索和显示记录。我的工作表有 17 列,我想在列表框中搜索和显示记录,其中包含选定的列。像 1 : 10 和 rest 11 : 17 在新的用户 form2 文本列中,当我双击列表框中的记录时将弹出。
我在网上找到了一些我现在正在使用的代码,但它只允许我使用 10 列,当我添加第 11 列时,它给了我一个代码错误ListBox2.List(liste, 10) = isim.Offset(0, 10)
我听说过数组,但我不确定如何在我的代码中使用它。
解决方案
请以这种方式修改代码:
为了使列表框仅显示 10 列,请使用以下改编代码:
Private Sub UserForm_Initialize()
Dim say As Long
Sheets("Data").Activate
say = WorksheetFunction.CountA(Worksheets("Data").Range("b:b"))
ListBox2.RowSource = "Data!b3:r" & say
ListBox2.ColumnCount = 17
ListBox2.ColumnWidths = "120;120;60;50;40;40;30;40;40;40;0;0;0;0;0;70;60"
End Sub
为了从第 11 列开始放置,请注意列表框索引从 0 开始。请使用以下代码:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Load UserForm2
With UserForm2
.TextBox1 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 10)
.TextBox2 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 11)
.TextBox3 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 12)
.TextBox4 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 13)
.TextBox5 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 14)
.TextBox10 = UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex, 15)
.Show
End With
End Sub