首页 > 解决方案 > 搜索和过滤记录并显示在列表框中,使用form和VBA在excel中超过10列

问题描述

我不是程序员,也不是 Excel 普通用户。只是想使用用户表单在 excel 中使用一个条件搜索和显示记录。我的工作表有 17 列,我想在列表框中搜索和显示记录,其中包含选定的列。像 1 : 10 和 rest 11 : 17 在新的用户 form2 文本列中,当我双击列表框中的记录时将弹出。

我在网上找到了一些我现在正在使用的代码,但它只允许我使用 10 列,当我添加第 11 列时,它给了我一个代码错误ListBox2.List(liste, 10) = isim.Offset(0, 10)

我听说过数组,但我不确定如何在我的代码中使用它。

标签: excelvba

解决方案


请以这种方式修改代码:

为了使列表框仅显示 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

推荐阅读