ComboBox ricerca testo



  • ComboBox ricerca testo
    di Kaos (utente non iscritto) data: 01/11/2015 11:20:40

    Salve ho un problema con una combo box e la ricerca del testo, spiego il problema, se scrivo del testo da cercare nella combo box se il testo è scritto tale e quale a quello inserito nelle celle la combo box lo trova altrimenti no, esempio testo inserito in archivio: MGB Sevrice di Rossi Egideo e C.

    Se nella combo box inserisco MGB ser il testo viene trovato, se scrivo Service di Rossi non viene trovato nulla, esiste un metodo per far cercare alle combo box anche parte del testo?



  • di patel data: 01/11/2015 11:59:11

    allega un file di esempio con anche spiegazioni





  • di kaos (utente non iscritto) data: 01/11/2015 18:09:37

    Ciao patel come richiesto allego un file di esempio, se clik sul pulsante apri prova, nella combo Box compariranno dei nomi se proviamo a digitare M vediamo che l'intero testo viene trovato, mentre se digitiamo GB oppure Service il testo non viene trovato, quello che volevo fare e se c'è qualche comando nella combobox che riesce a trovare il testo digitato anche nel caso in cui non si inzia con la lettera giusta



  • di kaos (utente non iscritto) data: 02/11/2015 08:14:03

    Salve qualcuno sà se cè un soluzione al problema esposto?



  • di alfrimpa data: 02/11/2015 13:18:12

    Ciao Kaos

    Ti ho allegato un file (filtralistbox_kaos.xlsm) nel quale ho cercato di dare una risposta al tuo quesito.

    Premetto che il codice non è mio e non ricordo neanche da dove l'abbia preso quindi penso che non riuscirei a darti molte spiegazioni qualora me le chiedessi (comunque non si sa mai).

    La combobox seleziona la voce, come hai visto, sulla base del solo primo carattere.

    Per aggirare l'ostacolo ho creato una userform nella quale ho inserito una textbox ed una listbox per "simulare" una combobox.

    Il modello funziona così: all'apertura della maschera la listbox visualizza tutti i clienti; via via che inserisci caratteri nella textbox i dati verranno filtrati nella listbox e quando ne selezionerai con un clic il nome del cliente scelto verrà inserito in cella C1.

    Non ho inserito una macro per far partire la maschera ma credo che su questo tu non abbia problemi.

    Fammi sapere cosa ne pensi.

    Alfredo

    P.S. Ti ho copiato qui sotto il codice utilizzato.
     
    Option Explicit
    
    Private sh As Worksheet
    
    Private Sub ListBox1_Click()
    Range("C1").Value = UserForm1.ListBox1.Value
    End Sub
    
    Private Sub TextBox1_Change()
    Call mCaricaListBox("CommandButton")
    End Sub
    
    Private Sub UserForm_Initialize()
        Set sh = ThisWorkbook.Worksheets("Foglio1")
        Call mCaricaListBox("Initialize")
    End Sub
    
    
    Private Sub mCaricaListBox(ByVal s As String)
    
        Dim lRiga As Long
        Dim lng As Long
        
        With sh
            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        End With
        
        With Me.ListBox1
            If s = "Initialize" Then
                For lng = 1 To lRiga
                    .AddItem (sh.Range("A" & lng).Value)
                Next
            ElseIf s = "CommandButton" Then
                .Clear
                For lng = 1 To lRiga
                    If InStr(sh.Range("A" & lng).Value, Me.TextBox1.Text) Then
                        .AddItem sh.Range("A" & lng).Value
                    End If
                Next
            End If
        End With
        
    End Sub
    
    Private Sub UserForm_Terminate()
        Set sh = Nothing
    End Sub
    






  • di kaos (utente non iscritto) data: 02/11/2015 13:35:49

    cia alfrimpa ringrazio per l'aiuto, se ho ben capito la comboBox agisce sul primo carattere inserito? Comunque è ottima anche la soluzione che hai suggerito l'unica cosa sè possibile non fare distinzione su lettere maiusole e minuscole, come si fà?



  • di alfrimpa data: 02/11/2015 14:02:17

    Ciao Kaos

    Per evitare la distinzione tra maiuscole e minuscole basta inserire dopo Option Explicit l'istruzione

    Option Compare Text

    Alfredo

    P.S. Ho allegato un altro file (filtralistbox_kaos1) dove ho fatto una piccola modifica di carattere "estetico" ossia faccio apparire la listbox nel momento in cui si va ad inserire qualcosa nella testnox; dimmi se ti piace.





  • di patel data: 02/11/2015 17:48:06

    Cit. Premetto che il codice non è mio e non ricordo neanche da dove l'abbia preso

    dal nome della sub deduco che è di Mauro Gamberini





  • di alfrimpa data: 02/11/2015 18:39:04

    Si Patel è probabile.

    Mi è sembrato giusto ed onesto dichiararlo sin dall'inizio.

    Alfredo





  • di patel data: 02/11/2015 20:08:19

    d'altra parte la maggior parte delle macro che circolano sul forum difficilmente sono originali al 100%, mi viene spesso da sorridere quando trovo in giro le mie





  • di Kaos (utente non iscritto) data: 02/11/2015 20:16:10

    ciao alfredo, volevo chiedere è possibile insrire sulla userform un pulsante per cancellare il testo digitato nella textbox, in più quando si apre la userform form e possibile rendere attiva la textBox. grazie ancora



  • di Luna 95 (utente non iscritto) data: 02/11/2015 20:33:09

    Per quanto rigurda l'attivazione della TextBox ci sono riuscito, cercando su internet con TextBox1.SetFocus manca solo il pulsante.



  • di alfrimpa data: 02/11/2015 21:28:27

    Ciao kaos

    Basta aggiungere sulla form un pulsante ed associargli il codice che vedi sotto (non c'è bisogno di selezionarlo).

    Alfredo
     
    Sub CommandButton1_Click()
    Me.TextBox1.Value = ""
    End Sub






  • di kaos (utente non iscritto) data: 02/11/2015 23:14:22

    Grazie Alfredo per l'aiuto