在Excel VBA上搜索多列

时间:2017-07-24 17:51:08

标签: excel vba excel-vba

我有两个问题。首先,在下面的代码中,我试图搜索单词以便更快地找到确切的对象,但每次,我启动程序它开始空白,直到我放置一个字符并擦除然后列表框中的所有内容出现。我认为带走Me.allitems.Clear会修复它,但当我尝试删除Me.allitems.Clear时,它不会影响它。

我的第二个问题是,由于我有两列,我需要在两列中搜索相应的单词。我试着复制底码

If Left(itemsheet.Cells(i, 1).Value, a) = Left(Me.searchbox.Text, a) Then
Me.allitems.AddItem itemsheet.Cells(i, 1).Value
Me.allitems.List(allitems.ListCount - 1, 1) = itemsheet.Cells(i, 2).Value
End If  

并为其添加2,但这不起作用。

整个代码:

Private Sub searchbox_Change()

Dim itemsheet As Worksheet
Set itemsheet = Application.ActiveWorkbook.Sheets(6)

Dim i As Long

Me.searchbox.Text = StrConv(Me.searchbox.Text, vbProperCase)
Me.allitems.Clear
For i = 2 To Application.WorksheetFunction.CountA(itemsheet.Range("A:B"))
    a = Len(Me.searchbox.Text)
    If Left(itemsheet.Cells(i, 1).Value, a) = Left(Me.searchbox.Text, a) Then
        Me.allitems.AddItem itemsheet.Cells(i, 1).Value
        Me.allitems.List(allitems.ListCount - 1, 1) = itemsheet.Cells(i, 2).Value
    End If
Next i

End Sub

有什么建议吗?

修改 我发现第一个问题实际上是在这一行中将项目添加到列表框中时:

.List(i, 0) = itemnum
.List(i, 1) = Description
i = i + 1

这是在列表框代码中添加信息:

For Each itemname In itemsheet.Range("A2:A3400")
    With Me.allitems
        .ColumnCount = 2
        .ColumnWidths = "60;60"
        .AddItem itemname.Value
        .List(i, 0) = itemnum
        .List(i, 1) = Description
        i = i + 1
    End With
Next itemname

具体而言,我是问题,但我需要它来添加列

这是我第一次打开它时的样子

enter image description here

当我放置一个字符然后擦除时会出现

enter image description here

这就是假设的样子,我应该能够添加它:

enter image description here

1 个答案:

答案 0 :(得分:-1)

对于那些想知道如何修复此类型的人来说,这非常简单,只需为这样的列添加Or:

If Left(itemsheet.Cells(i, 1).Value, a) = Left(Me.searchbox.Text, a) Or Left(itemsheet.Cells(i, 2).Value, a) = Left(Me.searchbox.Text, a) Then

至于我的第一个问题,还在寻找,但现在我做了Do Until loop ="" 这只是在一栏中显示所有这些

相关问题