Condividi:        

scrivere una parola in ComboBox e caricarla filtrando i dati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

scrivere una parola in ComboBox e caricarla filtrando i dati

Postdi ricky53 » 03/05/24 14:41

Ciao a tutti eccomi qui dopo diverso tempo a chiedere aiuto per una nuova mia necessità.
Prima di esporre il mio quesito un caro saluto a tutti i forumisti ed in particolare ad Anthony.

Specifico: il titolo ho cercato di scriverlo nel modo più chiaro possibile ma lo spazio non mi è bastato.

Ho una ComboBox che vorrei caricare prendendo i dati dalla colonna “A” a partire dalla riga “2” in giù
La condizione è questa:
Vorrei poter scrivere nella ComboBox e caricarla con le righe della colonna “A” che contengo la parola che ho appena scritto nella combobox.
In colonna “A” ho varie righe con tante parole scritte in ogni cella, meglio “in ogni cella c’è una frase”.

Attualmente utilizzo una cella di appoggio (“B1”) dove scrivo la parola e carico la combo selezionando con un ciclo dalle righe della colonna “A” solo quelle che contengono la parola che ho scritto nella B1
Il codice che utilizzo è il seguente:
Codice: Seleziona tutto
Sub Carica_Combo()
    Dim UR As Integer, I As Integer
    ActiveSheet.ComboBox1.Clear

    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:A" & UR).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

    For I = 2 To UR
        If UCase(Cells(I, "A")) Like "*" & UCase(Cells(1, "B")) & "*" Then
            ActiveSheet.ComboBox1.AddItem Cells(I, "A").Value
        End If
    Next I
End Sub

La “Carica_Combo” viene chiamata dalla “Worksheet_Change” del foglio di lavoro quando si digita qualcosa in “B1”

Grazie a chi mi troverà una soluzione
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia

Sponsor
 

Re: scrivere una parola in ComboBox e caricarla filtrando i

Postdi Anthony47 » 03/05/24 18:42

Ehilà, bentrovato...
La mia proposta:
-metti il combobox (activex) sul foglio; dovrebbe chiamarsi ComboBox1
-nel modulo vba di quel foglio di lavoro inserisci il suo codice di gestione:
Codice: Seleziona tutto
Dim isRunning As Boolean

Private Sub ComboBox1_Change()
If isRunning Then Exit Sub
Call LoadCB
End Sub


Sub LoadCB()
Dim LArr(), sRan As Range
Dim I As Long, LInd As Long
'
Set sRan = Range(Range("A1"), Range("A10000").End(xlUp))    '<<< L'area di origine dei dati
ReDim LArr(1 To 1, 1 To sRan.Rows.Count)
For I = 1 To sRan.Rows.Count                                'Filtra
    If InStr(1, sRan.Cells(I, 1).Value, Me.ComboBox1.Value, vbTextCompare) > 0 Then
        LInd = LInd + 1
        LArr(1, LInd) = sRan.Cells(I, 1)
    End If
Next I
If LInd = 0 Then LInd = 1
ReDim Preserve LArr(1 To 1, 1 To LInd)
LArr = Application.WorksheetFunction.Transpose(LArr)
'
'Fase di ordinamento in bbsort
Dim tmp(1 To 1)
For I = 1 To UBound(LArr) - 1
    For J = I + 1 To UBound(LArr)
        If LArr(J, 1) < LArr(I, 1) Then
            tmp(1) = LArr(I, 1)
            LArr(I, 1) = LArr(J, 1)
            LArr(J, 1) = tmp(1)
        End If
    Next J
Next I
'popola il combobox:
Me.ComboBox1.List = LArr
DoEvents
Me.ComboBox1.DropDown
isRunning = False
End Sub

Fai in modo che la Dim sia in testa al modulo, prima di Subs o Functions
L'ordinamento non lo faccio sul foglio ma nella macro.

Poi prova: scrivi nel combobox e incrocia le dita...
Avatar utente
Anthony47
Moderatore
 
Post: 19425
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: scrivere una parola in ComboBox e caricarla filtrando i

Postdi ricky53 » 03/05/24 19:56

Ciao,
grazie per la tempestiva risposta

anche io, in attesa, ho provato e provato varie soluzioni e tra questa c'era anche "ComboBox1_Change" però mi si attivava ad ogni tasto che digitavo sulla tastiera.....

Provo e ti faccio sapere.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia

Re: scrivere una parola in ComboBox e caricarla filtrando i

Postdi ricky53 » 04/05/24 00:45

WOW
E' PERFETTA !!!!!

Non avevo dubbi sulla tua soluzione.
Grazie infinite e alla prossima
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "scrivere una parola in ComboBox e caricarla filtrando i dati":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti