Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Problema di prestazioni nell'elenco di ricerca a discesa dinamico in Excel

Non conosco le prestazioni, ma prova quanto segue. I tuoi dati dovrebbero essere nel foglio "db", dalla riga 2 in poi. Al posto di una casella combinata, inserisco una casella di testo (TextBox1 ) e un elenco (ListBox1 ) in un modulo utente.

Private Sub TextBox1_Change()
    Dim v As String
    Dim YourInput As String
    Dim iIdx As Long
    Dim CharNumber As Integer

    YourInput = TextBox1.Text

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False

    ListBox1.Clear

    lLastRow = Worksheets("db").Cells(3, 1).End(xlDown).Row
    CharNumber = Len(YourInput)

    For iIdx = 2 To lLastRow
        v = Worksheets("db").Cells(iIdx, 1).Text
        If LCase(Left(v, CharNumber)) = LCase(YourInput) Then
            ListBox1.AddItem v
        End If
    Next

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub

Private Sub ListBox1_Click()
    MsgBox ("Your selection: " & ListBox1.Text)
    'do your stuff
End Sub