我有两个问题。首先,在下面的代码中,我试图搜索单词以便更快地找到确切的对象,但每次,我启动程序它开始空白,直到我放置一个字符并擦除然后列表框中的所有内容出现。我认为带走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
具体而言,我是问题,但我需要它来添加列
这是我第一次打开它时的样子
当我放置一个字符然后擦除时会出现
这就是假设的样子,我应该能够添加它:
答案 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 =""
这只是在一栏中显示所有这些