Excel用户输入,读取数据库,并将值放入列表框

时间:2013-09-04 08:06:58

标签: excel vba

Private Sub SearchGuess_Click()
    With ThisWorkbook.Worksheets("WP").Range("WP")
        Set Rng = .Find(What:=TextBox1.Value, _
                   LookIn:=xlValues, _
                   LookAt:=xlContains, _
                   SearchOrder:=xlByRows, _
                   SearchDirection:=xlPrevious)
        If Not Rng Is Nothing Then
            rowNumber = Rng.Row
        Else
            rowNumber = 0
        End If
    End With
    MsgBox ThisWorkbook.Worksheets("WP").Cells(rowNumber, 1).Value
End Sub

我希望用户搜索或猜测Excel数据库中的字符串, 每当他们键入包含数据库数据的字符串时, 然后它会打印到列表框上,然后他们就可以选择,继续和编辑。

任何想法如何做到这一点,上面是我唯一能做的事情。

1 个答案:

答案 0 :(得分:1)

使用range.find循环填充数组,然后将列表框的.List属性设置为您创建的数组:

Private Sub SearchGuess_Click()

    Dim rngFound As Range
    Dim arrList() As Variant
    Dim arrIndex As Long
    Dim strFirst As String

    Me.ListBox1.Clear
    With ThisWorkbook.Worksheets("WP").Range("WP")
        Set rngFound = .Find(Me.TextBox1.Text, .Cells(.Cells.Count), xlValues, xlPart)
        If Not rngFound Is Nothing Then
            ReDim arrList(1 To WorksheetFunction.CountIf(.Cells, "*" & Me.TextBox1.Text & "*"))
            strFirst = rngFound.Address
            Do
                arrIndex = arrIndex + 1
                arrList(arrIndex) = .Parent.Cells(rngFound.Row, "A").Text
                Set rngFound = .Find(Me.TextBox1.Text, rngFound, xlValues, xlPart)
            Loop While rngFound.Address <> strFirst
            Me.ListBox1.List = arrList
        Else
            MsgBox "No matches found for [" & Me.TextBox1.Text & "].", , "No Results"
        End If
    End With

End Sub