-1
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 データベースにある文字列を検索または推測して、リストボックスに出力し、選択、続行、編集できるようにしたいと思います。

これを行う方法については、上記が私にできる唯一のことです。

4

1 に答える 1

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
于 2013-09-04T16:22:38.023 に答える